Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Начал пользоваться сборкой ZomBotSnow_3release-b. Проблема в следующем: при первом запуске происходит сбор урожая, а затем идут холостые проходы, помогает только выставление интервала самоперезагрузки бота. Хелп ми плиз
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от lokanaft
greyzza, разве у тебя там не такой код:
да код то такой, работал он только почему то при наличии материала на складе , видишь написано:
PHP код:
if hasattr(itemid, "item"): if itemid.item == item_id: itemid.count += count
а если не равно? т.е нет на складе
он получается проверяет есть ли на складе и прибавляет к имеющемуся количеству то количество которое появилось
вот и пришлось дублировать (почти) тока делать не равно
PHP код:
for itemid in self.__game_state.storageItems: if hasattr(itemid, "item"): if itemid.item != item_id: itemid.item = item_id itemid.count = count
вобщем теперь у меня вся конструкция выглядит так:
PHP код:
def add_from_storage(self, item_id, count): item_id = item_id.lstrip('@') item_id = '@'+item_id for itemid in self.__game_state.storageItems: if hasattr(itemid, "item"): if itemid.item == item_id: itemid.count += count return for itemid in self.__game_state.storageItems: if hasattr(itemid, "item"): if itemid.item != item_id: itemid.item = item_id itemid.count = count return self.set_from_storage(item_id, count)
главное работает
Добавлено через 35 минут
чет я ща подумал может проще надо было в сэт еще добавить:
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Если не равно, то отрабатывает последняя строка
так это я понял, все равно не добавлялось, почему и возник вопрос
Добавлено через 9 минут
vintets, у меня изначально вопрос был про пиратский сундук, потом возникла проблема что склад сразу не обновлялся т.к. проверял из обычного склада пиратский сундук отошел на второй план так вот у меня не обновлялся склад при отсутствии материала на оном, при таком коде:
PHP код:
def add_from_storage(self, item_id, count):
item_id = item_id.lstrip('@')
item_id = '@'+item_id
for itemid in self.__game_state.storageItems:
if hasattr(itemid, "item"):
if itemid.item == item_id:
itemid.count += count
return
self.set_from_storage(item_id, count)
def set_from_storage(self, item_id, count):
itemid=dict2obj({item_id:count})
self.__game_state.storageItems.append(itemid)
значит косяк в set_from_storage
Последний раз редактировалось greyzza; 21.05.2014 в 19:41.
Причина: Добавлено сообщение
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от greyzza
так это я понял, все равно не добавлялось, почему и возник вопрос
Добавлено через 9 минут
vintets, у меня изначально вопрос был про пиратский сундук, потом возникла проблема что склад сразу не обновлялся т.к. проверял из обычного склада пиратский сундук отошел на второй план так вот у меня не обновлялся склад при отсутствии материала на оном, при таком коде:
PHP код:
def add_from_storage(self, item_id, count):
item_id = item_id.lstrip('@')
item_id = '@'+item_id
for itemid in self.__game_state.storageItems:
if hasattr(itemid, "item"):
if itemid.item == item_id:
itemid.count += count
return
self.set_from_storage(item_id, count)
def set_from_storage(self, item_id, count):
itemid=dict2obj({item_id:count})
self.__game_state.storageItems.append(itemid)
значит косяк в set_from_storage
Конечно косяк. Я и забыл уже. У себя правил давно, давно.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
В боте на копку есть сетинг с 4 акк ! ввожу логин и пас ( разние туда ) запускаю 4 акк раотает! запускаю 3 он питается запуустить 4.. со в 2 и 1 так же. как исправить?
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от ProPein
В боте на копку есть сетинг с 4 акк ! ввожу логин и пас ( разние туда ) запускаю 4 акк раотает! запускаю 3 он питается запуустить 4.. со в 2 и 1 так же. как исправить?
Исправляю:
"В боте на копку есть сеттинг с 4 акк ! Ввожу логин и пас ( разные туда ), запускаю 4 акк работает! Запускаю 3, он пытается запуустить 4.. со в 2 и 1 - так же."
Чтобы понять, нужно пол часа посидеть порасшифровывать.
А по боту... где есть, что есть, показал бы как запускаешь? Что в сеттинге указано?
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
def receive_all_gifts(self):
gifts = list(set(self._get_game_state().get_state().gifts))
#gifts = []
#for i in gifts_one:
# if not i in gifts:
# gifts+=[i]
# print dir(gifts[0])
#[ u'count', u'free', u'id', u'item', u'msg', u'type', u'user']
if len(gifts) > 0:
logger.info(u"Доступно подарков: %s" % len(gifts))
for gift in list(gifts):
self.receive_gift(gift)
def receive_gift(self, gift):
item = self._get_item_reader().get(gift.item)
gift_name = u'подарок "' + str(gift.count)+' '+item.name + u"'"
with_message = hasattr(gift, 'msg') and gift.msg != ''
moved = hasattr(item, 'moved') and item.moved == True
free = hasattr(gift, 'free') and gift.free
if with_message:
gift_name += u" с сообщением: '" + gift.msg + u"'"
if moved:
logger.info(u"П"+gift_name[1:]+ u"' нужно поместить")
if free:
gift_name = u'бесплатный ' + gift_name
gift_name += u" от " + gift.user
logger.info(u'Доступен ' + gift_name)
CollIt=obj2dict(self._get_game_state().get_state().collectionItems)
if not moved:
if (gift.item=='@CR_44') or (gift.item[1:] in CollIt.keys()) or not with_message or self._get_options()["with_messages"]:
if (gift.item=='@CR_44', '@CR_08', 'R_33') or (gift.item[1:] in CollIt.keys()) or free or self._get_options()["non_free"]:
logger.info(u"Принимаю " + gift_name)
apply_gift_event = GameApplyGiftEvent(GameGift(gift.id))
self._get_events_sender().send_game_events([apply_gift_event])
self._get_game_state().add_from_storage(gift.item,gift.count)
if (gift.item[1:] in CollIt.keys()): CollIt[gift.item]=gift.count
#CR_01 Цемент
#CR_06 Металл
#CR_11 Доска
#CR_16 Шестерня
#CR_25 Стекло
#CR_44 Мир
#CR_70 Время
#CR_08 зелёная краска
#R_33
if 0:
if free and (gift.item<>'@CR_44'): # мир
#{"userIds":["85678136"],"type":"gifts","action":"sendFreeGifts","itemId":"CR_16","msg":"qwerty"}
#{"action":"sendFreeGifts","itemId":"CR_11","userIds":["119482219"],"type":"gifts","msg":":3"}
#{"userIds":[str(gift.user)],"type":"gifts","action":"sendFreeGifts","itemId":gift.item[1:],"msg":":3"}
self._get_events_sender().send_game_events([{"userIds":[str(gift.user)],"type":"gifts","action":"sendFreeGifts","itemId":gift.item[1:],"msg":":3"}])
#self._get_events_sender().send_game_events([{"userId":[gift.user],"itemId":gift.item[1:],"type":"gifts","msg":"","action":"sendFreeGifts"}])
logger.info(u"Подарок от %s отправлен обратно: %s"%(gift.user,gift_name))
self.remove_gift_from_game_state(gift)
self._get_game_state().get_state().collectionItems=dict2obj(CollIt)
def remove_gift_from_game_state(self, gift):
for current_gift in list(self._get_game_state().get_state().gifts):
if gift.id == current_gift.id:
self._get_game_state().get_state().gifts.remove(current_gift)
break
class AddGiftEventHandler(object):
def __init__(self, game_state):
self.__game_state = game_state
def handle(self, event):
gift = event.gift
self.append_gift_to_game_state(gift)
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Может кто знает где, что подправить нужно...Подскажите пожалуйста... При кручении рулеток(любого типа) на пиратском острове, периодически проскакивает ошибка :
После чего следует перезагрузка и эта же рулетка крутится нормально. Причем бывает по-разному, очередная ошибка может проскочить при кручении и следующей рулетки, а может и проработать 10-15 мин. без ошибок, а затем проскакивает (не дожидаясь указанного в гейм енжине время перезагрузки - 3 мин.).
Просмотрел страницы форума, такой вопрос уже четырежды задавали, но ответа на него не нашел.Кто-то писал, что нужно добавить проверку на сильвера(которая изначально прописана), но ошибка проскакивает и на островах где сильвер отсутствует. А в трех других случаях, вопрос оставался без ответов.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от Shurup240
Я вопрос не правильно поставил, видимо . Как сделать, чтобы бот не принимал коллекции?
Удалить
PHP код:
or (gift.item[1:] in CollIt.keys())
В любом из первых двух ифов.
Добавлено через 39 минут
Цитата:
Сообщение от gromek
Может кто знает где, что подправить нужно...Подскажите пожалуйста... При кручении рулеток(любого типа) на пиратском острове, периодически проскакивает ошибка :
После чего следует перезагрузка и эта же рулетка крутится нормально. Причем бывает по-разному, очередная ошибка может проскочить при кручении и следующей рулетки, а может и проработать 10-15 мин. без ошибок, а затем проскакивает (не дожидаясь указанного в гейм енжине время перезагрузки - 3 мин.).
Просмотрел страницы форума, такой вопрос уже четырежды задавали, но ответа на него не нашел.Кто-то писал, что нужно добавить проверку на сильвера(которая изначально прописана), но ошибка проскакивает и на островах где сильвер отсутствует. А в трех других случаях, вопрос оставался без ответов.
Тоже бывает проскакивает, но редко. Часто всё нормально за целый остров.
Могу только предположить, что из-за лагов сети или загрузке сервера наши сообщения опаздывают, а время в items стандартно и ровно.
Объясняю.
Мы проверили время до кручения, всё нормально, крутим - отсылаем запрос. Тут же прописываем в стату полное время до следующего кручения 300000 (для колодца). Учитывается всё от этого момента. Если задержка в сети или сервер прочухался, он крутнёт нашу рулетку позже. Ну пусть на 1-2 сек.
Если бот во время очередного круга попадает на проверку довольно точно - время вот-вот закончилось. Он отсылает новое кручение.
Тут как всегда, западло и всё дошло быстро. Время на сервере ещё не вышло и вуаля...
Просто предположение. Код не разбирал. Хотя, если подумать, время должно приходить в ответе. Задержки то и через браузер могут быть.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось vintets; 22.05.2014 в 17:44.
Причина: Добавлено сообщение