Game Development Community

Data Exchange Issue

by Robert Fritzen · in Technical Issues · 08/14/2011 (9:37 am) · 1 replies

Hello, I'm having a quite annoying problem with one of my functions for my little RPG project.

I'm encrypting values such as EXP, level, ect. using AES to transfer to my server for storage, but when I try to output the string to be sent, it is being corrupted somehow.

C++
ConsoleFunction(containerAccess, const char *, 4, 4, "[package/load] [#] [ect], access store cont.") {
   argc;

   .
   .
   .
  
   if(command.compare("package") == 0) {
      out = nsrpgcont->packageContainer(portion);
      Con::printf("TEST DEBUG: %i = %s", portion, out.c_str());
   }
   .
   .
   .
   return out.c_str();
}

and then the code that reads it in TS:
for(%i = 0; %i < 8; %i++) {
      %data[%i] = containerAccess("package", %i, "");
      echo("TS: "@%i@": "@%data[%i]@"");
   }
   
   %dispo = %dispo @ makeDisposition( %seperator, data0, %data[0]);
   %dispo = %dispo @ makeDisposition( %seperator, data1, %data[1]);
   %dispo = %dispo @ makeDisposition( %seperator, data2, %data[2]);
   %dispo = %dispo @ makeDisposition( %seperator, data3, %data[3]);
   %dispo = %dispo @ makeDisposition( %seperator, data4, %data[4]);
   %dispo = %dispo @ makeDisposition( %seperator, data5, %data[5]);
   %dispo = %dispo @ makeDisposition( %seperator, data6, %data[6]);
   %dispo = %dispo @ makeDisposition( %seperator, data7, %data[7], 1);

