jmr 0 Posted March 29, 2015 Доброго времени суток, уважаемые форумчане. Возможно, вопрос не по адресу, но кое-кто знакомый сказал, что шанс получить ответ тут, в принципе, есть. Так что... Собственно, вопрос вот в чем. Ковыряюсь в содержимом реплея, и добрался до необходимости узнать, в каком направлении сделан результативный выстрел. Те, кто работают с данными, которые "видят" от клиента моды, вполне могут узнать "свои" цифры. Вот что я наковырял. Преамбула. Автор реплея (tankid 216,185,225,1) делает несколько выстрелов в противника (tankid 217,185,225,1).138,18,226,1 - кажется, тоже id автора реплея, только из другого описания. Привожу время пакета, его тип, и значимое содержимое. выстрел1:40,2. Type: 0x8, ptype: 0x13. val: {138,18,226,1, 216,185,225,1,161,105,198,14,0,6,19,53,231,193,54,118,58,65,39,127,82,195,97,53,234,195,84,234,133,64,143,88,20,68,168,232,200,64,0,0,52,68,0,}1:40,2. Type: 0x8, ptype: 0x9. val: {138,18,226,1, 26,24,0,0,26,0,0,0,0,0,} - боекомплект1:40,2. Type: 0x8, ptype: 0xb. val: {138,18,226,1, 216,185,225,1,37,115,104,64,37,115,104,64,0,}1:40,2. Type: 0x8, ptype: 0x0. val: {216,185,225,1, 0,} - ? выстрелпопадание на 128 урона1:40,6. Type: 0x8, ptype: 0xd. val: {138,18,226,1, 161,105,198,14,62,254,131,195,174,108,79,65,172,156,174,66,0,}1:40,6. Type: 0x8, ptype: 0x1e. val: {138,18,226,1, 1,0,0,0, 217,185,225,1, 80,0,8,0,0,} - в кого попали, урон1:40,6. Type: 0x8, ptype: 0x22. val: {138,18,226,1, 0,0,0,0,0,0,0,0,0,}1:40,6. Type: 0x8, ptype: 0x7. val: {217,185,225,1, 216,185,225,1,1,0,0,0,4,1,255,165,112,212,158,110,6,0,}1:40,6. Type: 0x8, ptype: 0x1. val: {217,185,225,1, 60,2, 216,185,225,1, 0,0,} !!!! В кого попали, ?какая-то херь?, кто стрелял повернул корпус, орудие смотрит примерно туда же, выстрел1:50,3. Type: 0x8, ptype: 0x13. val: {138,18,226,1, 216,185,225,1,161,145,198,14,0,6,83,31,231,193,92,123,58,65,23,253,81,195,60,221,233,195,10,238,124,64,102,123,20,68,168,232,200,64,0,0,52,68,0,}1:50,3. Type: 0x8, ptype: 0x9. val: {138,18,226,1, 26,24,0,0,25,0,0,0,0,0,} - боекомплект1:50,3. Type: 0x8, ptype: 0xb. val: {138,18,226,1, 216,185,225,1,37,115,104,64,37,115,104,64,0,}1:50,3. Type: 0x8, ptype: 0x0. val: {216,185,225,1, 0,} - ? выстрелпопадание на 129 урона1:50,7. Type: 0x8, ptype: 0xd. val: {138,18,226,1, 161,145,198,14,31,186,131,195,122,145,77,65,62,186,175,66,0,}1:50,7. Type: 0x8, ptype: 0x1e. val: {138,18,226,1, 1,0,0,0, 217,185,225,1, 16,0,8,0,0,} - в кого попали, урон1:50,7. Type: 0x8, ptype: 0x7. val: {217,185,225,1, 216,185,225,1,1,0,0,0,4,1,255,135,142,198,125,140,6,0,}1:50,7. Type: 0x8, ptype: 0x1. val: {217,185,225,1, 187,1, 216,185,225,1, 0,0,} !!!! проехал сколько-то метров, выстрел2:4,3. Type: 0x8, ptype: 0x13. val: {138,18,226,1, 216,185,225,1,161,201,198,14,0,6,24,130,151,194,18,9,66,65,146,65,117,195,99,220,185,195,28,191,81,64,165,146,36,68,168,232,200,64,0,0,52,68,0,}2:4,3. Type: 0x8, ptype: 0x9. val: {38,18,226,1, 26,24,0,0,24,0,0,0,0,0,} - боекомплект2:4,3. Type: 0x8, ptype: 0xb. val: {138,18,226,1, 216,185,225,1,37,115,104,64,37,115,104,64,0,}2:4,3. Type: 0x8, ptype: 0x0. val: {216,185,225,1, 0,} - ? выстрелпопадание на 130 урона2:4,7. Type: 0x8, ptype: 0xd. val: {138,18,226,1, 161,201,198,14,112,223,131,195,9,189,79,65,86,83,175,66,0,}2:4,7. Type: 0x8, ptype: 0x1e. val: {138,18,226,1, 1,0,0,0, 217,185,225,1, 16,1,8,0,0,} - в кого попали, урон2:4,7. Type: 0x8, ptype: 0x7. val: {217,185,225,1, 216,185,225,1,1,0,0,0,4,1,255,168,127,198,157,129,6,0,}2:4,7. Type: 0x8, ptype: 0x1. val: {217,185,225,1, 57,1, 216,185,225,1, 0,0,} !!!! Это, понятно, не все данные, а только ближайшие пакеты к моментам выстрелов и попаданий, которые с большой вероятностью могут содержать полезную мне информацию. Буду благодарен, если сможете сказать, где тут что еще узнаваемое. И, чтобы два раза не вставать: как (по всей вероятности 3-мя четырехбайтовыми float-ами) в wot передаётся направление? Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #260601 Posted March 29, 2015 (edited) Тебе на таком низком уровне сложно будет разобраться. Надо подниматься на уровень питона после de-pickle, там ты сможешь работать уже со строгими структурами данных, и по исходникам понять их значение. Поиск по словам BattleReplay и g_replayCtrl в исходниках питона. И, чтобы два раза не вставать: как (по всей вероятности 3-мя четырехбайтовыми float-ами) в wot передаётся направление? Math.Vector3 Edited March 29, 2015 by sirmax Quote Share this post Link to post Short link Share on other sites
jmr 0 #260604 Posted March 29, 2015 Тебе на таком низком уровне сложно будет разобраться. Надо подниматься на уровень питона после de-pickle, там ты сможешь работать уже со строгими структурами данных, и по исходникам понять их значение. Поиск по словам BattleReplay и g_replayCtrl в исходниках питона. Если я правильно понял, pickle обособляется 0x80 и ".". В этих пакетах такого обособления нет, поэтому так и смотрю на них. Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #260608 Posted March 29, 2015 да, там действительно это не в питоне, а в WoT.exe: if self.__replayCtrl.startPlayback(fileName): Тут я не помогу, я так глубоко не копал, да и нет желания туда лезть. Может кто-то еще поможет. Quote Share this post Link to post Short link Share on other sites
jmr 0 #260611 Posted March 29, 2015 Часть пакетов там действительно упакована в pickle. Но интересующие меня в данном случае, очевидно, нет. Собственно, корень волнения вот в этих циферках: 1:40,6. Type: 0x8, ptype: 0x1. val: {217,185,225,1, 60,2, 216,185,225,1, 0,0,} !!!! В кого попали, ?какая-то херь?, кто стрелял1:50,7. Type: 0x8, ptype: 0x1. val: {217,185,225,1, 187,1, 216,185,225,1, 0,0,} !!!!2:04,7. Type: 0x8, ptype: 0x1. val: {217,185,225,1, 57,1, 216,185,225,1, 0,0,} !!!! Quote Share this post Link to post Short link Share on other sites