Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Кто-нибудь отправляет ping? Клиент его шлет иногда, как я понял, он идентичен пустому евенту, но вот в какое время его слать?
Добавлено через 11 часов 48 минут
Бот под утро упал с ingame error. Посмотрел логи, упало после отправки дровосеков на работы.
Загрузил клиент, там такая шняга:
[Ссылки могут видеть только зарегистрированные пользователи. ]
После перезагрузки клиента тоже самое, дрова пока что не трогал, хочу посмотреть еще на game_state, что там у дровосеков.
Это они че, отказываются работать ночью? Эпик фейл
Последний раз редактировалось ruslanische; 18.01.2015 в 11:22.
Причина: Добавлено сообщение
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от ruslanische
Кто-нибудь отправляет ping? Клиент его шлет иногда, как я понял, он идентичен пустому евенту, но вот в какое время его слать?
Добавлено через 11 часов 48 минут
Бот под утро упал с ingame error. Посмотрел логи, упало после отправки дровосеков на работы.
Загрузил клиент, там такая шняга:
[Ссылки могут видеть только зарегистрированные пользователи. ]
После перезагрузки клиента тоже самое, дрова пока что не трогал, хочу посмотреть еще на game_state, что там у дровосеков.
Это они че, отказываются работать ночью? Эпик фейл
ресы прописывал чтобы на закрытой территории не брал?
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
как проверить, что они недоступны (и декор, который там лежит)?
я не знаю кто как проверяет , я вот в гейм локатион так делаю
PHP код:
class GameLocation():
def __init__(self, item_reader, game_location, game_objects):
self.__item_reader = item_reader
self.__game_location = game_location
if self.__game_location.id=='main':
openedAreas=self.__game_location.openedAreas
maps=[ str(i)+':'+str(j) for i in range(0,128) for j in range(48,100)]
if 'second' in openedAreas:
add=[ str(i)+':'+str(j) for i in range(0,48) for j in range(0,48)]
maps.extend(add)
if 'mount' in openedAreas:
add = [ str(i)+':'+str(j) for i in range(62,128) for j in range(0,30)]
maps.extend(add)
objects=[object for object in game_objects if str(object.x)+':'+str(object.y) in maps]
game_objects=objects
self.__game_objects=game_objects
self.__game_objects_dict={obj.id:obj for obj in game_objects}
self.__pickups = []
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
я вот в гейм локатион так делаю
Спасибо, щас проверю.
Добавлено через 2 часа 3 минуты
Цитата:
я вот в гейм локатион так делаю
А размеры закрытых областей примерно расчитали? не нашел в items.txt никакх упоминаний о размерах этих областей. Зато в чарли посмотрел, верхний левый угол не 0,0 а 14,12.
Последний раз редактировалось ruslanische; 18.01.2015 в 14:34.
Причина: Добавлено сообщение
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
да но деревья и некоторый декор которые стоят за забором, выходят за эти координаты поэтому взял с нуля
кстати тоже заметил, когда замерял: вроде левее уже не поставить, а камень левее (по x) стоит.
Добавлено через 1 час 49 минут
Вот мой вариант проверки ресурсов на доступность:
Код:
class GameState():
def is_resource_accessible(self, x, y):
if self.__game_location[u'id'] == u'main':
if (x >=0 and x <= 128 and y>=48 and y<=100) or \
(u'second' in self.__game_location[u'openedAreas'] and x>=0 and x<=48 and y>=0 and y<=48) or \
(u'mount' in self.__game_location[u'openedAreas'] and x>=62 and x<=128 and y>=0 and y<=30):
return True
return False
...
# выбираем все ресурсы, которые будем добывать
resources = self.get_state_processor().get_game_objects_by_type(
self.get_object_type()
)
# отсеиваем русурсы, которые недоступны
resources = filter(lambda(resource): self.get_game_state().is_resource_accessible(resource[u'x'], resource[u'y']), resources)
Длинно, но красиво.
Добавлено через 1 час 57 минут
Думаю еще добавить проверку, что клиент игры не обновился.
Взять текущий zombiefarm.swf посчитать его md5, при старте бота скачивать клиент игры и проверять его md5.
Последний раз редактировалось ruslanische; 18.01.2015 в 18:26.
Причина: Добавлено сообщение
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
я пытаюсь сделать код бота таким, чтобы остальным было его проще читать и править.
спорно! что проще прочитать и поправить self.__game_location.openedAreas или self.__game_location[u'openedAreas'] я пойму ты поймешь ну еще с пяток человек, а остальные? у меня просто в стандартный бот в локатион надо добавить несколько строк и не нужно потом в каждом модуле будь то воркер или ванд писать проверку на доступные обьекты они получат их из локатион соответственно править другие модули не надо, ну а ты уж раз начал эту эпопею по тотальному изменению этого бота то понятно что править тебе все модули придется и выкладывать потом конечный готовый к употреблению продукт потому что чтобы всем удобно было читать и править это не про эту тему здесь желательно все готовое и сразу чтобы вообще никуда не лезть и не править, основная масса здесь пользователи
p.s., меня устраивает мой бот и по скорости(уж не знаю за какой вы скоростью гонитесь-за секунду все острова пробежать?) и по функционалу))
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
спорно! что проще прочитать и поправить self.__game_location.openedAreas или self.__game_location[u'openedAreas']
Да, self.__game_location.openedAreas прочитать проще, за это приходится расплачиваться game_types.py. И этот item_reader? Та еще жесть. Зачем писать (а потом еще надеется, что он будет работать, в случае изменении чего) 100 кб кода, который просто представляет dict как набор объектов. Я лично переплевался с этого велосипеда.
Цитата:
у меня просто в стандартный бот в локатион надо добавить несколько строк и не нужно потом в каждом модуле будь то воркер или ванд писать проверку на доступные обьекты они получат их из локатион соответственно править другие модули не надо
Ну, проверку на доступность можно добавить и в функцию, которая возвращает объекты. Но пока я не вижу как это получше сделать. Как вы и писали, дерево может находиться там, где здание не может (допустим здание такого же размера, что и дерево).
Цитата:
ну а ты уж раз начал эту эпопею по тотальному изменению этого бота то понятно что править тебе все модули придется и выкладывать потом конечный готовый к употреблению продукт
начал - да
править все модули - только то, что мне нужны по ходу игры, а писать то, что мне не нужно бесплатно я не буду
выкладывать - как сделаю версию, за которую не стыдно
готовый к употреблению продукт - это сам для себя решит каждый
Цитата:
потому что чтобы всем удобно было читать и править это не про эту тему здесь желательно все готовое и сразу чтобы вообще никуда не лезть и не править, основная масса здесь пользователи
Опять же, сами решат
А кому будет не в моготу его править, то и не надо. Хотя даже текущего бота пытаются править люди без опыта программирования, и у некоторых это даже получается.
Цитата:
p.s., меня устраивает мой бот и по скорости(уж не знаю за какой вы скоростью гонитесь-за секунду все острова пробежать?) и по функционалу))
Я ни за какой скоростью не гонюсь, просто всегда пытаюсь сделать код, который не будет использовать лишних ресурсов (беда почти всех игр и софта нынешнего)
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
дерево может находиться там, где здание не может (допустим здание такого же размера, что и дерево)
не понял , ну и что случится если здание того же размера что и дерево, после того как срубишь эти дефолтные деревья на то место уже не поставить ни здание размером с это срубленное дерево ни декор ни то же самое дерево координаты будут начинатся 14:12