Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от vintets
Ошибок и не возникало
У меня была ошибка, когда я корзину мимоз ставил вручную, а потом решил ботом их ставить на другом острове. Тогда корзина поставилась, но вскрыть я её не мог ни ботом, ни вручную и выпадало в "упс".
Решилось ручной установкой другой корзины, возможно.
current_loc = self._get_game_state().get_location_id() if not current_loc in plant_tree: #logger.info(u"Пропускаем "+current_loc) return 1 need = plant_tree [current_loc]
need = self._get_item_reader().get(need) space_crd = self.space(current_loc, need) if space_crd == []: return 1
next_id = max([_i.maxGameObjectId for _i in self._get_game_state().get_state().locationInfos] +[_m.id for _m in self._get_game_location().get_game_objects()]) + 1
num = 0 if space_crd: for k in space_crd: if len(k) == 5: x = int(k[:3]) y = int(k[3:]) elif len(k) == 4: if current_loc == u'main' and int(k[:2])<13: x = int(k[:3]) y = int(k[3:]) else: x = int(k[:2]) y = int(k[2:]) elif len(k) == 2: x = int(k[:1]) y = int(k[1:]) else: if k[0] == '8' or k[0] == '9': x = int(k[:1]) y = int(k[1:]) else: x = int(k[:2]) y = int(k[2:])
#перебор объектов на острове objects = self._get_game_location().get_game_objects() for object in list(objects): if not hasattr(object, 'x') or not hasattr(object, 'item'): continue x = object.x y = object.y
if not object.item in obj_cache: object_item = self._get_item_reader().get(object.item) obj_cache[object.item] = object_item else: object_item = obj_cache[object.item]
h = rect.rectH if rect.rectX < 0: x = int(x) + rect.rectX w = rect.rectW + (rect.rectX*-1) else: w = rect.rectW + rect.rectX if rect.rectY < 0: y = int(y) + rect.rectY h = rect.rectH + (rect.rectY*-1) else: h = rect.rectH + rect.rectY
for ix in range(w): for iy in range(h): k = str(int(x) + ix)+''+str(int(y) + iy) if not k in bad_crd: bad_crd.append(k) """ logger.info(u'Добавляем занятые координаты '+str(x)+' '+str(ix)+' '+str(y)+' '+str(iy)+' : '+k) sms = u'Добавляем занятые координаты '+str(x)+' '+str(ix)+' '+str(y)+' '+str(iy)+' : '+k+'\n' file.write(sms.encode('utf-8')) """ """ #logger.info(str(obj2dict(bad_crd)).encode('utf-8')) file.write(u'Полные bad_crd: \n'.encode('utf-8')) file.write(str(obj2dict(bad_crd))+'\n'.encode('utf-8')) file.write(u' \n') """
W = crd['x2'] - crd['x1'] - need.w + 2 H = crd['y2'] - crd['y1'] - need.h + 2
for iw in range(W): iw += crd['x1'] for ih in range(H): ih += crd['y1'] if (str(iw)+''+str(ih)) in bad_crd: #занято continue good = 1 add = [] for ix in range(need.w): for iy in range(need.h): k = str(iw+ix)+''+str(ih+iy) if k in bad_crd: #занято good = 0 break else: add.append(k) if good == 0: break if good == 1: #logger.info(u'Свободные '+need.id+u' на X: '+str(iw)+u', Y: '+str(ih)) space_crd.append(str(iw)+''+str(ih)) bad_crd.extend(add)
def get_coords(self, ostrov): # Map isle_01 Веры, Мечты if(ostrov in ['isle_dream', 'isle_faith']): map = [ str(i)+''+str(j) for i in range(14,16) for j in range(14,16)] add = [ str(i)+''+str(j) for i in range(12,14) for j in range(14,64)] map.extend(add) add = [ str(i)+''+str(j) for i in range(12,18) for j in range(74,76)] map.extend(add) add = [ str(i)+''+str(j) for i in range(40,82) for j in range(74,76)] map.extend(add) add = [ str(i)+''+str(j) for i in range(82,84) for j in range(72,76)] map.extend(add) add = [ str(i)+''+str(j) for i in range(82,84) for j in range(14,22)] map.extend(add) return {'x1':12, 'x2':83, 'y1':14, 'y2':75}, map
# Map world Домашний if(ostrov in ['main']): map = [ str(i)+''+str(j) for i in range(48,62) for j in range(12,48)] add = [ str(i)+''+str(j) for i in range(54,60) for j in range(48,100)] map.extend(add) add = [ str(i)+''+str(j) for i in range(62,112) for j in range(30,48)] map.extend(add) add = [ str(i)+''+str(j) for i in range(14,62) for j in range(0,12)] map.extend(add) add = [ str(i)+''+str(j) for i in range(112,128) for j in range(30,112)] map.extend(add) return {'x1':14, 'x2':127, 'y1':0, 'y2':99}, map
# Map isle_02 Альфа, Омега, Пик Админа, Ужасный, Чудовища, Майя, звёздный, гигантов if(ostrov in ['isle_alpha', 'isle_omega', 'isle_scarecrow', 'isle_elephant', 'isle_monster', 'isle_02', 'isle_star', 'isle_giant']): map = [ str(i)+''+str(j) for i in range(10,12) for j in range(10,12)] add = [ str(i)+''+str(j) for i in range(10,12) for j in range(42,44)] map.extend(add) add = [ str(i)+''+str(j) for i in range(42,44) for j in range(42,44)] map.extend(add) add = [ str(i)+''+str(j) for i in range(42,44) for j in range(10,12)] map.extend(add) return {'x1':10, 'x2':43, 'y1':10, 'y2':43}, map
# Map isle_04 Надежды, Страшный if(ostrov in ['isle_hope', 'isle_scary']): map = [ str(i)+''+str(j) for i in range(12,14) for j in range(12,14)] add = [ str(i)+''+str(j) for i in range(46,50) for j in range(12,14)] map.extend(add) add = [ str(i)+''+str(j) for i in range(48,50) for j in range(34,42)] map.extend(add) add = [ str(i)+''+str(j) for i in range(48,50) for j in range(72,74)] map.extend(add) add = [ str(i)+''+str(j) for i in range(12,20) for j in range(72,74)] map.extend(add) return {'x1':12, 'x2':49, 'y1':12, 'y2':73}, map
# Map isle_05 Город-призрак, Секретный if(ostrov in ['isle_emerald', 'isle_01']): map = [ str(i)+''+str(j) for i in range(16,20) for j in range(12,16)] add = [ str(i)+''+str(j) for i in range(70,72) for j in range(30,38)] map.extend(add) add = [ str(i)+''+str(j) for i in range(70,72) for j in range(70,72)] map.extend(add) add = [ str(i)+''+str(j) for i in range(16,18) for j in range(64,72)] map.extend(add) return {'x1':16, 'x2':71, 'y1':12, 'y2':71}, map
# Map isle_snow1 Дремучий, Мобильный, Маленькой ёлочки, Огромной ёлки if(ostrov in ['isle_wild', 'isle_mobile', 'isle_small', 'isle_xxl']): map = [ str(i)+''+str(j) for i in range(8,12) for j in range(6,8)] add = [ str(i)+''+str(j) for i in range(8,10) for j in range(8,10)] map.extend(add) add = [ str(i)+''+str(j) for i in range(42,46) for j in range(6,8)] map.extend(add) add = [ str(i)+''+str(j) for i in range(44,46) for j in range(8,10)] map.extend(add) add = [ str(i)+''+str(j) for i in range(44,46) for j in range(42,46)] map.extend(add) add = [ str(i)+''+str(j) for i in range(42,44) for j in range(44,46)] map.extend(add) add = [ str(i)+''+str(j) for i in range(8,10) for j in range(44,46)] map.extend(add) return {'x1':8, 'x2':45, 'y1':6, 'y2':45}, map
# Map isle_snow2 Полярной ночи, НЛО, Лысая гора, Большой ёлки, Лунный, Вишнёвый if(ostrov in ['isle_polar', 'isle_ufo', 'isle_halloween', 'isle_large', 'isle_moon', 'isle_light']): map = [ str(i)+''+str(j) for i in range(8,12) for j in range(6,10)] add = [ str(i)+''+str(j) for i in range(8,10) for j in range(44,46)] map.extend(add) add = [ str(i)+''+str(j) for i in range(42,46) for j in range(44,46)] map.extend(add) add = [ str(i)+''+str(j) for i in range(44,46) for j in range(42,44)] map.extend(add) add = [ str(i)+''+str(j) for i in range(42,46) for j in range(6,8)] map.extend(add) add = [ str(i)+''+str(j) for i in range(44,46) for j in range(8,10)] map.extend(add) return {'x1':8, 'x2':45, 'y1':6, 'y2':45}, map
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от dark-dragon
PHP код:
next_id = 0
for object in self._get_game_location().get_game_objects():
if object.id > next_id: next_id = object.id
next_id += 1
И что? Опять берете максимальный id объектов с текущего острова, а не всех объектов игрока. В случае дубляжа имеем геморрой и головную боль. Я же давал нормальный код получения максимального id из ВСЕХ объектов. Да, немногим дольше определяет, зато исключает проблемы. Учишь, учишь - одни двойки.
Добавлено через 30 минут
Вместо этого куска кода ставьте такой вот красивый строчка
PHP код:
next_id = max([_i.maxGameObjectId for _i in self._get_game_state().get_state().locationInfos]) + 1
и
А что теперь делать с мертвыми деревьями, которые не растут, не двигаются, не удаляются?
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
В первую очередь хочу сказать огроменное спасибище создателю зомбота и тем, кто его активно дополняет и улучшает! Вы герои! Проделали такой большой труд!
Сам я плохо смыслю в программировании и в настройке этого чуда, поэтому у меня большая-пребольшая просьба тем кто знает и умеет: бросьте, пожалуйста, уже настроенные боты на копку у друзей(одна папка) и бот на посадку деревьев (вторая папка), и, если не затруднит, разжевать как ими пользоваться(как например, dark-dragon с 1155 посте писал про мозги). Ато я тут читал, для копки там какие-то айди друзей нужны, а где их брать я так и не понял, для деревьев координаты какие-то, названия деревьев, тоже для меня тёмный лес... Уж простите мою неграмотность...
Сам я пользуюсь двумя ботами, которых мне скинул один хороший человек, за что ему отдельное спасибо! Один для пиратства и рубки, другой для посадки, принятие подарков\пряников, поваров ставит, мешки собирает. Мне они достались уже настроенные, я только свои данные вписал, а уж потом здесь нашёл Zombot GUI ver. 1.0.3, и с помощью него уже выбираю растения и рецепты, острова.
Так вот у меня вопрос по настройке этого рутинного бота, вот он бьет все подряд сокровища, а как его отучить бить некоторые, чтоб бил только с пиратских островов, а яйца, сундук ч., носки не трогал?
Забыл сказать, играю "в контракте"
Последний раз редактировалось glazgo; 11.03.2014 в 20:25.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Прошу помощи для решения трабла с ободом открытия трубы на одном из пиратских островов. Бот вырубает всё и открывает всё,даже когда сильвера стоят, но когда видит возле сильвера трубу сразу ошибку выдаёт.Файл chop и пример трубы возле сильвера прилагаю
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от HotBlood
Хоть бы дочитал , что я писал что там ошибку выдаёт, а не тупо агрился
Я знаю, видел, читал. Извини за грубость, но... куски кода без особых объяснений даются для тех, кто понимает куда и как их вставлять. Если моя твоя не понимать, то лучше спросить автора кода в ЛС (при наличии свободного времени и желания помогут)
Есть предложение. Если вообще не бум-бум в питоне и нету мало-мальских навыков в программировании, в подписи ставить "профан"
Это шутка, но всё же. Я до бота не был знаком ни с питоном, ни с AutoIT (спасибо vintets за гуй). База в программировании не плохая была, не спорю, но всё равно бот изучал первые месяца 2-2,5 сам (не знал я о существовании этого форума), при чем методом научного самотыка Судя по этой ветке, не только мне одному просто интересно, как бот фунциклирует - видать осталась "программа", заложенная еще в совке, первым делом после покупки разобрать
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Вот мой исправленный и дополненный краской, клеем и трансформаторами вариант:
не совсем верно, он же не учитывает те материалы которые есть на складе, в итоге готовит больше чем нужно.
Добавлено через 16 минут
Цитата:
первым делом после покупки разобрать
Добавлено через 2 часа 32 минуты
Цитата:
Вот мой исправленный и дополненный краской, клеем и трансформаторами вариант:
с остальным не разбирался, но мозги пытатся делать на любых островах, и как следствие ошибка исправил так:
Код:
if brains_need < brains_const:
if(obj_id_ostankino != ''):
_i=0
for _i in range(brains_lx):
self.create_items(obj_id_ostankino, "1")
brains_buy.append(dict2obj({u'count': 1L, u'endTime': u'86400000'})) #Добавляем фейк в список купленных мозгов для увеличения счетчика
logger.info (u'Создано мозгов - %d шт.', brains_lx)
Последний раз редактировалось Anch665; 12.03.2014 в 15:28.
Причина: Добавлено сообщение
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от Anch665
с остальным не разбирался, но мозги пытатся делать на любых островах, и как следствие ошибка исправил так:
В моём изначальном коде была проверка на домашний остров, поэтому никто ничего не пытался делать на других островах. Правили сами уже.
И опять последуют вопросы у людей, куды сей код вставлять, и почему не работает