Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Всем здравствуйте!
Всю ночь читала эту темку и так и не нашла то что мне нужно Неужели ни у кого нет кода на вскрытие ценностей в "жемчужине востока"?
Браузер виснет и слетает плагин, когда ввожу большое число, а после плаваний на пиратские скапливается большое количество свитков и прочего, по 10 открывать муторно((
Может кто-нибудь поделится кодом на такую функцию в бот? Буду очень признательна!
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от Stasya1991
Всем здравствуйте!
Всю ночь читала эту темку и так и не нашла то что мне нужно Неужели ни у кого нет кода на вскрытие ценностей в "жемчужине востока"?
Браузер виснет и слетает плагин, когда ввожу большое число, а после плаваний на пиратские скапливается большое количество свитков и прочего, по 10 открывать муторно((
Может кто-нибудь поделится кодом на такую функцию в бот? Буду очень признательна!
Так сделал в первую очередь. Не катит, первый аргумент "compress" лишний и не принимает. Понятно что в getChangedDocument можно дописать его приём. Но я не знаю как его дальше слать в самом запросе. Или его добавить в headers как и last_client_time? В общем я нахимичил.
Добавлено через 2 минуты
Цитата:
Сообщение от Miha88
Всем привет! А дарение по БП вконтакте из этого поста zhyk.ru/forum/showpost.php?p=5392029&postcount=2305 еще актуально ? а то ни как не получается настроить бот вылетает с ошибкой.
Актуально. Как тогда сделал, так до сих пор работает. Ты бы хоть ошибку указал.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось vintets; 15.01.2015 в 10:28.
Причина: Добавлено сообщение
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от Stasya1991
Браузер виснет и слетает плагин, когда ввожу большое число
Не вижу большой проблемы в этом. Вводите большое число, жмите "открыть" и когда браузер повис и плагин слетел, они уже открыты. Убиваете браузер, запускаете снова -- всё ок. И так 10-12 раз не думаю что сильно напряжно. Гораздо дольше ждать пока модуль выше откроет их по одной:
Ну, это как возможное решение. Есть ещё пара решений (сгруппировать в модуле по 9 либо отдавать id жемчужины востока при вскрытии по больше, чем 9), надеюсь отпишу позже.
Последний раз редактировалось megabyte0; 15.01.2015 в 10:30.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от vintets
Так сделал в первую очередь. Не катит, первый аргумент "compress" лишний и не принимает. Понятно что в getChangedDocument можно дописать его приём. Но я не знаю как его дальше слать в самом запросе. Или его добавить в headers как и last_client_time?
Добавлено через 2 минуты
Актуально. Как тогда сделал, так до сих пор работает. Ты бы хоть ошибку указал.
Здравствуй Vint) по поводу ошибки, скорее всего у него нет загрузки друзей.....надо править game_engine, и модуль для подключения к сайту, vkutils, mrutils или же okutils.. для фэйса Greyzza уже писал как получать данные о друзьях.
Добавлено через 14 минут
Цитата:
Сообщение от megabyte0
Не вижу большой проблемы в этом. Вводите большое число, жмите "открыть" и когда браузер повис и плагин слетел, они уже открыты. Убиваете браузер, запускаете снова -- всё ок. И так 10-12 раз не думаю что сильно напряжно. Гораздо дольше ждать пока модуль выше откроет их по одной:
Ну, это как возможное решение. Есть ещё пара решений (сгруппировать в модуле по 9 либо отдавать id жемчужины востока при вскрытии по больше, чем 9), надеюсь отпишу позже.
Здравствуй megabyte0, а разве бот не по 10 бьет?
Код:
for use_item in use_items:
got_items=self._get_game_state().count_in_storage('@'+use_item)
if got_items>0:
logger.info(u'Бьем "%s" в количестве = %d' % (self._get_item_reader().get(use_item).name, got_items))
col=got_items/10
for i in range(col):
for j in range(10):
#sell_event = {"x":10,"action":"useStorageItem","y":10,"itemId":use_item,"type":"item"}
sell_event = GameUseStorageItem(itemId=unicode(use_item), y=long(10), x=long(10))
self._get_events_sender().send_game_events([sell_event])
self._get_game_state().remove_from_storage('@'+use_item,1)
if (got_items-(col*10))>0:
events=[]
for j in range(got_items-(col*10)):
sell_event = GameUseStorageItem(itemId=unicode(use_item), y=long(10), x=long(10))
self._get_events_sender().send_game_events([sell_event])
self._get_game_state().remove_from_storage('@'+use_item,1)
logger.info(u'Разбито %d "%s"' % (got_items, self._get_item_reader().get(use_item).name))
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
По поводу компресса... поковырял дальше, то он сыпался на decode(encoding)? ну и правильно, что там было декодировать UTF-8 если мы ещё не распаковали...
Зато увидел что там уже приходит gzip вот 'Content-Encoding'= 'gzip'
и контент распаковывается
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Значит я зря мучался и так сжатое?
С кодировками там правдна гемор.
А без параметра compress=true, items.txt берется не пожатый:
[Ссылки могут видеть только зарегистрированные пользователи. ]
content-type: application/json; charset=UTF-8
C параметром - пожатый:
[Ссылки могут видеть только зарегистрированные пользователи. ]
content-type: application/zip
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от ruslanische
С кодировками там правдна гемор.
А без параметра compress=true, items.txt берется не пожатый:
[Ссылки могут видеть только зарегистрированные пользователи. ]
content-type: application/json; charset=UTF-8
C параметром - пожатый:
[Ссылки могут видеть только зарегистрированные пользователи. ]
content-type: application/zip
как быть с этой загрузкой итемсов, я что-то недопонимаю...(((
Код:
def start(self):
while(self.running()):
try:
# load items dictionary
if self.__itemReader is None:
logger.info('Загружаем словарь объектов...')
item_reader = GameItemReader()
item_reader.download('items.txt')
item_reader.read('items.txt')
self.__itemReader = item_reader
logger.info('Словарь объектов загружен')
compositions = GameItemReader()
print u' Загружаю размеры обьектов'
compositions.loadComposit('compositions')
start_response,self.__friendsid,self.__uid,self.__server_time = self.__game_initializer.start()
# Save Game_state
open("game_state.txt","w").write(str(obj2dict(start_response)))
self.__game_events_sender = self.__game_initializer.create_events_sender()
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от ruslanische
С кодировками там правдна гемор.
А без параметра compress=true, items.txt берется не пожатый:
[Ссылки могут видеть только зарегистрированные пользователи. ]
content-type: application/json; charset=UTF-8
C параметром - пожатый:
[Ссылки могут видеть только зарегистрированные пользователи. ]
content-type: application/zip
А gzip разве не сжатие?
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Expires: Sat, 6 May 1995 12:00:00 GMT
Content-Encoding: gzip
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
А gzip разве не сжатие?
Сжатие,.
Видимо я подзабыл, что в вашем connection.py ответы ручками обрабатываются, соответственно, и распаковывает тоже. У вас тогда должно с параметром compress=true работать из коробки.
Последний раз редактировалось ruslanische; 15.01.2015 в 13:49.
for use_item in use_items.keys(): got_items = self._get_game_state().count_in_storage('@'+use_item) if got_items == 0 or (got_items <= use_items[use_item]): continue if got_items > use_items[use_item]: got_items = got_items-use_items[use_item] # учитываем ограничение if got_items > 100: got_items = 100 # ограничиваем по 100 за переход logger.info(u'Бьем "%s" в количестве = %d' % (self._get_item_reader().get(use_item).name, got_items)) sell_event = GameUseStorageItem(itemId=unicode(use_item), y=long(32), x=long(30)) sell_event9 = [] for n in range(9): sell_event9.append(sell_event) for ev in range(got_items/10): self._get_events_sender().send_game_events([sell_event]) self._get_events_sender().send_game_events(sell_event9) self._get_game_state().remove_from_storage('@'+use_item,10) col=got_items/10 got_items -= 10 if got_items > 0: self._get_events_sender().send_game_events([sell_event]) self._get_game_state().remove_from_storage('@'+use_item,1) if (got_items-1) > 0: event = [] for n in range(got_items-1): event.append(sell_event) self._get_events_sender().send_game_events(event) self._get_game_state().remove_from_storage('@'+use_item,got_items-1)
Можно и сразу попытаться тогда боюсь падать будет из-за переполнения дропа. Может и нет. В крайнем случае так без палева (почти). Отсылает ровно так, как флеш.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от vintets
Но что мешает отправлять в одном запросе до 2000 команд.
Яцукевич по радио говорил, что на сервере game_stateы слетают, по этому поводу. Откуда ограничение в 2000? Мне интересно. Я по 500 выставил, на крафте, впрочем оно 4м параметром в крафт идёт.
Дальше - почему я прямо так не поправил чтобы билось по 9 (не по 10, swf-клиент отправляет 1 - ping2 - 9 , когда бьёшь 10, то неизвестно к чему даже 10 приведёт) -- потому, что дублирование кода.
Подобный код отправки уже есть в BaseActor.craft
я бы предложил вынести его в BaseActor.send_slice(events,count,max_once) , чем дублировать.
Когда похожие - порезка стучания ёлок по 50 и отправки коллекций по 48, пишутся проще, в 2 строчки, что выносить не надо
Код:
for i in xrange(0,count,max_once):
self.send(events[i:i+max_once])
P.S. Вопрос с жемчужиной востока остаётся актуальным. С ней можно отправить без палева и 500.
P.P.S. И да, вариант уважаемого vintets лучше, он прямо имитирует 1 - 9, только разве что ping2 не ждёт...
P.*3S. Башенка отправляет 1 - остальное
{"x":0,"y":0,"type":"item","action":"useStoragePic kups","objId":id_башенки,"id":28,"itemId":"EGG_04" }
И, кстати, "time": в запросе EVT
Цитата:
Сообщение от ruslanische
И еще, кто-нибудь проверял, сортируются ли данные в запросах к серверу?
У меня data={"time":,"sig":,"type":"EVT","events":[],"id":,"user":}&crc= &gz=y порядок полей, бот отсылает другой.
Гадание на кофейной гуще... Влом открывать swf и искать там.
Или не настолько влом... Вот как пакуется timer
package package_31
{
import package_58.JSON;
public class class_94 extends Object
{
public function class_94()
{
super();
}
public static function encode(param1:Object) : String
{
return package_58.JSON.encode(param1);
}
public static function decode(param1:String) : *
{
return package_58.JSON.decode(param1);
}
}
}
Последний раз редактировалось megabyte0; 15.01.2015 в 20:38.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от megabyte0
Яцукевич по радио говорил, что на сервере game_stateы слетают, по этому поводу. Откуда ограничение в 2000?
Нет такого ограничения. Есть ограничение на запрос 64 кБ я так понял. Вот при длинных данных (id, type, action, координаты + разное барахло) при парах команд покупка-продажа, 2000 пар влазят всегда. Поэтому остановился на этом. Иногда тоже использую 500, там где нужно ждать дроп, а лучше 300. Иначе переполняется или тупит на сервере и начинает падать.
А какие нибудь ракеты поставить/продать 2000 за милую душу.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Cheater-84, код на вскрытие ценностей со склада у меня есть, причем кажется даже тобой составленный Но все равно бот вскрывает ценности долго: 1000 тех же свитков около 10 минут (на вскидку, точно не засекала).
Это конечно лучше, чем вручную, но всё таки через "жемчужину востока" было бы быстрее. Поэтому и полезла искать тут такой код.
megabyte0, в принципе правда твоя, можно и 10 раз подождать пока браузер повисит и после обновления повторять сделанное, но это также не очень удобно и немного напрягает
vintets, спасибо тебе за код! поменяла, опробовала и довольна Намного ускоряет процесс вскрытия))
Но всё же буду рада, если кто-то займется кодом именно на жемчужину. А то монеты в бц делать можно, коллекции крафтить в изумрудных постройках тоже, а эта постройка стоит без дела))
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от Stasya1991
Cheater-84, код на вскрытие ценностей со склада у меня есть, причем кажется даже тобой составленный Но все равно бот вскрывает ценности долго: 1000 тех же свитков около 10 минут (на вскидку, точно не засекала).
Это конечно лучше, чем вручную, но всё таки через "жемчужину востока" было бы быстрее. Поэтому и полезла искать тут такой код.
megabyte0, в принципе правда твоя, можно и 10 раз подождать пока браузер повисит и после обновления повторять сделанное, но это также не очень удобно и немного напрягает
vintets, спасибо тебе за код! поменяла, опробовала и довольна Намного ускоряет процесс вскрытия))
Но всё же буду рада, если кто-то займется кодом именно на жемчужину. А то монеты в бц делать можно, коллекции крафтить в изумрудных постройках тоже, а эта постройка стоит без дела))
Всем форумчанам привет!) "небольшая заметочка" вскрывашка не мной составлена была))))
а Vint у спасибо за код)