Решил я написать бот для игры Метро 2033 вконтакте. Опыт написания до этого уже был. Обычно срабатывала связка Charles + .Net. Смотришь, что флешка шлет на сервак через Charles , анализируешь и кодишь, чтобы программа то же слала. Но с Метро 2033 так не вышло. Смутило большое количество непонятно откуда берущихся параметров в Post запросах, которые она шлет на свой сервер (hash, auth, session и т.д.)

Скачал swf исходник игры как описано тут. Раньше никогда особо флешем не занимался... Опыт небольшой. Но если что и декомпилировал, то использовал Sothink SWF Decompiler (но до этого я максимум звуки вытаскивал, а на actionscript файлы внимания не обращал). По старой памяти решил им воспользоваться и в этот раз. Он вроде бы как все показал. Декомпилировал его в Fla (про Flex сказал, что не подходит исходная swf, поэтому только fla). Поставил Adobe Flash Pro CS5. Начал с ним разбираться. Для начала просто открыл файл fla и попробовал запустить отладку - посыпались ошибки в cs файлах. Тут закрались сомнения по поводу корректности восстановления исходников через Сотник. Попробовал в качестве альтернативы Flash Decompiler Trillix. В местах, где были ошибки в скриптах он показывал исходный код, который почему-то не видел Сотник. НО! Триликс в свою очередь сказал, что это не fla, а flex! И конвертировать проект целиком только в него мог. При чем никакого flex файла он не выдавал и Flash Builder-ом открыть не смог. Но при этом смог вытащить все файлы cs из исходника, которые все до единого весили (а значит и содержали исходного кода) больше, чем аналогичные файлы, полученные через Сотник. + зачем-то еще Триликс добавлял к имени каждого файла класса слово "class", а к пакетам packages соответственно. Да еще и для каждой папки пакета он создал соответствующий cs файл вида "package имя пакета.cs". Поскольку этих файлов больше полутысячи, пришлось накатать еще и прикладную программку, чтобы эти все лишние слова убрать. Убил еще пару часов своего времени, но в итоге почистил имена файлов и папок (слева "было", справа "стало").

Да! И еще все эти скрипты запихнул в папку ActionScript 3.0 и в папке верхнего уровня создал файл ActionScript 3.0.cs.
Тут первый вопрос: почему они разные файлы выдают по количеству и размеру? Почему Сотник теряет строки исходного кода и зачем Триликс имена изменяет файлов и добавляет новые cs файлы?
Далее я все файлы, которые мне сотник выдал заменил на эти. Ошибки в исходниках, которые были до этого, пропали. Тут Триликс просто восстановил грамотно исходники в отличие от Сотника. После этого снова попробовал запустить отладку в CS5. Посыпались ошибки вида ActionScript Error #1093: Syntax error. во всех 500+ файлах в первой и последней строке) Нашел решение тут. И правда сработало. Достаточно было удалить первую строку из каждого файла ИмяКласса.cs вида
Код
//class ИмяКласса
, сохранить файл, вставить строку обратно и снова сохранить))) Т.е. по сути ничего не поменялось, но Adobe Flash на эти файлы перестал ругаться. В итоге после 3 убийственного часов копипаста (файлов-то 500+) я избавился ото всех этих ошибок. Но теперь стали вылезать ошибки о некорректности добавления неймспейсов (сейчас, например, в файле Item.cs ошибка ActionScript Error #1004: Namespace was not found or is not a compile-time constant.). Даже если криво закомментарить использование этого неймспейса в этом конкретном файле, то сыпятся следующие из других файлов. Честно говоря не очень понимаю, как работают неймспейсы во Flash. Пакеты я так понял просто должны лежат в соответствующих папках и файлах с именами классов. А вот как организованы неймспейсы? Во всяком случае никаких похожих файлов/классов/имен я во всех этих исходниках не нашел.Вопрос второй: кто-нибудь с подобным сталкивался? Что за глюк такой с этой ошибкой 1093, когда ты по сути ничего не меняешь, удаляешь, восстанавливаешь строку и ошибка пропадает. Что делать с ошибками про неймспейсы? И самое главное, как в итоге сделать из этого компилируемый проект?(
P.S. Ссылка на архив архив с иходником SWF игры, а так же полученные мной после долгих мучений и всяких извращений распакованные файлы и папки с исправленными именами и ошибками 1093.