Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от lokanaft
Не удовлетворился там ещё с посадкой деревьев случаем?)
Я его раздербанил. Выделил в отдельную функцию нахождение свободного места. Хочу использовать ещё и в других ботах, чтобы не прописывать пустой участок.
Пока не тестил.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от dark-dragon
А ты как незадействованные поля острова определяешь?
Вручную. Файлов описанных в итемс найти не удалось. Может это и не отдельные файлы а упакованные части в один. Во флэше нашел упоминание, но код для меня китайская грамота.
Добавлено через 3 минуты
Цитата:
Сообщение от lokanaft
Не удовлетворился там ещё с посадкой деревьев случаем?)
Подскажи, как правильно загонять в базу купленные деревья. Чтобы они в дальнейшем были в объектах острова без перезапуска.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось vintets; 05.03.2014 в 21:25.
Причина: Добавлено сообщение
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Всем привет,подскажите плиз,в какой же разделе просить помощи о настройке бота(сбилась настройка подземных сборов урожая)не пойму в чем дело,по началу собирало все нормально,тюльпаны,спиральки,светляки..и т.к далее...а сейчас не работает.Не знаю в какой раздел писать,и просить о помощи...((
Последний раз редактировалось Viokas; 05.03.2014 в 23:15.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от vintets
Вручную. Файлов описанных в итемс найти не удалось. Может это и не отдельные файлы а упакованные части в один. Во флэше нашел упоминание, но код для меня китайская грамота.
Хренова Гадя Петрович. Ну вот как игра сама фильтрует эти поля - загадка века.
Цитата:
Сообщение от vintets
Подскажи, как правильно загонять в базу купленные деревья. Чтобы они в дальнейшем были в объектах острова без перезапуска.
где в X, Y, item и id подставляем данные из эвента покупки дерева.
Ну и jobFinishTime тоже свой для каждого дерева == количество часов на созревание * 3600 * 1000. Хотя в данном контексте думаю не важно, при перезагрузке бот все равно данные считает с сервака правильные.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от dark-dragon
Хренова Гадя Петрович. Ну вот как игра сама фильтрует эти поля - загадка века.
В файлах, только где они?
Веры: "mapFile":"isle_01" - карта
"defaultObjectsFile":["faith_default_objects.xml"] - объекты по умолчанию (может и не нужна).
где в X, Y, item и id подставляем данные из эвента покупки дерева.
Ну и jobFinishTime тоже свой для каждого дерева == количество часов на созревание * 3600 * 1000. Хотя в данном контексте думаю не важно, при перезагрузке бот все равно данные считает с сервака правильные.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от vintets
В файлах, только где они?
Веры: "mapFile":"isle_01" - карта
Нашел я этот файл. Он подгружается немного не в таком виде, а как swf и не один, с ним еще бинарник лезет в нагрузку. Для меня это дебри. Расковырял swf. Там есть такая штука, как EdgeMetrics, отвечающая как раз за поля, но где оно в самой игре прописывается - хз.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от dark-dragon
Нашел я этот файл. Он подгружается немного не в таком виде, а как swf и не один, с ним еще бинарник лезет в нагрузку. Для меня это дебри. Расковырял swf. Там есть такая штука, как EdgeMetrics, отвечающая как раз за поля, но где оно в самой игре прописывается - хз.
Можешь скинуть? Или скажи как взять.
В принципе там тех островов... Нужно сесть и доделать.
Перековырял садитель деревьев. Долго искал одну ошибку. Оказалось нужно учитывать rectX rectY - типа занимает место за пределами объекта. Помните выступает красная тень? Есть не у всех (тень у всех, но не у всех большая).
И теперь поиск места под объект можно вызывать из других модулей.
Острова бы дописать...
PHP код:
# coding=utf-8 import logging from game_actors_and_handlers.base import BaseActor from game_state.game_event import dict2obj, obj2dict import copy
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]
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
need = self._get_item_reader().get(need) space_crd = self.space(current_loc, need) build_cost = self._get_item_reader().get(need.id).buyCoins
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: 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 H = crd['y2'] - crd['y1'] - need.h
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): #ix += 1 for iy in range(need.h): #iy += 1 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) return {'x1':14, 'x2':111, 'y1':12, '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_snow2 Полярной ночи, НЛО, Лысая гора, Большой ёлки, Лунный if(ostrov in ['isle_polar', 'isle_ufo', 'isle_halloween', 'isle_large', 'isle_moon']): 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
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось vintets; 06.03.2014 в 18:45.