Byte - ровно 8 bits и ничего лишнего (byte_od) wrote in world_of_tanks,
Byte - ровно 8 bits и ничего лишнего
byte_od
world_of_tanks

  • Mood:

Статистика из кеша WOT

Как-то озаботился я подробной статистикой по танчикам. Как раз вышло обновление 0.7.2 и необходимые данные стали видны в файле реплея в открытом виде. Решил я написать парсер на PHP для сбора статистики. Вот только такой подход, хоть и позволяет получить очень много циферок, но имеет два недостатка: файлы до версии 0.7.2 полностью "зашифрованы" и у меня нету всех реплеев.
Стал, значится, я "рыть" в Сети и поспрошать умных людей и, оказалось, что есть парсер для файлов реплея, игра написана на Python (скриптовая часть), а также есть умная программка для разбора файла кеша статистики WOT.
К тому времени я решил выучить C# для такой благородной цели, как написание полноценного парсера под Windows. Обратился, я, значит, к товарищу ctocopok с просьбой поделиться кодом чудесной программки, но в этом мне было отказано (справедливости ради сразу же замечу, что в помощи отказано не было, за что я, собственно, весьма признателен и публично говорю "Спасибо!"), и еще оказалось, что данные сохраняются с помощью метода сериализации самого Python'а, а аналогичной либы для С# не оказалось. Собственно, пришлось разбираться в Python'е. (Дабы не мучиться с раскладкой, буду я его далее именовать просто Питоном; надеюсь, те, кто привык называть его Пайтоном, не обидятся :) ). Сразу оговорюсь, я не профессиональный программист, поэтому программа (а она таки была написана) не претендует на полноту разбора файла кеша танчиков и удобство работы с ней, но, если кого-то заинтересует проект, думаю, вместе сможем довести до ума.
Итак, значится, что же есть на данный момент.
Это два файла кода на Питоне. Первый парсит подсунутый ему кеш или находит такой, последний по дате, самостоятельно на компьютере в папке %APPDATA%\wargaming.net\WorldOfTanks\dossier_cache\ и на выходе выдает два файла с результатами: один в виде TXT, второй в виде XML. Также можно вывести результаты на консоль по всем обработанным записям, либо по указанному при запуске одному танку. На данный момент обрабатывается более 30 параметров, как то: кол-во битв, попаданий, выстрелов и т.д., а также достижения вида "снайпер, стальная стена", серии типа "коса смерти" по каждому танку конкретно. На самом деле параметров там уж очень много, но это те, явные, которые можно легко отследить.
Второй файл предназначен для разбора XML-файла и создания удобоваримого HTML-файла с табличкой, наподобие такой, как мы видим в статистике по игроку по танкам, но с гораздо большим кол-вом информации.
На данный момент программа поддерживает более 60 наименований танков для разбора. Почему не все? Дело в том, что каждая запись о танке в файле кеша представлена в виде Питоновского словаря, где ключем является идентификатор танка, а данные записаны в виде строки-массива байтов. Да, у товарища ctocopok на сайте рассказывается, что такое идентификаторы танка и какова их природа, ...cut... UPDATE! но для более полного понимания сей природы смотрите камменты к данному топику.
После извлечения списка методами Питона ключ имеет вид кортежа (2, Х) где Х - десятичное число, которое может иметь от 1 до 5 знаков. Например, для Т-34 ключ будет (2, 1), а для МС-1 - (2, 3329), для Leichttraktor - (2, 3089). Где посмотреть все ключи я не нашел, (UPDATE! их можно глянуть в файликах list.xml в клиенте, вернее, получить каким-то образом распакованную версию этого файла, а потом с помощью примерно такого кода

USSR = '00000001'
decCode = bin(int(inputCode))
print int(decCode + USSR, 2)


получить требуемые значения) поэтому пришлось находить чисто экспериментальным путем. Буду признателелен, если кто-то натолкнет на мысль или укажет на статью, где это описано.
Вот. собственно, и все.
Если есть желающие "поиграться" с вышеуказанными программами, могу выслать на мыло. Пишите на byte собачка vsesovety.info. Но предупреждаю сразу, что файлы представляют собой исходный код на Питоне, поэтому для их запуска необходимо иметь (или установить, благо, там ничего сложного, инсталляционный файл находится на оффсайте Питона) установленный Питон версии 2.7.

Комментарии приветствуются :)

UPDATE! 30.07.2012
По просьбам и при поддержке трудящихся код теперь тут:
http://code.google.com/p/parse-wot-cache/
Subscribe
  • Post a new comment

    Error

    Comments allowed for members only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 20 comments