Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от ruslanische
Понятно, что можно передать None
Он сконвертится в null, гляньте описание питонового json в оф. документации.
Цитата:
Сообщение от ruslanische
если хотим сварить хеллию, то сами ставим в конфиге: "хелллия, клеверхелл, чесн. лилия" и бот варит то, что сможет из этого. Вроде так будет работать без усложнения и графов.
Не всегда это оптимальный вариант. При 336*24*60 рецептах/сутки у меня получается 88000-85000 глазной росянки только. То есть варить до предела одно и потом до предела другое не всегда вариант.
У меня эта дырка закрыта так, я понимаю что совсем неоптимально, но мне хватает
Код:
if 'RECIPE_13' in cook_items:
r13_index=cook_items.index('RECIPE_13')
if len(cook_items)>=2+r13_index and cook_items[1+r13_index]=='RECIPE_08' and cook_items[2+r13_index] == 'RECIPE_03':
if self._get_game_state().count_in_storage('@R_08') > self._get_game_state().count_in_storage('@R_03'):
cook_items[1+r13_index],cook_items[2+r13_index] = cook_items[2+r13_index],cook_items[1+r13_index]
if len(cook_items)>=2+r13_index and cook_items[1+r13_index]=='RECIPE_03' and cook_items[2+r13_index] == 'RECIPE_08':
if self._get_game_state().count_in_storage('@R_03') > self._get_game_state().count_in_storage('@R_08'):
cook_items[1+r13_index],cook_items[2+r13_index] = cook_items[2+r13_index],cook_items[1+r13_index]
P.S. Я не горжусь этим кодом.
Цитата:
Сообщение от GirlKris
а ведь ещё из материалов можно варить
Хуже, иногда результат варки -- материал (сталь). Вообще не вижу проблемы построить дерево рецептов, даже неявно рекурсией.
Функция "варится"(item_id) , если это есть в "result": рецепта, тогда вернуть этот рецепт. Хранить для такого рецепты dictом {result:id} для быстродействия.
Если варится, варить тот ингр, которого нет/не_хватает (если такие ингры есть, которых нет/не_хватает), иначе варить сам рецепт. Если не варится и нет, то.. увы Эт обзорно, надо будет потом перечитать/поправить
Воизбежание циклов (вариант для параноиков) можно передавать в рекурсию путь от "корня", то есть "заказанного рецепта". И, если какой-то из ингров там уже содержится, "имеем цикл", тогда наверно не спускаться в варку ингра..
Цитата:
Сообщение от ruslanische
А складские объекты не имеют информации как их получить
Пробежать по резалтам крафта? И по рецептам. И по результатам обмена коллекций. И по "состоит из" ресурсов_за_монеты из shop из подземелий, но это уже совсем экзотика. По чему ещё там нужно? (грубо говоря, или это варится, или крафтится или есть на складе, или ?)
Потом посмотреть есть ли здания для крафта. Но это тогда будет мегабот
Последний раз редактировалось megabyte0; 01.02.2015 в 10:15.
_loc = self._get_game_state().get_game_loc().get_location_id()
if _loc == u'main':
#получаем id фургона
buildings = self._get_game_location().get_all_objects_by_type(GameBuilding.type)
for building in list(buildings):
building_item = self._get_item_reader().get(building.item)
if building_item.name == u'Фургон': # или if building_item.id == 'B_VAN_ICE_CREAM'
obj_id = building.id
#есть ли на складе альбом и зеленая краска
gr_paint = album =0
st_items = self._get_game_state().get_state().storageItems
for _item in list(st_items):
if hasattr(_item,'item'):
if _item.item == ('@CR_08'): gr_paint = _item.count
if _item.item == ('@R_33'): album = _item.count
#проверяем время окончания бафа /либо его отсутствие/ и создаем проездной
l_buffs = self._get_game_state().get_state().buffs.list
l_count = 0
for l in l_buffs:
if 'BUFF_TRAVEL_TICKET_TIME' in l.item:
if l.expire.endDate > 0:
l_count +=1
if l_count == 0 and gr_paint >= 10 and album >= 1 : self.create_ticket (obj_id)
оно работает нормально? Если да, то попробуйте поменять
Код:
if hasattr(item, "item"):
if item.item == ('@CHOP_MACHETE'): #мачете
instruments.append(dict2obj({"item":"@CHOP_MACHETE", "count": item.count}))
if item.item == ('@CHOP_AXE'): #топор
instruments.append(dict2obj({"item":"@CHOP_AXE", "count": item.count}))
if item.item == ('@CHOP_HAMMER'): #кирка
instruments.append(dict2obj({"item":"@CHOP_HAMMER", "count": item.count}))
if item.item == ('@CHOP_TRIDENT'): #Трезубец
instruments.append(dict2obj({"item":"@CHOP_TRIDENT", "count": item.count}))
if item.item == ('@CHOP_TRIDENT_GOLDEN'): #Золотой Трезубец
instruments.append(dict2obj({"item":"@CHOP_TRIDENT_GOLDEN", "count": item.count}))
на
Код:
if hasattr(item, "item") and item.item in ['@CHOP_MACHETE','@CHOP_AXE','@CHOP_HAMMER','@CHOP_TRIDENT','@CHOP_TRIDENT_GOLDEN']:
instruments.append(item)
, он туда ссылки вставит вместо новых значений и на "других островах" тоже будут вычитаться.
Если не работает именно на тех, список которых выше, проверьте прокрутку рулеток, куда она инструменты добавляет, в склад или в pirate , на этих островах, в этом может быть проблема.
Если на островах, которые выше процитированы, не работает, я хз, мне влом тестить, но строчку
Код:
tool.count -= tool_needed
я вижу. Отпишитесь в любом случае. А если и нет, то модули на рубку тут мелькали уже, поищите на форуме Спасибо.
А ещё, народ, просветите меня, зачем вот это сделано? 'Располовинивание' камней по 100? Так же меньше полезного сыпется, или я не прав?
Цитата:
Сообщение от Shurup240
Код:
if tool_needed == 100:
tool_needed = 50
print 'tool_needed Set 50'
Последний раз редактировалось megabyte0; 02.02.2015 в 02:29.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Всем привет. Я тут новенькая. Пытаюсь запустить бота, а тут такие вот ошибки. Не подскажите в чем дело, можно в лс, чтоб не забивать общую тему.
Цитата:
2015-02-02 02:31:41,106 Логинимся...
2015-02-02 02:31:42,068 Загружаем остров...
Traceback (most recent call last):
File "src/main.py", line 93, in <module>
run_game()
File "src/main.py", line 74, in run_game
Game(site, settings, UserPrompt(gui_input), gui_input=gui_input).start()
File "/home/nora/sources/nora/zombot/src/game_engine.py", line 337, in start
start_response = self.__game_initializer.start()
File "/home/nora/sources/nora/zombot/src/game_engine.py", line 165, in start
session_key, server_time = self.get_time()
File "/home/nora/sources/nora/zombot/src/game_engine.py", line 175, in get_time
self.__request_sender = self.__create_request_sender()
File "/home/nora/sources/nora/zombot/src/game_engine.py", line 182, in __create_request_sender
api_user_id, game_auth_key, api_access_token, connection = self.__site.get_game_params()
File "/home/nora/sources/nora/zombot/src/vkutils.py", line 31, in get_game_params
params = self.getAppParams('612925')
File "/home/nora/sources/nora/zombot/src/vkutils.py", line 15, in getAppParams
session_cookies = self._getSessionCookies()
File "/home/nora/sources/nora/zombot/src/vkutils.py", line 80, in _getSessionCookies
cookies_are_valid = self._validateSessionCookies(session_cookies)
File "/home/nora/sources/nora/zombot/src/vkutils.py", line 75, in _validateSessionCookies
valid = self.getAppParams(1, session_cookies) is not None
File "/home/nora/sources/nora/zombot/src/vkutils.py", line 27, in getAppParams
return json.loads(params)
File "/usr/lib64/python2.7/json/__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "/usr/lib64/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib64/python2.7/json/decoder.py", line 384, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
P.S. Покопалась в том, что же за параметры не получается распарсить, получилось что print params возвращает строку "opts && opts.params || {}".
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
NoraInu, у меня похожая проблема была, если не авторизованы. Сохраните html, который отдаёт вконтакт и откройте в браузере, гляньте, может и правда?
Код:
html = vk.sendRequest(None, cookies=session_cookies)
#open('html.tmp','w').write(html.encode('utf-8'))
Цитата:
Сообщение от Shurup240
Не помогло(
Точно эта причина? Не то, что ресурс "в тени" -- вроде и видно, а вырубить никак? Отписывали в этой теме подобное, но про хеллоуинский остров. Морозную равнину не знаю, кто чем рубил, но она обсуждалась, например, здесь http://zhyk.ru/forum/showpost.php?p=...postcount=3805 . Я её не трогал, ничего сказать не могу.
Если я неправ в предыдущем сообщении, знающих просьба поправить.. сорри.
Последний раз редактировалось megabyte0; 02.02.2015 в 09:10.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Добавлено через 2 минуты
Цитата:
Сообщение от megabyte0
Miha88, Меняем
Код:
if l.expire.endDate > 0:
на
Код:
if not self._get_timer().has_elapsed(l.expire.endDate):
И дописываем проездной в buffs -- меняем
Код:
if l_count == 0 and gr_paint >= 10 and album >= 1 : self.create_ticket (obj_id)
на
Код:
if l_count == 0 and gr_paint >= 10 and album >= 1 :
self.create_ticket (obj_id)
add_time=self._get_item_reader().get('BUFF_TRAVEL_TICKET_TIME').expire.duration*1000
l_buffs.append(dict2obj({u'item': u'@BUFF_TRAVEL_TICKET_TIME', u'expire': {u'endDate': unicode(long(self._get_timer()._get_current_client_time())+add_time), u'type': u'time'}}))
И, конечно
Код:
from game_state.game_event import dict2obj
в начало. А вычитать зелёную краску и альбом заставьте писателя модуля. Хотя это и неактуально, за 5 дней бот перезапустится
P.S. Не тестил.
Shurup240, как я понимаю, на этих островах
оно работает нормально? Если да, то попробуйте поменять
Код:
if hasattr(item, "item"):
if item.item == ('@CHOP_MACHETE'): #мачете
instruments.append(dict2obj({"item":"@CHOP_MACHETE", "count": item.count}))
if item.item == ('@CHOP_AXE'): #топор
instruments.append(dict2obj({"item":"@CHOP_AXE", "count": item.count}))
if item.item == ('@CHOP_HAMMER'): #кирка
instruments.append(dict2obj({"item":"@CHOP_HAMMER", "count": item.count}))
if item.item == ('@CHOP_TRIDENT'): #Трезубец
instruments.append(dict2obj({"item":"@CHOP_TRIDENT", "count": item.count}))
if item.item == ('@CHOP_TRIDENT_GOLDEN'): #Золотой Трезубец
instruments.append(dict2obj({"item":"@CHOP_TRIDENT_GOLDEN", "count": item.count}))
на
Код:
if hasattr(item, "item") and item.item in ['@CHOP_MACHETE','@CHOP_AXE','@CHOP_HAMMER','@CHOP_TRIDENT','@CHOP_TRIDENT_GOLDEN']:
instruments.append(item)
, он туда ссылки вставит вместо новых значений и на "других островах" тоже будут вычитаться.
Если не работает именно на тех, список которых выше, проверьте прокрутку рулеток, куда она инструменты добавляет, в склад или в pirate , на этих островах, в этом может быть проблема.
Если на островах, которые выше процитированы, не работает, я хз, мне влом тестить, но строчку
Код:
tool.count -= tool_needed
я вижу. Отпишитесь в любом случае. А если и нет, то модули на рубку тут мелькали уже, поищите на форуме Спасибо.
А ещё, народ, просветите меня, зачем вот это сделано? 'Располовинивание' камней по 100? Так же меньше полезного сыпется, или я не прав?
Большое спасибо, тестирую скоро отпишусь о результате.
Последний раз редактировалось Miha88; 02.02.2015 в 10:18.
Причина: Добавлено сообщение
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Удалила куки, подставила другие логин и пароль - стало вот так:
Цитата:
You selected vk
2015-02-02 10:12:28,019 Логинимся...
2015-02-02 10:12:29,094 Загружаем остров...
2015-02-02 10:13:02,151 user is not valid
2015-02-02 10:13:02,152 Загружаем остров...
2015-02-02 10:13:12,810 user is not valid
2015-02-02 10:13:12,810 Загружаем остров...
2015-02-02 10:13:18,401 user is not valid
2015-02-02 10:13:18,401 Загружаем остров...
2015-02-02 10:13:33,901 user is not valid
2015-02-02 10:13:33,901 Загружаем остров...
2015-02-02 10:13:34,414 user is not valid
2015-02-02 10:13:34,414 Загружаем остров...
И так до бесконечности, пока насильно не вырубишь.
А ошибки если вырубить:
Цитата:
File "src/main.py", line 93, in <module>
run_game()
File "src/main.py", line 74, in run_game
Game(site, settings, UserPrompt(gui_input), gui_input=gui_input).start()
File "/home/nora/sources/nora/zombot/src/game_engine.py", line 337, in start
start_response = self.__game_initializer.start()
File "/home/nora/sources/nora/zombot/src/game_engine.py", line 165, in start
session_key, server_time = self.get_time()
File "/home/nora/sources/nora/zombot/src/game_engine.py", line 175, in get_time
self.__request_sender = self.__create_request_sender()
File "/home/nora/sources/nora/zombot/src/game_engine.py", line 182, in __create_request_sender
api_user_id, game_auth_key, api_access_token, connection = self.__site.get_game_params()
File "/home/nora/sources/nora/zombot/src/vkutils.py", line 31, in get_game_params
params = self.getAppParams('612925')
File "/home/nora/sources/nora/zombot/src/vkutils.py", line 15, in getAppParams
session_cookies = self._getSessionCookies()
File "/home/nora/sources/nora/zombot/src/vkutils.py", line 80, in _getSessionCookies
cookies_are_valid = self._validateSessionCookies(session_cookies)
File "/home/nora/sources/nora/zombot/src/vkutils.py", line 75, in _validateSessionCookies
valid = self.getAppParams(1, session_cookies) is not None
File "/home/nora/sources/nora/zombot/src/vkutils.py", line 17, in getAppParams
html = vk.sendRequest(None, cookies=session_cookies)
File "/home/nora/sources/nora/zombot/src/connection.py", line 54, in sendRequest
response = self.__getResponse(data, cookies)
File "/home/nora/sources/nora/zombot/src/connection.py", line 47, in __getResponse
response = opener.open(self.__url, data, timeout=2)
File "/usr/lib64/python2.7/urllib2.py", line 404, in open
response = self._open(req, data)
File "/usr/lib64/python2.7/urllib2.py", line 422, in _open
'_open', req)
File "/usr/lib64/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/usr/lib64/python2.7/urllib2.py", line 1222, in https_open
return self.do_open(httplib.HTTPSConnection, req)
File "/usr/lib64/python2.7/urllib2.py", line 1181, in do_open
h.request(req.get_method(), req.get_selector(), req.data, headers)
File "/usr/lib64/python2.7/httplib.py", line 995, in request
self._send_request(method, url, body, headers)
File "/usr/lib64/python2.7/httplib.py", line 1029, in _send_request
self.endheaders(body)
File "/usr/lib64/python2.7/httplib.py", line 991, in endheaders
self._send_output(message_body)
File "/usr/lib64/python2.7/httplib.py", line 844, in _send_output
self.send(msg)
File "/usr/lib64/python2.7/httplib.py", line 806, in send
self.connect()
File "/usr/lib64/python2.7/httplib.py", line 1194, in connect
self.timeout, self.source_address)
File "/usr/lib64/python2.7/socket.py", line 553, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
KeyboardInterrupt
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от megabyte0
А ещё, народ, просветите меня, зачем вот это сделано? 'Располовинивание' камней по 100? Так же меньше полезного сыпется, или я не прав?
Это я добавлял. Тогда это было полезно, сыпалось больше черепов. Сейчас в последних обновлениях говорят сменили баланс и располовинивание не актуально. Можно убрать.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).