Output: (TEST DEBUG is C++, TS is TorqueScript)
TEST DEBUG: 0 = 56301ce7adc55f24b079eca80986d446b74f4ed06389a8567190d24c66d1212648793ec1c7f24b177dcfe04d37a4a623:cbd7ae8aba753f3f65f398e42d6df90b70590fbe19c4b22ae2249cb78cd821d23a3f94f147efb7bea0cf71112cafdf5e:5469ec5d3f4c667046ea7ddabdc260436d4719eca5949f8f2c3cecc316b99daf2c5cf4704b06cfd7e910c4a64f7504e7
TS: 0: &Atilde;€301ce7adc55f24b079eca80986d446b74f4ed06389a8567190d24c66d1212648793ec1c7f24b177dcfe04d37a4a623:cbd7ae8aba753f3f65f398e42d6df90b70590fbe19c4b22ae2249cb78cd821d23a3f94f147efb7bea0cf71112cafdf5e:5469ec5d3f4c667046ea7ddabdc260436d4719eca5949f8f2c3cecc316b99daf2c5cf4704b06cfd7e910c4a64f7504e7
TEST DEBUG: 1 = 3c435305cc91312d09218dde4817417575a5175c46328d83530986a924c78d8ed1ad9137e2ed168a747659389cb5ddc1:69e06f706de6d957c3ff103d2b812e8ed2bf81da5644930a59eefcd3b348dd730e31b62569e843088ef6f974ac9e837d:f49f696598b376baac3ff26edb090f879689cbed62c4335dbabe6b4e59c1143029436c2ff3925b2162aabff8cb4eccb9
TS: 1: &Atilde;&sect;435305cc91312d09218dde4817417575a5175c46328d83530986a924c78d8ed1ad9137e2ed168a747659389cb5ddc1:69e06f706de6d957c3ff103d2b812e8ed2bf81da5644930a59eefcd3b348dd730e31b62569e843088ef6f974ac9e837d:f49f696598b376baac3ff26edb090f879689cbed62c4335dbabe6b4e59c1143029436c2ff3925b2162aabff8cb4eccb9
TEST DEBUG: 2 = 09262b2551855ddb4c4bbf03c1b56cfbf56520b8ab58903a318f21ac8272bd79ea0f7182caa275e0c63912e8bd8fc4b9:85fdd2ee835460209e55b7826dcc547f036cd088af445ef0d49e1b4c9a671eb78db0b64e173a3cf9cb4df320e06f43b9:91393057cfa59e38899d638febf94ed63d48968530f594e772a5ff0b878814ea15d65d277d172d10c9c94b2058451a60
TS: 2: 262b2551855ddb4c4bbf03c1b56cfbf56520b8ab58903a318f21ac8272bd79ea0f7182caa275e0c63912e8bd8fc4b9:85fdd2ee835460209e55b7826dcc547f036cd088af445ef0d49e1b4c9a671eb78db0b64e173a3cf9cb4df320e06f43b9:91393057cfa59e38899d638febf94ed63d48968530f594e772a5ff0b878814ea15d65d277d172d10c9c94b2058451a60
TEST DEBUG: 3 = b324342f83daa81916ed2f9ecd0cad961154f3df88cd3320409aa9a7206f12ea278f629eb22e1cf97883efb42a2de8bc:338c78aaf8133ca02a7c7fd811985efa9476efec022780fe5e94df6410a7f0e9eeddb3a6cc671d7f37df87f897cc1fc6:22135246323729373b6856f1b4c6f96475df023c35ab5d68fa1ad164571b578b08f187da2afbb280595da6c90cff2d5d
TS: 3: 524342f83daa81916ed2f9ecd0cad961154f3df88cd3320409aa9a7206f12ea278f629eb22e1cf97883efb42a2de8bc:338c78aaf8133ca02a7c7fd811985efa9476efec022780fe5e94df6410a7f0e9eeddb3a6cc671d7f37df87f897cc1fc6:22135246323729373b6856f1b4c6f96475df023c35ab5d68fa1ad164571b578b08f187da2afbb280595da6c90cff2d5d
TEST DEBUG: 4 = f94092920a0bd218ba9567465d3fbdbbf10f50589e7c564b49e1371c4b07693500711dbca373703b2f6de98fefec1456:0e8428ba4e4e36df236ed142d6f537beb75170b80c9b0d09db14cfe1bbe6152c035765b74288fae56b1409f16913114b:c5ae2f615a4a2dd71d4d46f3ebe6cb9a66f25b23b71646c6b0f3975c136d99fae4da640529dbe36ff26e224eb3afb378
TS: 4: \4092920a0bd218ba9567465d3fbdbbf10f50589e7c564b49e1371c4b07693500711dbca373703b2f6de98fefec1456:0e8428ba4e4e36df236ed142d6f537beb75170b80c9b0d09db14cfe1bbe6152c035765b74288fae56b1409f16913114b:c5ae2f615a4a2dd71d4d46f3ebe6cb9a66f25b23b71646c6b0f3975c136d99fae4da640529dbe36ff26e224eb3afb378
TEST DEBUG: 5 = 64b4c91655830102f56a14d7a2ac17da7b6ad3f02774d896cfc08eba61042de524f0b16cd73eb21f0276d1de793d8eb4:a86040fd914af618db82f525f98db6a812f9a71fa4cc2644af444812702bbaae1be7436b9f0602417b554743b9fa9fb7:78c383591cf228ba5210490fb061041fe33e1d62b45277b2525e3400f5c149b6880de61a235dc10df3dcdcd8511c47bf
TS: 5: &AElig;’b4c91655830102f56a14d7a2ac17da7b6ad3f02774d896cfc08eba61042de524f0b16cd73eb21f0276d1de793d8eb4:a86040fd914af618db82f525f98db6a812f9a71fa4cc2644af444812702bbaae1be7436b9f0602417b554743b9fa9fb7:78c383591cf228ba5210490fb061041fe33e1d62b45277b2525e3400f5c149b6880de61a235dc10df3dcdcd8511c47bf
TEST DEBUG: 6 = 852b09c0d4860e0c2b86828b8565b71a994fa907389a7161384c27024594324f85eda7c970ffbb6f42c6a1bd754c1ee4:f5eb433bf447a5b318e7fa3a2717059418ea251e2269fe342d7b910b2222742e9d5782536ba2304346d10ff142c973e8:4be89c7babaef0f373f6dfd2b26b377361c4e9beee8e02967eb08a96823e7489ef37f4c80de1312078e96144472cc842
TS: 6: &Acirc;&ordf;2b09c0d4860e0c2b86828b8565b71a994fa907389a7161384c27024594324f85eda7c970ffbb6f42c6a1bd754c1ee4:f5eb433bf447a5b318e7fa3a2717059418ea251e2269fe342d7b910b2222742e9d5782536ba2304346d10ff142c973e8:4be89c7babaef0f373f6dfd2b26b377361c4e9beee8e02967eb08a96823e7489ef37f4c80de1312078e96144472cc842
TEST DEBUG: 7 = e339f6cb6b3fa733868cf76d5138ea86415cfd2c9c3be86a64f87c2272396541617b6315e369ccfbab9edc69de8d528d:0e9d2e8686321a7d15d56a33f7eaf5a409867d8601ae64d48839ee3efed418ea0855e66223015e209ed1a1405ca4fa07
TS: 7: &Atilde;
&Atilde;&reg;

As you can see here, the C++ stored string is indeed correct, but for some unknown reason it is being corrupted in the TS part. Any ideas?

#1
08/16/2011 (8:13 am)
I solved this by a wierd hacky bypass..

I just set some G.var equal to the final result and it worked.... Odd.