Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от dark-dragon
В файле game_engine.py функцию eventLoop меняем таким образом
PHP код:
def eventLoop(self): ''' in a loop, every 30 seconds send EVT request handle EVT response ''' interval = 5 refresh_min = 6 seconds = interval ref_min = [] cir_count = 0 while(self.running()): if cir_count == 2: exit() if seconds >= interval: self.perform_all_actions() if self.get_game_loc().get_location_id() == 'main': cir_count +=1 #logger.info('Ждем %d секунд'%interval) seconds = 0 time.sleep(0.1) seconds += 0.1
cur_time = self.__timer._get_current_client_time() min = int(int(cur_time/1000)/60) if min not in ref_min: if (refresh_min-min)==1: print u'Перезагрузка через %s минуту'%str(refresh_min-min) elif ((refresh_min-min)>=2) and ((refresh_min-min)<=4): print u'Перезагрузка через %s минуты'%str(refresh_min-min) else: print u'Перезагрузка через %s минут'%str(refresh_min-min) ref_min += [min] if min>=refresh_min: ref_min = [] break
Только interval ставим свой, по сути при таком цикле важно только время перехода между островами.
Если нужно несколько циклов, то ставим if cir_count == не 2, а количество циклов + 1, ну и refresh_min меняем на такое время, чтобы не было перезагрузки бота между циклами.
Спасибо.
Последний раз редактировалось Znewf; 17.03.2014 в 04:19.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Всем привет..помогите.
Я хочу открить зомбилето. да?
ВОт я вписал лог и пароль
запускаю файл " Маин"
и запускаеться чтото потом что то там пишет и програма закрываеться!
Почему так?
Добавлено через 2 минуты
Что то типу модоль вконтакте не найден..почему так?
Последний раз редактировалось Сергійко; 16.03.2014 в 12:43.
Причина: Добавлено сообщение
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от ProPein
Можеш скинуть бот на перемещение зданий с пиратского острова на домашний? буду очень благодарен
На пиратском нет зданий.
Блин стоит стянуть что нибудь сразу поднимается бум. Народ, постоянный, обращайтесь по личкам. Не нужно накручивать массовость из школоты и привлекать разработчиков.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от ProPein
Можеш скинуть бот на перемещение зданий с пиратского острова на домашний?
Бот, при чём работающий и выполняющий практически все основные необходимые функции есть в этой теме (в виде ссылок).
Всё остальное - это злые происки вражин и капиталистическая пропаганда. Кто считает иначе - учите python, ковыряйте бот на предмет понимания его фунциклирования и ломайте игру, как будет угодно без привлечения дополнительного внимания разрабов игры к ботоводам. А теперь можно и ногами пинать
Добавлено через 2 минуты
ЗЫ. Бот не сбрасываю никому. У мну там даже черт ногу сломит (а я и подавно), потому как экспериментирую и не использую его на полную мощность.
Последний раз редактировалось dark-dragon; 16.03.2014 в 21:03.
Причина: Добавлено сообщение
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Посадка деревьев просто супер, протестил, БОЛЬШОЕ СПАСИБО
но одно НО
главный остров сделан целиком..как бы разделить посадку деревьев по частям или хотя б чтоб он не садил за забором (там у меня декор для копки. здания, флаги и бригада).
В идеале хотелось разделить посадку на главном на 3 части (основное, за забором и на горе)
Просьба исполнить этот каприз. думаю это будет необходимо многим
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от trollolo5
Посадка деревьев просто супер, протестил, БОЛЬШОЕ СПАСИБО
но одно НО
главный остров сделан целиком..как бы разделить посадку деревьев по частям или хотя б чтоб он не садил за забором (там у меня декор для копки. здания, флаги и бригада).
В идеале хотелось разделить посадку на главном на 3 части (основное, за забором и на горе)
Просьба исполнить этот каприз. думаю это будет необходимо многим
Да НЭ вАпрос
PHP код:
# coding=utf-8
import logging
from game_actors_and_handlers.base import BaseActor
from game_state.game_event import dict2obj, obj2dict
import copy
# зоны для домашнего
submap = [
u'снизу от дороги',
u'сверху от дороги',
#u'за забором',
#u'на горе'
]
#-----------------------------------------------------------------------
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, submap)
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
'''
next_id = max([_i.maxGameObjectId for _i in self._get_game_state().get_state().locationInfos]) + 1
for object in self._get_game_location().get_game_objects():
if object.id > next_id: next_id = object.id
next_id += 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 current_loc != u'main' and (k[0] == '8' or k[0] == '9'):
x = int(k[:1])
y = int(k[1:])
else:
x = int(k[:2])
y = int(k[2:])
def space(self, location, need, submap=[]):
for rect in list(need.rects):
if rect.rectW > 0 and rect.rectH > 0:
need.w = int(rect.rectW)
need.h = int(rect.rectH)
#перебор объектов на острове
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)
# 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)
if submap != []:
if not u'снизу от дороги' in submap:
add = [ str(i)+''+str(j) for i in range(14,54) for j in range(48,100)]
map.extend(add)
if not u'сверху от дороги' in submap:
add = [ str(i)+''+str(j) for i in range(60,112) for j in range(48,100)]
map.extend(add)
if not u'за забором' in submap:
add = [ str(i)+''+str(j) for i in range(14,48) for j in range(12,48)]
map.extend(add)
if not u'на горе' in submap:
add = [ str(i)+''+str(j) for i in range(62,128) for j in range(0,30)]
map.extend(add)
return {'x1':14, 'x2':127, 'y1':0, 'y2':99}, map
# 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 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
"за забором" условно, т.к. давно никакого забора нет и точно не знаю где проходит. Разделил на уровне за дорогой
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось vintets; 19.04.2014 в 11:51.