Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от dreamerag2
есть кто трудящиеся над парсером SWF sig или какими другими методами на функционале питона. готов присоединиться к разработке. напишите какой метод планируете осуществить. обращайтесь в [vk]39245930
Я сделал "расшифровку в лоб" - по совпадению с шестнадцатеричной "маской". По идее работает, но не уверен, что на 100% корректно. В целом смысл такой:
1. SWF приходит в "сжатом" виде, поэтому если первые три буквы CWS, то все, начиная с 8 байта декомпрессируем.
2. Потом иду по данным (с 1-байтным шагом), и ищу строчку "frame1". Это начала региона, где хранятся строковые константы (в частности названия внешних функций). Разбираю их в "список", чтобы потом найти нужную функцию по порядковому номеру.
3. Потом ищу начало кода. Код всегда начинается с "_loc2_:String = param1;", что соответствует шестнадцатеричной маске 0xD1, 0x85, 0xD6. Заканчивается блок кода шестнадцатеричной маской 0xD2, 0x48 (return _loc2_
В файле пять строк, их, опять же, распознаю по "шаблонам". Проблема с "нижним регистром" вмесо "большого регистра" - смотрю тип функции в массиве, созданном в шаге 2. В результате генерю питоновский файл с полным названием функции (salt_xxxxx.py), который потом использую из message_factory.
То есть все вроде логично, вроде на настоящий момент работает, но до состояния "альфа" (даже не "бета") явно далеко. Так как у меня "многопользовательская обстановка", то делаю названия файлов кода соли уникальными, а значит через некоторое время их скапливается несколько тысяч... Иногда не совсем корректно происходит "обновление кода соли", так что игра "циклится" с сообщением "неправильная подпись" и т.д... Править это все дело времени и сил нет, то есть до "публикации" я его вряд ли доведу. Поначалу было желание сделать полный "парсер" кода (как минимум для всех возможных новых функций), но опять же, до этого вряд ли руки дойдут.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от mike4kz
Проблема с "нижним регистром" вместо "большого регистра" - смотрю тип функции в массиве, созданном в шаге 2.
А если их там две?
Вообще, я это не делаю, потому что у меня до сих пор осталась проблема с преобразованием номера класса/функции в смещение внутри таблицы. Хотя оно и сделано в ffdec с открытыми исходниками на github, пока что найти, где именно это там, не смог Всего раза 2 пытался их читать. С этим всё делается просто, без этого ничо делать не стоит, имхо.
Цитата:
Сообщение от mike4kz
то делаю названия файлов кода соли уникальными
Так а файлы зачем? Не проще вернуть строку и скормить в eval, или, на худой конец, вернуть функцию?
Цитата:
Сообщение от mike4kz
Поначалу было желание сделать полный "парсер" кода
Не получается прочитать ответ ни одним из способов...
self._get_game_state().players
self._get_game_state().get_state().players
GameState instance has no attribute 'players'
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от NBKua
Не получается прочитать ответ
Вам надо словить ответ сервера. Это делается или как я писал тут, или дописыванием своего обработчика в game_engine.Game.handleEvent , там, где Вы видите кучу ifов Или любым другим доступным/понравившимся Вам способом.
Впрочем, тут у уважаемого vintets пример тоже годный - первый раз, если не находим playersInfo, отправляем запрос и больше не делаем ничего, а если пришли в perform_action уже второй раз и playersInfo есть, то используем его.
Последний раз редактировалось megabyte0; 25.08.2014 в 14:03.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от megabyte0
А если их там две?
Вообще, я это не делаю, потому что у меня до сих пор осталась проблема с преобразованием номера класса/функции в смещение внутри таблицы. Хотя оно и сделано в ffdec с открытыми исходниками на github, пока что найти, где именно это там, не смог Всего раза 2 пытался их читать. С этим всё делается просто, без этого ничо делать не стоит, имхо.
Во-о-от... Я тоже сравнивал несколько десятков "декомпилированных" файлов. Некоторые строковые константы в этом списке нужно считать не по одной с разделителем 0х0), а по несколько, тогда порядок совпадает. Однако, как я сказал, это достаточно тупой вариант, тут нужно разбираться со структурой SWF файла побайтно, потому что где-то это должно быть учтено в виде указателей.
Цитата:
Так а файлы зачем? Не проще вернуть строку и скормить в eval, или, на худой конец, вернуть функцию?
Как я сказал, у меня "многопользовательский случай" (крутится несколько моих аккаунтов). Поэтому для каждого случая соль должна быть разная. Плюс, нужно избегать случаев, когда один аккаунт пытается что-то записать в файл, который другой аккаунт в этот момент считает.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от megabyte0
Вам надо словить ответ сервера. Это делается или как я писал тут, или дописыванием своего обработчика в game_engine.Game.handleEvent , там, где Вы видите кучу ifов Или любым другим доступным/понравившимся Вам способом.
Впрочем, тут у уважаемого vintets пример тоже годный - первый раз, если не находим playersInfo, отправляем запрос и больше не делаем ничего, а если пришли в perform_action уже второй раз и playersInfo есть, то используем его.
Я так и не понял логики, как пользоваться handleEvent в самих модулях.
Последний раз редактировалось NBKua; 26.08.2014 в 02:01.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Сервер тебе шлет ответ. Который до определенного момента хранится в очереди событий. Ты можешь их полностью игнорировать, но тогда бот не будет получать "уведомлений" со статусом (например, что что-то посеяно, или что-то нашел).
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Привет всем. Давно не заходил в ЗФ недавно снова начал играть и встал вопрос, как дела с ботом? Посмотрел в друзьях, огромное количество забаненных, что бы это значило? За бота начали банить? ((
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от mike4kz
Сервер тебе шлет ответ. Который до определенного момента хранится в очереди событий. Ты можешь их полностью игнорировать, но тогда бот не будет получать "уведомлений" со статусом (например, что что-то посеяно, или что-то нашел).
Вот это то я как раз и не понимаю на стороне бота. Проще на примерах понимать, пытался на примере копателя разобраться так и не получилось.
Ладно позже разберусь.
Цитата:
Сообщение от apostos
Привет всем. Давно не заходил в ЗФ недавно снова начал играть и встал вопрос, как дела с ботом? Посмотрел в друзьях, огромное количество забаненных, что бы это значило? За бота начали банить? ((
Не столько за бота банят сколько за багерство, спокойных ботеров вроде не трогали.
Бота не сложно вычислить, если банили за бота, тут бы тема умерла. да и ЗФ у многих топов тоже бы умерла
Цитата:
Сообщение от segjoz
Вот, вроде все правильно сделал. запускаю, там написано выбрать пользователя. жму цифру 1. - В чем проблема?
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Как-то я совсем оторвался от жизни со своей разработкой: [Ссылки могут видеть только зарегистрированные пользователи. ] . Но как результат - почти все функции сделаны, управление пишется, логи растут. Если бот работает, то вы можете видеть управление и логи. Еще немного помучаю бота и могу создать аккаунты для желающих попользоваться.
Можете подсказать по дизайну? Сейчас он делается по принципу: лишь бы работало. Но в идеале, например, логи должны подгружаться на страничку сами, а сообщения раскрашиваться в цвета. Такая задачка на знание JavaScript и CSS. Можете подсказать решение? Замечу сразу, что не хочу тащить в проект что-то тяжелое. Сайт вообще писался с нуля и весит всего 68кб.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
vhyrix, respect! ты в ВЕБ-интерфейсе впереди планеты всей) сам думаю на python'e подобное замутить.
народ подскажите, в пещерах нет, видимо, allowCompositionIds, как определить в этом случае, что можно сажать?
и ещё вопрос, почему бот каждый запуск думает, что сессия устарела? Session old. Autentification...
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от dreamerag2
народ подскажите, в пещерах нет, видимо, allowCompositionIds, как определить в этом случае, что можно сажать?
Я у себя просто прямо в программе создал DICT со статической привязкой пещера:семена. Исключение составляет Мраморная пещера, но там я особо не извращался.
Цитата:
и ещё вопрос, почему бот каждый запуск думает, что сессия устарела? Session old. Autentification...
Вообще-то "сессия" определяется "кукисами". Если "социальная сеть" принимает кукисы от предыдущей сессии, то она генерит нормальные параметры для запуска игры.