Объявляю особый Конкурс-Задание с призом в 2000 WoT голды.
Задание конкурса:
Необходимо разобраться в формате файлов .wotreplay так, чтобы можно было самостоятельно (не используя онлайн ресурсы) извлекать из него данные о: Игроках, Техники, Результаты боя, Карта и т.д.
Первому, кто сделает это - приз 2000 голды.
Сам я - являюсь не только организатором данного конкурса, но и участником. Так что - если я разберусь первей, то приз оставляю себе.
Информация для размышления:
Что можно сказать о файле - это либо архив, либо он защифрованный, ну или и то и то. Данный вывод можно сделать сжав архиватором файл реплея - размер файла ненамного уменьшится.
Нарыл немного информации о реплеях:
источник
event (1, 45, //хз, что это
[('xp', 220), //дали опыта (базового)
('credits', 18902), //дали денег
('freeXP', 6), //понятно
('xpFactor', 1), //множитель опыта
('repair', 7700), //наверное, ремонт
('health', 0), //остаток здоровья
('ammo', [000, 17, 000, 0, 000, 16, 2043, 0, 1275, 1, 251, 1]), //остаток аммо - ИД снаряда, кол-во (три раза), потом ИД расходника и остаток (тоже три раза)
('crewActivityFlags', [1, 1, 1, 1, 1]), //кто в танкетке жить остался
('vehicleID', 116161696), //унутренний ID танка, задается при входе в бой
('arenaUniqueID', 26426656365466639L6),
('isWinner', 1), //таки победили
('bonusType', 1), //хз, аналог xpFactor?
('killerID', 116116666), //эта тварь меня убила
('killed', []), //а я никого не убил
('killedTypeCompDescrs', []), //поэтому и описаний моих жертв нету
('damaged', [116161966, 116116667]), //этим я кровь попортил
('spotted', [118181808, 118181808]), //этих я обнаружил
('shots', 7), //пальнул
('hits', 5), //попал
('damageDealt', 673), //нанес урона (маловато!!!)
('potentialDamageDealt', 1600), //а мог бы просто разорвать!
('shotsReceived', 9), //в меня попали
('damageReceived', 333), //и начисто убили
('potentialDamageReceived', 2780), //а могли бы дважды убить, но рикошеты
('capturePoints', 0), //до базы не доехал
('droppedCapturePoints', 1), //зато свою защищал (пугал)
('lifeTime', 353), //прожил недолго, но ярко
('arenaTypeID', 15), //это был перевал
('arenaCreateTime', 1616160636), //мы в бой вошли по этой тайм-метке
('achieveIndices', [5, 1, 3]), //хз, еще нам предстоит это расшифровать, наверное, снайпер, воин и т.п.
('heroVehicleIDs', [11415555, 114555666, 114999000]), //три героя было в битве
('epicAchievements', []), //никаких эпиков за этот бой не полагалось
('honorTitles', [---, ---, ---, ---, ---, ---, ---, ---, ---]), //9 id каких-то титлов, проверю позже
('tkillRating', 0.0), //очевидно
('tkillLog', []), //кого затимкиллили
('xpPenalty', 0), //за это отобрали опыта
('creditsPenalty', 0), //денег
('creditsContributionIn', 0), //нас премировали?
('creditsContributionOut', 0)] //нас обобрали?
)
1195
прос
Информация в конце статьи - для "клиента", а не для реплея.
Реплеи щас кодируются каким-то ключем.
В блоге разработчиков поднималась тема о том чтоб сделать там блок xml, как раз с результатами боя. Или подождем или уже ключ найдем.
Ага, читал про открытый блок с xml данными. Но они боятся его делать, боятся различных фальсификаций.
Можно подождать след. патч (0.7.2 вроде) там обещали это сделать.
Вот тут свежая информация по сигнатурам различных форматов: http://www.garykessler.net/library/file_sigs.html
Сигнатуры ВоТовских реп я там не отыскал. Похоже что-то своё у них....
Еще информации можно подчерпнуть из файла temp.wotreplay. Он пишется во время боя и вся инфа в нем в открытом виде. После окончания боя он сижимается точно. Кодируется ли он хз.
Сжимается каким-нить доступным архиватором, только каким...