|
Zombot (Клиент для игры Зомби ферма) [Обсуждение] - Свободное обсуждение - Ваши идеи, вопросы и ответы на тему браузерных игр и социальных сетей |
02.06.2014, 02:19
|
#2326
|
|
|
|
Разведчик
|
Регистрация: 24.09.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
кто нибуть сделайте что б удобряло грядки пожалуйста я даже скину 20 изума за роботу
|
|
|
02.06.2014, 11:19
|
#2327
|
|
|
|
Пехотинец
|
Регистрация: 01.08.2012
Сообщений: 95
Популярность: 255
Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
Цитата: |
|
|
|
|
Сообщение от maks1995star |
|
|
|
|
|
|
|
кто нибуть сделайте что б удобряло грядки пожалуйста я даже скину 20 изума за роботу
|
|
|
|
|
|
Зачем размахивать изюмом на ветке бота? Кому он нужен. Или тут есть такие кто за изюм пишет?
from game_actors_and_handlers.plants import FertilPlantBot
FertilPlantBot, # Удобрение растений (красным)
PHP код:
class FertilPlantBot(BaseActor): def perform_action(self): fertil='@RED_FERTILIZER' fertil_count=self._get_game_state().count_in_storage(fertil) if (fertil_count==None) or (fertil_count==0): #logger.info(u'Нет удобрений') return fl_count=fertil_count logger.info(u'Имеются удобрения в количестве: %d' % (fertil_count)) harvestItems = self._get_game_location().get_all_objects_by_type(GamePlant.type) fert_all = [] for harvestItem in list(harvestItems): if not self._get_timer().has_elapsed(harvestItem.jobFinishTime): if not harvestItem.fertilized: if harvestItem.type == GamePlant.type: if fl_count>0: fert_event = GameFertilizeTree(itemId = unicode(fertil[1:]), objId = harvestItem.id) harvestItem.jobFinishTime = self._get_timer()._get_current_client_time() harvestItem.fertilized = True fert_all += [fert_event] fl_count -= 1 if len(fert_all)>0: self._get_events_sender().send_game_events(fert_all) logger.info(u'Удобрено %d растений' % (fertil_count-fl_count)) self._get_game_state().remove_from_storage(fertil,fertil_count-fl_count)
Последний раз редактировалось vintets; 02.06.2014 в 11:22.
|
|
|
02.06.2014, 14:56
|
#2328
|
|
|
|
Разведчик
|
Регистрация: 19.07.2012
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Есть предложения реализовать функцию которая будет сканировать друзей и выводить в отдельный, всех кто в тюрьме и людей попадающий под определённый уровень( к примеру ниже 20), да бы можно было почистить друзей в приложении, а потом этот список засунуть в vkbot и по удалять.
Так же мб возможно сканировать друзей вк и в зф и выделить тех кто не играет и удалить.На данный момент тем же vkbot ботом достаю список друзей в вк +переделанный бот который засовывает id всех друзей в список + программа для сравнения текстов и так удаляю, слишком долго(
|
|
|
02.06.2014, 16:04
|
#2329
|
|
|
|
Пехотинец
|
Регистрация: 01.08.2012
Сообщений: 95
Популярность: 255
Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
Цитата: |
|
|
|
|
|
|
|
|
|
Есть предложения реализовать функцию которая будет сканировать друзей и выводить в отдельный, всех кто в тюрьме и людей попадающий под определённый уровень( к примеру ниже 20), да бы можно было почистить друзей в приложении, а потом этот список засунуть в vkbot и по удалять.
Так же мб возможно сканировать друзей вк и в зф и выделить тех кто не играет и удалить.На данный момент тем же vkbot ботом достаю список друзей в вк +переделанный бот который засовывает id всех друзей в список + программа для сравнения текстов и так удаляю, слишком долго(
|
|
|
|
|
|
В def add_users_info(self, event_to_handle): добавляем (всё в кучу для простоты)
PHP код:
try: with open('low_level.txt', 'r') as f: self.__game_state_.low_level = eval(f.read()) except: self.__game_state_.low_level = [] try: with open('banned.txt', 'r') as f: self.__game_state_.banned = eval(f.read()) except: self.__game_state_.banned = [] lovl = [] banned = [] for n in event_to_handle.players: if hasattr(n, 'level') and int(n.level) < 20 and (n.id not in self.__game_state_.low_level): lovl.append(n.id) if hasattr(n, 'banned') and n.banned and (n.id not in self.__game_state_.banned): banned.append(n.id) if lovl: self.__game_state_.low_level.extend(lovl) with open('low_level.txt', 'w') as f: f.write(str(self.__game_state_.low_level)) if banned: self.__game_state_.banned.extend(banned) with open('banned.txt', 'w') as f: f.write(str(self.__game_state_.banned))
Получаем список с уровнем до 20 low_level.txt
И список забаненных banned.txt
Последний раз редактировалось vintets; 02.06.2014 в 16:42.
|
|
|
02.06.2014, 18:04
|
#2330
|
|
|
|
Разведчик
|
Регистрация: 24.09.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
|
|
02.06.2014, 18:41
|
#2331
|
|
|
|
Разведчик
|
Регистрация: 25.05.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
А не подскажешь в каком файле этот def ?
|
|
|
02.06.2014, 20:25
|
#2332
|
|
|
|
Разведчик
|
Регистрация: 31.05.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Напишите пожалуйста подробный ( пошаговый) мануал к установке и настройке zombotа. Столкнулся с проблемой при его запуске, Python до этого ни разу не пользовался, возможно, что-либо напутал. Помогите пожалуйста.....
|
|
|
02.06.2014, 22:54
|
#2333
|
|
|
|
Пехотинец
|
Регистрация: 01.08.2012
Сообщений: 95
Популярность: 255
Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
|
|
03.06.2014, 01:59
|
#2334
|
|
|
|
Разведчик
|
Регистрация: 19.07.2012
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
|
|
03.06.2014, 19:03
|
#2335
|
|
|
|
Разведчик
|
Регистрация: 09.07.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Помогите в чем дело ? http://i.zhyk.ru/?v=S1CjR.jpg
PHP код:
# coding=utf-8 import logging from game_state.game_types import GamePlant, GameFruitTree, GameSlag,\ GameDigItem, GamePickItem, GameBuyItem, GameSellItem, GameUseStorageItem, GameFertilizeTree from game_state.item_reader import LogicalItemReader from game_actors_and_handlers.base import BaseActor
logger = logging.getLogger(__name__)
class FertilBot(BaseActor): def perform_action(self): fertil='@RED_TREE_FERTILIZER' fertil_count=self._get_game_state().count_in_storage(fertil) if (fertil_count==None) or(fertil_count==0): #logger.info(u'Нет удобрений') return fl_count=fertil_count logger.info(u'Имеются удобрения в количестве: %d' % (fertil_count)) harvestItems = self._get_game_location().get_all_objects_by_type(GameFruitTree.type) fert_all = [] for harvestItem in list(harvestItems): if not self._get_timer().has_elapsed(harvestItem.jobFinishTime): if not harvestItem.fertilized: if harvestItem.type == GameFruitTree.type: if fl_count>0: fert_event = GameFertilizeTree(itemId = unicode(fertil[1:]), objId = harvestItem.id) harvestItem.jobFinishTime = self._get_timer()._get_current_client_time() harvestItem.fertilized = True fert_all += [fert_event] fl_count -= 1 if len(fert_all)>0: self._get_events_sender().send_game_events(fert_all) logger.info(u'Удобрено %d деревьев' % (fertil_count-fl_count)) self._get_game_state().remove_from_storage(fertil,fertil_count-fl_count)
class UseEggItemBot(BaseActor):
def perform_action(self): # 'EGG_01' Бэйби-сюрприз # 'EGG_02' Простое # 'EGG_03' Непростое # 'EGG_04' Русское # 'EGG_05' Пингвин-яйцо # 'EGG_07' Ромашковое # 'EGG_08' Сердешное # 'EGG_09' Глазное # 'EGG_10' Медовое # 'EGG_11' Цитрусовое # 'EGG_12' Цветное # 'EGG_13' Детское # 'EGG_15' Звёздное # 'EGG_16' Расписное # 'EGG_17' Васильковое # 'EGG_18' Строгое # 'EGG_19' Ананасное # 'EGG_20' Клубничное # 'EGG_21' Арбузное # 'EGG_22' Вейдер-сюрприз # 'EGG_33' Полосатое #Добавил я Cheat Cheater # 'EGG_34' Сюрприз повара #Добавил я Cheat Cheater # 'EGG_31' Рогатое #Добавил я Cheat Cheater # 'EGG_10' Медовое #Добавил я Cheat Cheater # 'EGG_24' Картман-сюрприз #Добавил я Cheat Cheater # 'EGG_06_ADMIN'\ 'EGG_06' Зомби сюрприз #Добавил я Cheat Cheater # 'EGG_27' Губка-сюрприз #Добавил я Cheat Cheater # 'EGG_25' Дизайнерское #Добавил я Cheat Cheater # 'EGG_26' Термо яйцо #Добавил я Cheat Cheater # 'EGG_23' Бендер сюрприз #Добавил я Cheat Cheater # 'WEALTH_BOTTLE' Бутылка #Добавил я Cheat Cheater # 'WEALTH_ROLL' Свиток #Добавил я Cheat Cheater # 'WEALTH_VASE' Ваза #Добавил я Cheat Cheater # 'WEALTH_BOWL' Чаша #Добавил я Cheat Cheater # 'WEALTH_SEQ' Связка бррёвен секвойи #Добавил я Cheat Cheater # 'WEALTH_CASKET' Шкатулка #Добавил я Cheat Cheater # 'WEALTH_WOODPALM' Связка брёвен пальмы #Добавил я Cheat Cheater # 'WEALTH_WHITEM' Груда белого мрамора #Добавил я Cheat Cheater # 'WEALTH_BLACKM' Груда черного мрамора #Добавил я Cheat Cheater # 'WEALTH_MARBLE' Груда зеленого мрамора #Добавил я Cheat Cheater # 'WEALTH_SKULL' Череп #Добавил я Cheat Cheater # 'SOCK_NY_BIG' Носок Изобилия #Добавил я Cheat Cheater # 'SOCK_NY_MIDDLE' Полярный носок #Добавил я Cheat Cheater # 'MONSTER_BOX_0' Сундук чудовища # 'MONSTER_BOX_1' Сундук чудовища # 'MONSTER_BOX_2' Сундук чудовища # 'MONSTER_BOX_3' Сундук чудовища # 'MONSTER_BOX_4' Сундук чудовища # 'FREE_NY_BOX' вскрывать сюрпризы use_items = ['EGG_01','EGG_02','EGG_03','EGG_04','EGG_05','EGG_07','EGG_08','EGG_09','EGG_10','EGG_11','EGG_12','EGG_13','EGG_15','EGG_16','EGG_17','EGG_18','EGG_19','EGG_20','EGG_21','EGG_22','EGG_23','EGG_25','EGG_26','EGG_33','EGG_34','MONSTER_BOX_0','MONSTER_BOX_1','MONSTER_BOX_2','MONSTER_BOX_3','MONSTER_BOX_4','TURKEY_BOX','WEALTH_BOTTLE','WEALTH_ROLL','WEALTH_VASE','WEALTH_BOWL','WEALTH_SEQ','WEALTH_CASKET','WEALTH_WOODPALM','WEALTH_WHTEM','WEALTH_BLACKM','WEALTH_MARBLE','WEALTH_SKULL','SOCK_NY_BIG_BOX','SOCK_NY_MIDDLE_BOX','MONSTER_BOX_0','MONSTER_BOX_1','MONSTER_BOX_2','MONSTER_BOX_3','MONSTER_BOX_4','FREE_NY_BOX'] #use_items = {'EGG_01','EGG_02','EGG_03','EGG_04','EGG_05','EGG_07','EGG_08','EGG_09','EGG_10','EGG_11','EGG_12','EGG_13','EGG_15','EGG_16','EGG_17','EGG_18','EGG_19','EGG_20','EGG_21','EGG_22'} for use_item in use_items: got_items=self._get_game_state().count_in_storage('@'+use_item) if got_items>0: logger.info(u'Бьем "%s" в количестве = %d' % (self._get_item_reader().get(use_item).name, got_items)) col=got_items/10 for i in range(col): for j in range(10): #sell_event = {"x":10,"action":"useStorageItem","y":10,"itemId":use_item,"type":"item"} sell_event = GameUseStorageItem(itemId=unicode(use_item), y=long(10), x=long(10)) self._get_events_sender().send_game_events([sell_event]) self._get_game_state().remove_from_storage('@'+use_item,1) if (got_items-(col*10))>0: events=[] for j in range(got_items-(col*10)): sell_event = GameUseStorageItem(itemId=unicode(use_item), y=long(10), x=long(10)) self._get_events_sender().send_game_events([sell_event]) self._get_game_state().remove_from_storage('@'+use_item,1) logger.info(u'Разбито %d "%s"' % (got_items, self._get_item_reader().get(use_item).name))
class HarvesterBot(BaseActor):
def perform_action(self): # Растения plants = self._get_game_location().get_all_objects_by_type( GamePlant.type) # Деревья trees = self._get_game_location().get_all_objects_by_type( GameFruitTree.type) harvestItems = plants + trees pick_name={} pick_events = []
for harvestItem in list(harvestItems): pick_event = self._pick_harvest(harvestItem,pick_name) if pick_event: pick_events.append(pick_event) if len(pick_name.keys())>0: for i in pick_name.keys(): logger.info(u"Собрали %d '%s'"%(pick_name[i],i)) self._get_events_sender().send_game_events(pick_events)
slags = self._get_game_location().get_all_objects_by_type( GameSlag.type) dig_events = [] dig_name={} for slag in list(slags): item = self._get_item_reader().get(slag.item) if item.name in dig_name.keys(): dig_name[item.name]+=1 else: dig_name[item.name]=1 dig_event = GameDigItem(slag.id) dig_events.append(dig_event) # convert slag to ground slag.type = 'base' slag.item = '@GROUND' if len(dig_name.keys())<>0: self._get_events_sender().send_game_events(dig_events) for i in dig_name.keys(): logger.info(u"Вскопали %d '%s'"%(dig_name[i],i))
def _pick_harvest(self, harvestItem,pick_name): if self._get_timer().has_elapsed(harvestItem.jobFinishTime): item = self._get_item_reader().get(harvestItem.item) if item.name in pick_name.keys(): pick_name[item.name]+=1 else: pick_name[item.name]=1 pick_event = GamePickItem(objId=harvestItem.id)
# Добавляем в game_state информацию о собранном предмете item_count=0 if harvestItem.type == GameFruitTree.type: item_id=self._get_item_reader().get(harvestItem.item).storageItem else: item_id=harvestItem.item self._get_game_state().add_from_storage(item_id,1) # Если собрали золиан - удалить обьект т.к. грядки больше нет if harvestItem.item in u'@P_43': self._get_game_location().remove_object_by_id(harvestItem.id) if harvestItem.type == GamePlant.type: # convert plant to slag harvestItem.type = GameSlag.type harvestItem.item = GameSlag(0L, 0L, 0L).item elif harvestItem.type == GameFruitTree.type: harvestItem.fruitingCount -= 1 if harvestItem.fruitingCount == 0: # remove fruit tree self._get_game_location().remove_object_by_id( harvestItem.id) # harvestItem.type = GamePickItem.type # TODO convert to pickup box # convert tree to pick item return pick_event
class SeederBot(BaseActor):
def perform_action(self): # Активация # {"x":3,"type":"item","y":22,"action":"useStorageItem","itemId":"BS_BUFF_FIX_HARVEST_1"} # {"x":3,"type":"item","y":22,"action":"useStorageItem","itemId":"BS_BUFF_FIX_DIGGER1"} # GameUseStorageItem(itemId=unicode("BS_BUFF_FIX_HARVEST_1"), y=long(22), x=long(3)) # GameUseStorageItem(itemId=unicode("BS_BUFF_FIX_DIGGER1"), y=long(22), x=long(3)) # 5-мин урожай max_harv_time = 0 for l in self._get_game_state().get_state().buffs.list: if 'BUFF_FIX_HARVEST' in l.item: exp_time = float(l.expire.endDate) if max_harv_time < exp_time : max_harv_time = exp_time
time_harvest = (max_harv_time-self._get_timer()._get_current_client_time())/1000.0 time_harvest=int(time_harvest) if time_harvest<0: time_harvest=0 s=time_harvest-int((int(time_harvest/60.0)-(int(int(time_harvest/60.0)/60.0)*60))*60)-int((int(int(time_harvest/60.0)/60.0))*60*60) m=int(time_harvest/60.0)-(int(int(time_harvest/60.0)/60.0)*60) h=int(int(time_harvest/60.0)/60.0) if time_harvest<>0: logger.info(u'Осталось 5-мин урожая: %d:%d:%d' % (h,m,s))
seed_items = self._get_options() if (seed_items<>None) and (seed_items<>'None'): buy_events = [] grounds = self._get_game_location().get_all_objects_by_type('ground') location = self._get_game_state().get_game_loc().get_location_id() if type(seed_items)==type(''): seed_item = self._get_item_reader().get(seed_items) elif type(seed_items)==type({}): if location in seed_items.keys(): seed_id = seed_items[location] else: seed_id = seed_items['other'] if seed_id=='None': return seed_item = self._get_item_reader().get(seed_id) else: seed_item=seed_items if not self._is_seed_available(seed_item): logger.info(u'Это растение здесь сажать запрещено') return all_event = [] for ground in list(grounds): item = self._get_item_reader().get(ground.item) buy_event = GameBuyItem(unicode(seed_item.id), ground.id, ground.y, ground.x) all_event += [buy_event] buy_events.append(buy_event) ground.type = u'plant' ground.item = unicode(seed_item.id)
if len(all_event)>0: self._get_events_sender().send_game_events(buy_events) logger.info(u'Посеяли %d "%s"'%(len(all_event),seed_item.name))
def _is_seed_available(self, seed_item): seed_reader = GameSeedReader(self._get_item_reader()) game_state = self._get_game_state() return seed_reader.is_item_available(seed_item, game_state)
class GameSeedReader(LogicalItemReader):
def _get_item_type(self): return 'seed'
def _get_all_item_ids(self): return self._item_reader.get('shop').seed
class PlantEventHandler(object): def __init__(self, game_location): self.__game_location = game_location
def handle(self, event_to_handle): gameObject = self.__game_location.get_object_by_id( event_to_handle.objId ) if gameObject is None: logger.critical("OMG! No such object") return else: gameObject.fertilized = True #logger.info(u'Растение посажено') gameObject.jobFinishTime = event_to_handle.jobFinishTime gameObject.jobStartTime = event_to_handle.jobStartTime class SendGiftBot(BaseActor): def perform_action(self): user_id = "22362945" # Кому слать - http://vk.com/id777777777 #item_id = "@CR_53" # что слать - "@CR_53" это болт! ; "@CAKE_RABBIT" - пасхальный пряник ; "@CR_55" - фанера; "@S_03" - клевер ; "@CR_121" бигуди ; "@C_14_4" - кукла .... и т.п. #item_id = "@CR_53" # что слать - "@CR_53" это болт! ; "@CAKE_RABBIT" - пасхальный пряник ; "@CR_55" - фанера; "@S_03" - клевер ; "@CR_121" бигуди ; "@C_14_4" - кукла .... и т.п. item_id = "@CR_53" # что слать - "@CR_53" это болт! ; "@CAKE_RABBIT" - пасхальный пряник ; "@CR_55" - фанера; "@S_03" - клевер ; "@CR_121" бигуди ; "@C_14_4" - кукла .... и т.п. msg =u"." count = 30 # сколько раз отправить item_count = 1 # но по одной штуке в каждой например idc = 30 # счетчик какойто фик знает зачем он там но пусть будет for k in range(count): ev0 = [{"type":"gift","action":"sendGift","gift":{"user":user_id, "count":item_count, "item":item_id, "msg":msg},"id":idc+k}] self._get_events_sender().send_game_events(ev0) logger.info(u'отправил предметы # %d пользователю id%s' % (k, user_id))
Последний раз редактировалось Miha88; 03.06.2014 в 19:07.
|
|
|
03.06.2014, 19:27
|
#2336
|
|
|
|
Разведчик
|
Регистрация: 25.05.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
Цитата: |
|
|
|
|
|
|
|
|
|
В гейменжине, после того как добавишь туда конечно. Читай пост про дарение бесплаток.
|
|
|
|
|
|
НЕ работает все равно
Код:
# coding=utf-8
import random
import ssl
import message_factory
from message_factory import Session
import vkontakte
from settings import Settings
import vkutils
import logging
import time
from game_state.item_reader import GameItemReader
from game_state.game_event import dict2obj, obj2dict
from game_state.game_types import GameEVT, GameTIME, GameSTART, GameInfo, GameFertilizePlant, GamePlayGame, GameStartGainMaterial, GameStartTimeGainEvent
import pprint
from game_actors_and_handlers.wand_build import MagicWandBuild
from game_actors_and_handlers.premium_gifts import PremiumGifts
from game_actors_and_handlers.airplane_sell import TiketReceiverBot
from game_actors_and_handlers.treeplant import TreePlant
from game_actors_and_handlers.gifts import GiftReceiverBot, AddGiftEventHandler, CakesReceiverBot,FreeGifts
from game_actors_and_handlers.plants import HarvesterBot, SeederBot, PlantEventHandler, GameSeedReader, UseEggItemBot, FertilBot
from game_actors_and_handlers.roulettes import RouletteRoller, GameResultHandler, FrutRouletteRoller
from game_actors_and_handlers.wood_graves import WoodPicker, WoodTargetSelecter
from game_actors_and_handlers.cook_graves import BrewPicker, CookerBot, RecipeReader, CookSpeed
from game_actors_and_handlers.digger_graves import BagsPicker, TimeGainEventHandler
from game_actors_and_handlers.stone_graves import StonePicker, StoneTargetSelecter
from game_actors_and_handlers.search_buff import GameBuffDigger
from game_actors_and_handlers.workers import GainMaterialEventHandler
from game_actors_and_handlers.pickups import Pickuper, AddPickupHandler,BoxPickuper
from game_actors_and_handlers.location import ChangeLocationBot, GameStateEventHandler
#from game_actors_and_handlers.friends import VisitingUsers
from game_state.brains import PlayerBrains
from game_actors_and_handlers.wand import MagicWand
from game_actors_and_handlers.harvest_buff import GameBuffHarvest
#from game_actors_and_handlers.friend_dig import FriendDigger
from game_actors_and_handlers.exchange_collection import GameBrains
from game_actors_and_handlers.chop import PirateTreeCut
from game_actors_and_handlers.trade import TraderWork
from game_actors_and_handlers.extra_money import HarvestExchange
from game_actors_and_handlers.building_buyer import BuildingBuyer
import socket
import urllib2
from game_actors_and_handlers.burrowing import DigBot
from game_actors_and_handlers.storage import SellBot
from game_actors_and_handlers.missions import GetMissionsBot, ViewMissions
logger = logging.getLogger(__name__)
class GameLocation():
def __init__(self, item_reader, game_location, game_objects):
self.__item_reader = item_reader
self.__game_location = game_location
self.__game_objects = game_objects
self.__pickups = []
def append_object(self, obj):
self.get_game_objects().append(obj)
def get_game_location(self):
return self.__game_location
def get_game_objects(self):
#open("game_location.txt","w").write(str(obj2dict(self.get_game_location())))
#return self.get_game_location().gameObjects
return self.__game_objects
def get_location_id(self):
return self.__game_location.id
def get_all_objects_by_types(self, object_types):
objects = []
for game_object in self.get_game_objects():
item = self.__item_reader.get(game_object.item)
if game_object.type in object_types or item.type in object_types:
objects.append(game_object)
return objects
def get_all_objects_by_type(self, object_type):
return self.get_all_objects_by_types([object_type])
def get_object_by_id(self, obj_id):
for game_object in self.get_game_objects():
if game_object.id == obj_id:
return game_object
return None
def log_game_objects(self):
for gameObject in self.get_game_objects():
# if gameObject.type != 'base':
logger.info(obj2dict(gameObject))
def remove_object_by_id(self, obj_id):
for game_object in list(self.get_game_objects()):
if game_object.id == obj_id:
self.get_game_objects().remove(game_object)
def get_pickups(self):
return tuple(self.__pickups)
def add_pickups(self, pickups):
self.__pickups += pickups
def remove_pickup(self, pickup):
self.__pickups.remove(pickup)
class GameTimer(object):
def __init__(self):
self._client_time = 0
self._start_time = 0
def _get_client_time(self):
random.seed()
self._client_time = long(random.randrange(2800, 4000))
self._start_time = time.time()
return self._client_time
def _get_current_client_time(self):
'''
returns the current in-game time (in milliseconds)
'''
currentTime = self._client_time
currentTime += (time.time() - self._start_time) * 1000
return currentTime
def _add_sending_time(self, sending_time):
self._client_time += sending_time
def has_elapsed(self, time):
return int(time) <= self._get_current_client_time()
class GameEventsSender(object):
def __init__(self, request_sender):
self.__events_to_handle = []
self.__request_sender = request_sender
def print_game_events(self):
if len(self.__events_to_handle) > 0:
logger.debug("received events: %s" % self.__events_to_handle)
def get_game_events(self):
return list(self.__events_to_handle)
def send_game_events(self, events=[]):
'''
Returns key (string) and time (int)
'''
if len(events) > 0:
logger.debug("events to send: %s" % events)
command = GameEVT(events=events)
game_response = self.__request_sender.send(command)
self.__events_to_handle += game_response.events
def remove_game_event(self, event):
self.__events_to_handle.remove(event)
class GameInitializer():
def __init__(self, timer, site):
self.__timer = timer
self.__site = site
def create_events_sender(self):
return GameEventsSender(self.__request_sender)
def start(self):
logger.info('Загружаем остров...')
# send TIME request (http://java.shadowlands.ru/zombievk/go)
# handle redirect (save new url: http://95.163.80.20/zombievk)
# parse auth key and time id
session_key, server_time = self.get_time()
# send START
start_response, friendsid = self.start_game(server_time, session_key)
logger.info('Остров загружен!')
return start_response, friendsid, server_time
def get_time(self):
'''
Returns key (string) and time (int)
'''
self.__request_sender = self.__create_request_sender()
key = self.__site.get_time_key()
command = GameTIME(key=key)
response = self.__request_sender.send(command)
return response.key, response.time
def __create_request_sender(self):
api_user_id, game_auth_key, api_access_token, connection = self.__site.get_game_params()
self.__api_access_token = api_access_token
self.__connection = connection
self.__session = Session(api_user_id, game_auth_key,
client_version=Game.CLIENT_VERSION)
factory = message_factory.Factory(self.__session, None)
request_sender = RequestSender(factory,
self.__connection)
self.__factory = factory
return request_sender
def start_game(self, server_time, session_key):
self.__factory.setRequestId(server_time)
self.__factory.setSessionKey(session_key)
client_time = self.__timer._get_client_time()
start_time = time.time()
#print client_time, start_time
command, friendsid = self.__site.create_start_command(server_time, client_time)
sending_time = (time.time() - start_time) * 1000
self.__timer._add_sending_time(sending_time)
return self.__request_sender.send(command),friendsid
def _getUserInfo(self):
'''
returns user info using vk api
'''
# get vk user info
api = vkontakte.api.API(token=self.__api_access_token)
info = api.getProfiles(
uids=self.__session.getUserId(), format='json',
fields='bdate,sex,first_name,last_name,city,country')
info = info[0]
if 'bdate' in info:
bdate = info['bdate']
else:
bdate = None
my_country = api.places.getCountryById(cids=int(info['country']))[0]
info['country'] = my_country['name']
my_city = api.places.getCityById(cids=int(info['city']))[0]
info['city'] = my_city['name']
game_info = GameInfo(city=info['city'], first_name=info['first_name'],
last_name=info['last_name'],
uid=long(info['uid']), country=info['country'],
sex=long(info['sex']), bdate=bdate)
return game_info
class GameState():
def __init__(self, start_response, item_reader):
self.__item_reader = item_reader
self.__game_state = start_response.state
game_state_event = start_response.params.event
self.set_game_loc(game_state_event)
self.__player_brains = PlayerBrains(self.__game_state,
self.get_game_loc(),
item_reader)
total_brain_count = self.__player_brains.get_total_brains_count()
occupied_brain_count = self.__player_brains.get_occupied_brains_count()
logger.info("")
logger.info("Мозги: %d/%d" % (occupied_brain_count, total_brain_count))
x=0
z=0
for burySlot in self.__game_state.burySlots:
x+=1
if (hasattr(burySlot, u"user") is True): z+=1
logger.info("Использование слотов для закопки друзей: %d/%d" % (z,x))
if len(self.__game_state.buyedBrains)<>0:
logger.info("Купленные:")
x=1
for buyed_brain in self.__game_state.buyedBrains:
ms=int(buyed_brain.endTime)-((int(buyed_brain.endTime)/1000)*1000)
s=(int(buyed_brain.endTime)/1000)-(((int(buyed_brain.endTime)/1000)/60)*60)
m=((int(buyed_brain.endTime)/1000)/60)-((((int(buyed_brain.endTime)/1000)/60)/60)*60)
h=((int(buyed_brain.endTime)/1000)/60)/60
logger.info("%d. Время окончания: %d:%d:%d.%d"%(x,h,m,s,ms))
x+=1
logger.info("")
logger.info("Уровень игрока: "+str(self.__game_state.level))
s=''
for i in range(len(str(self.__game_state.gameMoney)),0,-3):
if i>=3: s=str(self.__game_state.gameMoney)[i-3:i]+'.'+s
else: s=str(self.__game_state.gameMoney)[:i]+'.'+s
logger.info("Деньги игрока: "+s[:-1])
logger.info("")
def set_game_loc(self, game_state_event):
self.__game_loc = GameLocation(self.__item_reader,
game_state_event.location,game_state_event.gameObjects)
for attr, val in game_state_event.__dict__.iteritems():
self.__game_state.__setattr__(attr, val)
#self.get_game_loc().log_game_objects()
def get_location_id(self):
return self.get_state().locationId
def get_game_loc(self):
return self.__game_loc
def get_state(self):
return self.__game_state
def get_brains(self):
return self.__player_brains
def has_in_storage(self, item_id, count):
for itemid in self.__game_state.storageItems:
if hasattr(itemid, "item"):
if itemid.item == item_id:
return itemid.count >= count
return False
def count_in_storage(self, item_id):
for itemid in self.__game_state.storageItems:
if hasattr(itemid, "item"):
if itemid.item == item_id:
return itemid.count
return 0
def remove_from_storage(self, item_id, count):
for itemid in self.__game_state.storageItems:
if hasattr(itemid, "item"):
if itemid.item == item_id:
itemid.count -= count
return True
return False
def add_from_storage(self, item_id, count):
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)
def add_pirate_instruments(self, item_id, count):
for itemid in self.__game_state.pirate.instruments:
if hasattr(itemid, "item"):
if itemid.item == item_id:
itemid.count += count
return
self.set_pirate_instruments(item_id, count)
def set_pirate_instruments(self, item_id, count):
itemid=dict2obj({u'item': item_id, u'count': count})
self.__game_state.pirate.instruments.append(itemid)
class Game():
#CLIENT_VERSION = long(1362084734)
#CLIENT_VERSION = long(1378103895)
CLIENT_VERSION = long(1382714383)
def __init__(self, site, settings,
user_prompt, game_item_reader=None, gui_input=None):
logger.info('Логинимся...')
self.__timer = GameTimer()
self.__game_initializer = GameInitializer(self.__timer, site)
self.__settings = settings
self.__itemReader = game_item_reader
self.__user_prompt = user_prompt
self.__selected_seed = None
self.__selected_recipe = None
self.__selected_location = None
self.__receive_gifts_with_messages = False
self.__receive_non_free_gifts = False
self.__gui_input = gui_input
# load settings
self.__ignore_errors = settings.get_ignore_errors()
self.__selected_recipe = settings.getUserCook()
self.__selected_seed = settings.getUserSeed()
self.__selected_sell = settings.getUserSell()
self.__selected_send = settings.getUserSend()
self.__setting_view = settings.GetUserView()
self.__selected_loc_setting = settings.getUserLoc()
print ''
if self.__selected_seed<>None:
if (self.__selected_seed=='None'): print u'Выбранные семена: ничего не сажать'
else:
if type(self.__selected_seed)==type(''): print u'Выбранные семена: везде "%s"'%str(self.__selected_seed)
else:
print u'Выбранные семена (остров - семена):'
for loc in self.__selected_seed.keys():
if len(loc)>6: print u'\t%s\t-\t"%s"'%(str(loc),str(self.__selected_seed[loc]))
else: print u'\t%s\t\t-\t"%s"'%(str(loc),str(self.__selected_seed[loc]))
print ''
if self.__selected_recipe<>None:
if (self.__selected_recipe=='None'): print u'Выбранные рецепты: ничего не варить'
else:
if type(self.__selected_recipe)==type(''): print u'Выбранные рецепты: везде "%s"'%str(self.__selected_recipe)
elif type(self.__selected_recipe)==type([]): print u'Выбранные рецепты: везде "%s"'%str(', '.join(self.__selected_recipe))
else:
print u'Выбранные семена (остров - рецепт):'
for loc in self.__selected_recipe.keys():
if len(loc)>6: print u'\t%s\t-\t"%s"'%(str(loc),str(self.__selected_recipe[loc]))
else: print u'\t%s\t\t-\t"%s"'%(str(loc),str(self.__selected_recipe[loc]))
if (self.__selected_sell==None): print u'Предметы на продажу: ничего не продавать'
else:
print u'Предметы на продажу (предмет - сколько оставить):'
for item in self.__selected_sell.keys():
print u'\t"%s"\t\t-\t%s'%(str(item),str(self.__selected_sell[item]))
print ''
print u'Настройки показа:'
if (self.__setting_view['pickup']): print u'\tПоказывать подбираемые предметы'
else: print u'\tНе показывать подбираемые предметы'
if (self.__setting_view['location_send']): print u'\tПоказывать перешедшую локацию'
else: print u'\tНе показывать перешедшую локацию'
print ''
def select_item(self, reader_class, prompt_string):
item_reader = reader_class(self.__itemReader)
available_items = item_reader.get_avail_names(self.__game_state_)
item_name = self.__user_prompt.prompt_user(prompt_string,
available_items)
return item_reader.get_by_name(item_name)
def select_plant_seed(self):
if self.__selected_seed is None:
self.__selected_seed = self.select_item(GameSeedReader,
u'Семена для грядок:')
def select_recipe(self):
if self.__selected_recipe is None:
self.__selected_recipe = self.select_item(RecipeReader,
u'Рецепт для поваров:')
def select_location(self):
logger.info('Доступные острова:')
logger.info('(+ платный, - бесплатный, ? - пещера)')
locations_nfree = [u'isle_01', 'isle_small', 'isle_star', 'isle_large', 'isle_moon', 'isle_giant', 'isle_xxl', 'isle_desert']
locations_nwalk = [u'un_0'+str(x+1) for x in range(9)]
locations = {}
for location in self.get_game_state().locationInfos:
name = self.__itemReader.get(location.locationId).name
if (location.locationId not in locations_nfree) and (location.locationId not in locations_nwalk):
locations[name] = location
logger.info('\t-\t'+location.locationId+'\t'+name)
else:
if (location.locationId not in locations_nfree):
logger.info('\t?\t'+location.locationId+'\t'+name)
else:
logger.info('\t+\t'+location.locationId+'\t'+name)
if locations:
logger.info('Находимся на острове:')
logger.info(' * '+self.__itemReader.get(self.get_game_loc().get_location_id()).name)
logger.info("")
#location_name = self.__user_prompt.prompt_user(u'Выберите остров:',locations.keys())
location_name = locations.keys()[0]
if location_name in locations:
self.__selected_location = locations[location_name].locationId
else:
self.__selected_location = self.get_game_loc().get_location_id()
def get_user_setting(self, setting_id):
return self.__settings.get
def running(self):
if self.__gui_input:
running = self.__gui_input.running
else:
running = lambda: True
return running()
def start(self):
while(self.running()):
try:
# load items dictionary
if self.__itemReader is None:
logger.info('Опа попали')
item_reader = GameItemReader()
item_reader.download('items.txt')
item_reader.read('items.txt')
self.__itemReader = item_reader
logger.info('А не всё нормик')
start_response,self.__friendsid,self.__server_time = self.__game_initializer.start()
# Save Game_state
open("game_state.txt","w").write(str(obj2dict(start_response)))
self.__game_events_sender = self.__game_initializer.create_events_sender()
self.save_game_state(start_response)
# GetMissionsBot(self.__itemReader, self.__game_state_, self.__game_events_sender, self._get_timer(),{}).perform_action()
self.select_location()
self.select_plant_seed()
self.select_recipe()
self.create_all_actors()
# TODO send getMissions
# TODO handle getMissions response
self.load_info_users()
self.eventLoop()
except urllib2.HTTPError, e:
raise e
except (socket.timeout, urllib2.HTTPError, urllib2.URLError):
seconds = 5
logger.error('Timeout occurred, retrying in %s seconds...'
% seconds)
time.sleep(seconds)
except (socket.error, ssl.SSLError) as e:
seconds = 15
logger.error('Socket error occurred, retrying in %s seconds...'
% seconds)
time.sleep(seconds)
except message_factory.GameError, e:
if not self.__ignore_errors:
raise e
def add_users_info(self, event_to_handle):
friends_copy = self.__friendsid[:]
players = []
while len(friends_copy):
players.append(friends_copy.pop())
if len(players) == 100:
events = {"type":"players","id":3,"action":"getInfo","players":players}
self.__game_events_sender.send_game_events([events])
self.handle_all_events()
players = []
if players:
events = {"type":"players","id":3,"action":"getInfo","players":players}
self.__game_events_sender.send_game_events([events])
self.handle_all_events()
#time.sleep(2)
def add_users_info(self, event_to_handle):
try:
with open('low_level.txt', 'r') as f:
self.__game_state_.low_level = eval(f.read())
except:
self.__game_state_.low_level = []
try:
with open('banned.txt', 'r') as f:
self.__game_state_.banned = eval(f.read())
except:
self.__game_state_.banned = []
lovl = []
banned = []
for n in event_to_handle.players:
if hasattr(n, 'level') and int(n.level) < 20 and (n.id not in self.__game_state_.low_level): lovl.append(n.id)
if hasattr(n, 'banned') and n.banned and (n.id not in self.__game_state_.banned): banned.append(n.id)
if lovl:
self.__game_state_.low_level.extend(lovl)
with open('low_level.txt', 'w') as f:
f.write(str(self.__game_state_.low_level))
if banned:
self.__game_state_.banned.extend(banned)
with open('banned.txt', 'w') as f:
f.write(str(self.__game_state_.banned))
def save_game_state(self, start_response):
# parse game state
self.__game_state_ = GameState(start_response, self.__itemReader)
def get_game_loc(self):
return self.__game_state_.get_game_loc()
def get_game_state(self):
return self.__game_state_.get_state()
def eventLoop(self):
'''
in a loop, every 30 seconds
send EVT request
handle EVT response
'''
interval = 5
refresh_min = 11
seconds = interval
ref_min = []
while(self.running()):
if seconds >= interval:
self.perform_all_actions()
#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: logger.info(u'Перезагрузка через %s минуту'%str(refresh_min-min))
elif ((refresh_min-min)>=2) and ((refresh_min-min)<=4): logger.info(u'Перезагрузка через %s минуты'%str(refresh_min-min))
else: logger.info(u'Перезагрузка через %s минут'%str(refresh_min-min))
ref_min += [min]
if min>=refresh_min:
ref_min = []
break
def create_all_actors(self):
receive_options = {'with_messages': self.__receive_gifts_with_messages,
'non_free': self.__receive_non_free_gifts}
options = {'GiftReceiverBot': receive_options,
'SeederBot': self.__selected_seed,
'CookerBot': self.__selected_recipe,
'ChangeLocationBot': self.__selected_location,
'VisitingUsers':self.__friendsid,
'DigBot':self.__friendsid,
'SellBot':{'sell_item':self.__selected_sell,'send_user':self.__selected_send},
'ChangeLocationBot':self.__selected_loc_setting,
}
events_sender = self.__game_events_sender
timer = self._get_timer()
item_reader = self.__itemReader
game_state = self.__game_state_
actor_classes = [
#FriendDigger, #Компаем у друзей
#MagicWandBuild, #рубим палкой по постройкам
#TreePlant, # покупка деревьев...
DigBot, # Работа с мозгами
#GetMissionsBot, # Запрос выполнения миссий
#VisitingUsers, # Посещение друзей
#GameBuffHarvest, #Приём супер урожая
#GameBuffDigger, # Приём супер-поиск
WoodPicker, # Сбор дерева
StonePicker, # Сбор камня
BrewPicker, # Сбор сваренного
BagsPicker, # Сбор сумок
WoodTargetSelecter, # Отправка работать дровосекам
StoneTargetSelecter,# Отправка работать камнетёсов
CookerBot, # Работа с поварами (подъем из могил, установка рецептов)
#CookSpeed, # Посолить рецепты
#FertilBot, # Удобрение деревьев
HarvesterBot, # Сбор чего либо + вскапывание грядок
CakesReceiverBot, # Сбор пряников
SeederBot, # Посейка
GiftReceiverBot, # Принятие подарков
BoxPickuper, # Вскрытие чего либо
#PremiumGifts, # Принятие платных выставляемых подарков
RouletteRoller, # Кручение рулеток
#FrutRouletteRoller, # Кручение фруктовых рулеток
#UseEggItemBot, # Бить яйца ;)
#MagicWand, # Добыча ресурсов палочками
GameBrains, # Создание чего либо
Pickuper, # Сбор дропа
#SellBot, # Продажа чего либо
#TraderWork, # Торговцы
#BuildingBuyer, # Покупаем, продаем ракету
#HarvestExchange, #создаем деньги в бц
#PirateTreeCut, #рубка на острове сокровищ
TiketReceiverBot, # Собираем билеты, обновляем самолет
ChangeLocationBot, # Переход по локациям
FreeGifts, #ВФывфвы
]
self.__actors = []
for actor_class in actor_classes:
self.__actors.append(
actor_class(item_reader, game_state, events_sender, timer,
options))
def perform_all_actions(self):
'''
Assumes that create_all_actors is called before
'''
#all_time=[]
for actor in self.__actors:
#time_one=time.time()
actor.perform_action()
#time_two=time.time()
#logger.info(u'Класс %s' % (str(actor).split()[0].split('.')[-1]))
#logger.info(u'Выполнялся %f' % (time_two-time_one))
#all_time+=[[str(actor).split()[0].split('.')[-1],(time_two-time_one)]]
self.handle_all_events()
#open('time.txt','a').write(str(all_time))
self.__game_events_sender.send_game_events()
self.handle_all_events()
#raw_input()
def handle_all_events(self):
self.__game_events_sender.print_game_events()
for event in self.__game_events_sender.get_game_events():
self.handleEvent(event)
def handleEvent(self, event_to_handle):
if event_to_handle.action == 'addGift':
AddGiftEventHandler(self.get_game_state()).handle(event_to_handle)
elif event_to_handle.action == 'add':
if event_to_handle.type == 'pickup':
AddPickupHandler(self.__itemReader, self.get_game_loc(),self.__game_state_,self.__setting_view).handle(event_to_handle)
elif event_to_handle.type == GameFertilizePlant.type:
PlantEventHandler(self.get_game_loc()).handle(event_to_handle)
elif event_to_handle.type == GamePlayGame.type:
GameResultHandler(self.__itemReader,self.get_game_loc(),self.__game_state_).handle(event_to_handle)
elif event_to_handle.type == GameStartGainMaterial.type:
GainMaterialEventHandler(self.__itemReader, self.get_game_loc(),
self.__timer).handle(event_to_handle)
elif event_to_handle.type == GameStartTimeGainEvent.type:
TimeGainEventHandler(self.__itemReader, self.get_game_loc(),
self.__timer).handle(event_to_handle)
elif event_to_handle.type == 'gameState':
GameStateEventHandler(self.__game_state_, self.__server_time,self.__setting_view).handle(event_to_handle)
elif event_to_handle.type == 'mission':
ViewMissions(self.__itemReader, self.__setting_view).handle(event_to_handle)
else:
self.logUnknownEvent(event_to_handle)
self.__game_events_sender.remove_game_event(event_to_handle)
if event_to_handle.action == 'getInfo' and event_to_handle.type == 'playersInfo':
if not hasattr(self.__game_state_, 'playersInfo'):
self.__game_state_.playersInfo = event_to_handle.players
else:
self.__game_state_.playersInfo.extend(event_to_handle.players)
def logUnknownEvent(self, event_to_handle):
logger = logging.getLogger('unknownEventLogger')
logger.info(pprint.pformat(obj2dict(event_to_handle)))
def _get_timer(self):
return self.__timer
def get_request_sender(self):
return self.__request_sender
def load_info_users(self):
friends_copy = self.__friendsid[:]
players = []
while len(friends_copy):
players.append(friends_copy.pop())
if len(players) == 100:
events = {"type":"players","id":3,"action":"getInfo","players":players}
self.__game_events_sender.send_game_events([events])
self.handle_all_events()
players = []
if players:
events = {"type":"players","id":3,"action":"getInfo","players":players}
self.__game_events_sender.send_game_events([events])
self.handle_all_events()
#time.sleep(2)
def add_users_info(self, event_to_handle):
try:
with open('low_level.txt', 'r') as f:
self.__game_state_.low_level = eval(f.read())
except:
self.__game_state_.low_level = []
try:
with open('banned.txt', 'r') as f:
self.__game_state_.banned = eval(f.read())
except:
self.__game_state_.banned = []
lovl = []
banned = []
for n in event_to_handle.players:
if hasattr(n, 'level') and int(n.level) < 20 and (n.id not in self.__game_state_.low_level): lovl.append(n.id)
if hasattr(n, 'banned') and n.banned and (n.id not in self.__game_state_.banned): banned.append(n.id)
if lovl:
self.__game_state_.low_level.extend(lovl)
with open('low_level.txt', 'w') as f:
f.write(str(self.__game_state_.low_level))
if banned:
self.__game_state_.banned.extend(banned)
with open('banned.txt', 'w') as f:
f.write(str(self.__game_state_.banned))
class RequestSender(object):
def __init__(self, message_factory, connection):
self.__factory = message_factory
self.__connection = connection
def send(self, data):
data = obj2dict(data)
assert 'type' in data
request = self.__factory.createRequest(data)
return dict2obj(request.send(self.__connection))
def set_url(self, url):
self.__connection.setUrl(url)
def clear_session(self):
self.__factory.setSessionKey(None)
def reset_request_id(self):
request_id = message_factory._getInitialId()
self.__factory.setRequestId(request_id)
def set_auth_key(self, auth_key):
self.__factory.set_auth_key(auth_key)
Последний раз редактировалось Kipari40; 03.06.2014 в 20:13.
|
|
|
03.06.2014, 19:32
|
#2337
|
|
|
|
Разведчик
|
Регистрация: 01.03.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Последний раз редактировалось Znewf; 03.06.2014 в 19:36.
|
|
|
04.06.2014, 15:06
|
#2338
|
|
|
|
Пехотинец
|
Регистрация: 01.08.2012
Сообщений: 95
Популярность: 255
Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
|
|
04.06.2014, 15:58
|
#2339
|
|
|
|
Разведчик
|
Регистрация: 19.07.2012
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Безумно благодарный за помощь, но бот просто мигает и не работает
Запустил main`ик в редакторе питона да бы посмотреть ошибку( т.к консоль просто мигает и не успеешь прочитать ошибку) запустил через редактор увидел ошибку импорта файлов (т.к в гейм инжине есть импортированные файлы которых у меня нет, т.к я брал гейм инжин из другой сборки, так вот я удалил строки импорта, но проблема не решилась.
Прикрепил бот с файлом game_engine который скинул vintets, мб кто решит
Буду благодарен любой помощи.
Последний раз редактировалось HotBlood; 04.06.2014 в 15:58.
Причина: ошибка
|
|
|
04.06.2014, 16:50
|
#2340
|
|
|
|
Пехотинец
|
Регистрация: 01.08.2012
Сообщений: 95
Популярность: 255
Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
Цитата: |
|
|
|
|
|
|
|
|
|
Безумно благодарный за помощь, но бот просто мигает и не работает
Запустил main`ик в редакторе питона да бы посмотреть ошибку( т.к консоль просто мигает и не успеешь прочитать ошибку) запустил через редактор увидел ошибку импорта файлов (т.к в гейм инжине есть импортированные файлы которых у меня нет, т.к я брал гейм инжин из другой сборки, так вот я удалил строки импорта, но проблема не решилась.
Прикрепил бот с файлом game_engine который скинул vintets, мб кто решит
Буду благодарен любой помощи.
|
|
|
|
|
|
в gifts.py вставить 125-й строкой
PHP код:
if not hasattr (self._get_game_state() , "playersInfo"): return 1
в game_engine.py
520 строка на 1 пробел влево
119 строка удалить все пробелы в начале
240 и 346 удалить BaseActor
закомментить 15, 17, 18, 35, 37 строки
667 строку удалить
вместо
self.__game_state_.friends_names = data
вставить
PHP код:
if hasattr(self.__game_state_, 'friends_names'):
self.__game_state_.friends_names.update(data)
else:
self.__game_state_.friends_names = data
Следить всегда за отступами.
Не добавлять новые блоки в неработающий скрипт.
Не запускать кликом по main
Чтобы видеть ошибки запускать Start 0.bat
в нём 2 строка должна быть
Чтобы получить списки игроков с низким уровнем в
PHP код:
if 0: # списки ниже 20 уровня и забаненных
поменять 0 на 1 (включить)
Последний раз редактировалось vintets; 04.06.2014 в 16:55.
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 07:24.
|
|