|
Zombot (Клиент для игры Зомби ферма) [Обсуждение] - Свободное обсуждение - Ваши идеи, вопросы и ответы на тему браузерных игр и социальных сетей |
17.01.2017, 15:30
|
#5356
|
|
|
|
Разведчик
|
Регистрация: 03.07.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
По кручению рулеток на пиратских островах можете написать что нужно включить и проверить, чтоб корректно открутил все? Задержка перехода между островами каким параметром задается?
Нужно сделать 300 секунд задержку, прокрутить остаток в рулетках и дальше ничего не трогать, сам разберу.
Это вот тут поправить надо interval = 5?
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
Добавлено через 2 часа 14 минут
Или Опять таки
MagicWand, # Рубщик палочками под определённым ресурсом
Где указывать что и где рубить?
location_id = "main" # на каком острове
buildfromwand = "@D_WITCH_HUT"#"@D_MONEYBOX_CAT"#"@D_SAKURA_SWING_ A" # под какой постройкой
в файле wand.py ?
Последний раз редактировалось tarrac; 17.01.2017 в 17:46.
Причина: Добавлено сообщение
|
|
|
17.01.2017, 17:56
|
#5357
|
|
|
|
Разведчик
|
Регистрация: 25.02.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
|
|
17.01.2017, 17:59
|
#5358
|
|
|
|
Разведчик
|
Регистрация: 03.07.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
У меня модуль вот такой
Открыть
PHP код:
# coding=utf-8 import logging from game_state.game_types import GameBuilding, GamePlayGame, DailyBonus from game_actors_and_handlers.base import BaseActor from game_state.game_event import dict2obj,obj2dict
logger = logging.getLogger(__name__)
class RouletteRoller(BaseActor): def playCostGame(self,game,building_item): rulettes = { # не комментировать ,а то будет крутить до упора,лучше остаток больше поставить # рулетка |сколько оставлять фруктов |сколько оставлять рецептов 'B_SLOT_APPLE':{'B_SLOT_B_ROULETTE1':5000,'B_SLOT_APPLE_ROULETTE2':100},# Яблочный автомат 'B_SLOT_CHERRY':{'B_SLOT_B_ROULETTE1':5000,'B_SLOT_CHERRY_ROULETTE2':100},# Вишнёвый автомат 'B_SLOT_MANDARIN':{'B_SLOT_B_ROULETTE1':5000,'B_SLOT_MANDARIN_ROULETTE2':100},# Мандариновый автомат 'B_SLOT_LEMON':{'B_SLOT_B_ROULETTE1':1000,'B_SLOT_LEMON_ROULETTE2':100},# Лимонный автомат 'B_SOLDIER':{'B_SOLDIER_ROULETTE2':5000,'B_SOLDIER_ROULETTE':100},# Адмирал 'B_SLOT_B':{'B_SLOT_B_ROULETTE2':5}, } game_id=game.id play_cost = game.playCost need_item=play_cost.item storageCount=self._get_game_state().count_in_storage(need_item) need_count=int(play_cost.count) if rulettes.has_key(building_item): needGame=rulettes[building_item] if not needGame.has_key(game_id):return False if storageCount<=needGame[game_id]:return False if storageCount<play_cost.count:return False self._get_game_state().remove_from_storage(play_cost.item,play_cost.count) return True else: if storageCount<need_count:return False self._get_game_state().remove_from_storage(need_item,need_count) return True
def unconditionalPlayCost(self,game,next_play): pirateBox=['@PIRATE_BOX','@PIRATE_BOX_2'] play_cost = game.unconditionalPlayCost if game.id == "B_TAVERNA_ROULETTE_1": state=self._get_game_state().get_state().pirate.state if state == 'PIRATE' or state == 'AWAY':return False for box in pirateBox: if self._get_game_state().count_in_storageObjects(box)>0:return False dublon=self._get_game_state().count_in_storage(play_cost.item) if dublon<play_cost.count:return False if self._get_timer().has_elapsed(next_play):return True else: self._get_game_state().remove_from_storage(play_cost.item,play_cost.count) return True #logger.info(u'No game_id:',game.id) return False
def enemyStatus(self,building,enemies): if not enemies:return False for enemy in enemies: if((enemy.x - building.x)**2+(enemy.y - building.y)**2)**0.5 < 15: return True return False
def fillToLimit(self,game): storageCount=self._get_game_state().count_in_storage(game.item) if storageCount<game.limit:return True else:return False
def perform_action(self): buildings = self._get_game_location().get_all_objects_by_type('building') enemies = self._get_game_location().get_all_objects_by_type("pirateEnemy") # Ежедневный бонус dailyBonus = self._get_game_state().get_state().dailyBonus if self._get_timer().has_elapsed(dailyBonus.playFrom): daily = DailyBonus() self._get_events_sender().send_game_events([daily]) dailyBonus.playFrom = 10800000 # Крутим рулетку в волшебнике и т.д if hasattr(self._get_game_state().get_state().npcs,'list'): wizards=self._get_game_state().get_state().npcs.list else:wizards=[] if wizards: for wizard in wizards: if wizard.type!='wizard':continue if hasattr(wizard,'prize'):continue events={"type":"npc","id":None,"npcId":wizard.id,"action":"play"} self._get_events_sender().send_game_events([events]) eventRoll=[] for building in buildings: building_item = self._get_item_reader().get(building.item) if not building_item.games:continue for game in building_item.games: if building.level<game.level:continue game_id = game.id roller=True next_play_times = building.nextPlayTimes.__dict__ if not next_play_times.has_key(game_id): next_play_times[game_id]=-90000 next_play = int(next_play_times[game_id]) if hasattr(game,'unconditionalPlayCost'): roller=self.unconditionalPlayCost(game,next_play) elif game.type=='fillToLimit': roller=self.fillToLimit(game) elif hasattr(game, 'playCost'): roller=self.playCostGame(game,building_item.id) if not self._get_timer().has_elapsed(next_play):continue if hasattr(game, 'playsCount'): playsCounts=building.playsCounts.__dict__ if playsCounts.has_key(game_id): play_Count = int(playsCounts[game_id]) else: playsCounts[game_id]=0 play_Count=playsCounts[game_id] if play_Count>=game.playsCount:continue playsCounts[game_id]+=1 count_last = game.playsCount - playsCounts[game_id] logger.info( u'Крутим рулетку '+ building_item.name+ u'. Осталось: '+ str(count_last)+'/'+ str(game.playsCount)) building.playsCounts=dict2obj(playsCounts) if not enemies:enemy_here=False else:enemy_here = self.enemyStatus(building,enemies) if enemy_here: logger.info(u"Сильвер мешает крутить '%s'"%building_item.name) self._get_game_location().remove_object_by_id(building.id) roller=False if not roller:continue roll = GamePlayGame(building.id, game_id) eventRoll.append(roll) if eventRoll:self._get_events_sender().send_game_events(eventRoll)
class GameResultHandler(object): def __init__(self, item_reader, game_location,game_state): self.__item_reader = item_reader self.__game_location = game_location self.__game_state_ = game_state self.__collection = game_state.get_state().collectionItems.__dict__ def handle(self, event_to_handle): #self.cprint=self.__game_state_.cprint _loc = self.__game_state_.get_location_id() readerloc = self.__item_reader.get(_loc) if hasattr (event_to_handle,'dailyBonus'): daily=self.__game_state_.get_state().dailyBonus prize_pos = event_to_handle.pos game_prize = daily.prizes[prize_pos] prize = self.__item_reader.get(game_prize.item) logger.info(u"Крутанул: Ежедневный бонус Приз: %d %s "%(game_prize.count,prize.name.upper())) elif event_to_handle.type == 'wizardNpcPlay': npcsAll=self.__game_state_.get_state().npcs.list for npcs in npcsAll: if npcs.id!=event_to_handle.npcId:continue npcsRead=self.__item_reader.get(npcs.item) prize=npcsRead.prizes[event_to_handle.pos] prizeRead=self.__item_reader.get(prize.item) prizeSTR=u'Выиграл %s %s шт.'%(prizeRead.name.upper(),str(prize.count)) logger.info(u"Крутанул '%s' %s"%(npcsRead.name,prizeSTR)) setattr(npcs,'prize',dict2obj({u'count': prize.count, u'item': prize.item})) self.__game_state_.get_state().npcs.list=dict2obj(npcsAll) elif event_to_handle.action==u'play': gameObject = self.__game_location.get_object_by_id(event_to_handle.objId) if gameObject is None:return extraId = event_to_handle.extraId if hasattr(event_to_handle,'nextPlayDate'): nextPlayDate = event_to_handle.nextPlayDate gameObject.nextPlayTimes.__setattr__(extraId,nextPlayDate) building = self.__item_reader.get(gameObject.item) for game in building.games: if game.id != extraId:continue game_prize = False if extraId=='FILL_TRIDENT': fill=game.limit-self.__game_state_.count_in_storage(game.item) game_prize = dict2obj({"count":fill,"item":game.item}) elif hasattr(event_to_handle.result, 'pos'): prize_pos = event_to_handle.result.pos game_prize = game.prizes[prize_pos] elif hasattr(event_to_handle.result, 'won'): prize_pos = event_to_handle.result.won if prize_pos is not None:game_prize = game.combinations[prize_pos].prize if not game_prize: prizeSTR=u'Ничего не выиграл.' logger.info(u"Крутанул '%s' %s"%(building.name,prizeSTR)) return prize = self.__item_reader.get(game_prize.item) if readerloc.type=='explorationLocation' and prize.type=='chopInstrument': if not readerloc.disableUseTicketFromGlobus: self.__game_state_.add_pirate_instruments(game_prize.item, game_prize.count) else:self.__game_state_.add_from_storage(game_prize.item, game_prize.count) elif prize.type=='collectionItem': if self.__collection.has_key(prize.id): self.__collection[prize.id]+=game_prize.count else:self.__collection[prize.id]=game_prize.count self.__game_state_.get_state().collectionItems=dict2obj(self.__collection) elif hasattr(prize,'moved') and prize.moved: self.__game_state_.add_from_storageObjects(game_prize.item, game_prize.count) else:self.__game_state_.add_from_storage(game_prize.item, game_prize.count) prizeSTR=u'приз: %s %s шт.'%(prize.name.upper(),str(game_prize.count)) logger.info(u"Крутанул '%s' %s"%(building.name,prizeSTR))
Переходы по островам где отключать?
В настройках нашел, что при
locations_nother = []
бегает по всем островами, кроме исключений ниже, и можно вручную ввести острова, по которым бегать.
Но кода древнего острова в файле "Коды (острова и растения).txt" не нашел. Так же не нашел и остальных пиратских островов.
Последний раз редактировалось tarrac; 17.01.2017 в 18:04.
|
|
|
17.01.2017, 18:02
|
#5359
|
|
|
|
Разведчик
|
Регистрация: 25.02.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Последний раз редактировалось greyzza; 17.01.2017 в 18:06.
Причина: Добавлено сообщение
|
|
|
17.01.2017, 18:07
|
#5360
|
|
|
|
Разведчик
|
Регистрация: 03.07.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
А модуль корректный?
Нашел
PHP код:
ChangeLocationBot, # ПЕРЕХОД ПО ЛОКАЦИЯМ
# PirateTreeCut # РУБКА НА ПИРАТСКОМ ОСТРОВЕ
Последний раз редактировалось tarrac; 17.01.2017 в 18:10.
|
|
|
17.01.2017, 18:08
|
#5361
|
|
|
|
Разведчик
|
Регистрация: 25.02.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
|
|
17.01.2017, 21:12
|
#5362
|
|
|
|
Разведчик
|
Регистрация: 03.07.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Вот такую штуку пишет, после одной прокрутки на древнем
PHP код:
------------------------------------ НАХОДИМСЯ НА ОСТРОВЕ... * Древний ------------------------------------ ЗАГРУЖАЮ ДРУЗЕЙ: 810/810 [2017-01-17 21:24:45,898] Крутим рулетку Колодец Желаний. Осталось: 77/80 [2017-01-17 21:24:45,992] Крутанул 'Колодец Желаний' приз: ТОПОР 15 шт. [2017-01-17 21:24:46,092] ------------------------------------ [2017-01-17 21:24:46,092] ПЕРЕЗАГРУЗКА ЧЕРЕЗ 30 МИНУТ [2017-01-17 21:24:46,094] ------------------------------------ [2017-01-17 21:25:30,283] ------------------------------------ [2017-01-17 21:25:30,283] ПЕРЕЗАГРУЗКА ЧЕРЕЗ 29 МИНУТ [2017-01-17 21:25:30,285] -------------------------------------
В файле game_engine.py оставил только
Показать
PHP код:
actor_classes = [
# GameTravelBuff, # Создание проездного # GameCraft, # Создание чего либо(мозгов,кирпичей,денег и тд) # GameBuffFixHarvest, # Активировать супер-урожай # GameBuffDigger, # Активировать супер-поиск # GameBuffFixCook, # Активировать рецепт за минуту
# CraftObservatory, # Создание Изумрудной в Обсерватории # Dvornic, # Выгнать дворника за 10 ЗБ # MonsterPit, # Закапывание чудовища # CakesReceiverBot, # Сбор пряников # HarvestExchange, # Обмен роз на деньги # GiftReceiverBot, # Принятие подарков # FreeGifts, # Бесплатные подарки # PremiumGifts, # Принятие платных подарков которые ставятся на Остров # BrewPicker, # Сбор Бочек поваров # BagsPicker, # Сбор Сумок,Вёдер и тд # CookerBot, # Работа с поварами (подъем из могил, установка рецептов) #FertilBot, # Удобрение деревьев #FertilPlantBot, # Удобрение растений # HarvesterBot, # Сбор чего либо + вскапывание грядок
# SeederBot, # Посейка # DeletingObjects, # Удаление объектов # BoxPickuper, # Вскрытие чего либо RouletteRoller, # Кручение рулеток # Pickuper, # Сбор того, что выпадает #CreateShovelExtra, # Создание Золотых лопат в Глаз-алмаз # TreePlant, # Посадка деревьев, грядок и т.д. #Babelon, # Создание Зомбаксов в Вавилоне #SendGiftBot, # Отослать кому-нибудь что-нибудь по одному или скопом
# WoodTargetSelecter, # Отправка работать дровосекам # StoneTargetSelecter, # Отправка работать камнетёсов # WoodPicker, # Сбор дерева # StonePicker, # Сбор камня # CookSpeed, # Посолить рецепты
# TiketReceiverBot, # Собирать стуки друзей в постройках #UseEggItemBot, # Открывать Сокровища с пиратских по много шт # MagicWand, # Рубщик палочками под определённым ресурсом # MagicWand_all # Рубщик палочками #SellBot, # Продажа чего либо #TraderWork, # Торогвцы #StoragePut, # Выставление со склада подарков которые ставятся на Остров
# ChangeLocationBot, # ПЕРЕХОД ПО ЛОКАЦИЯМ # PirateTreeCut, # РУБКА НА ПИРАТСКОМ ОСТРОВЕ
#ElephantEat, # Кормить слоника #HornUpdate, # Обновлять рога #Emeraldic, # Создание страшной #BuildingBuyer, # Покупать ракету #ExchangeCollections, # Обмен коллекций #TitleBot, # Заголовок окна # GameBrains, # Создание мозгов # DigBot, # Закапывать друзей #GetMissionsBot, # Запрос выполнения миссий
]
Последний раз редактировалось tarrac; 17.01.2017 в 21:28.
|
|
|
17.01.2017, 22:00
|
#5363
|
|
|
|
Разведчик
|
Регистрация: 25.02.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
|
|
17.01.2017, 22:12
|
#5364
|
|
|
|
Разведчик
|
Регистрация: 03.07.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
Цитата: |
|
|
|
|
|
|
|
|
|
ну так он работает это просто принт через сколько будет перезагрузка(можно и нужно ампутировать), колодцы же еще надо дождаться время чтобы подошло для следующей прокрутки
|
|
|
|
|
|
Ампутировать перезапуск или вывод информации?
Последнее нашел где ампутировать)
Если первое - подскажите где?
|
|
|
17.01.2017, 22:13
|
#5365
|
|
|
|
Разведчик
|
Регистрация: 25.02.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
вывод ампутировать, а время перезапуска тут refresh_min = 30
|
|
|
17.01.2017, 22:18
|
#5366
|
|
|
|
Разведчик
|
Регистрация: 03.07.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
А перезагрузка для чего нужна?
|
|
|
17.01.2017, 22:24
|
#5367
|
|
|
|
Разведчик
|
Регистрация: 25.02.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
ну как бы если утечек памяти нет и вся стата корректно обновляется то можно и не перегружать, т.е все ответы правильно обрабатываются, склад трюм, или например срубил открылись новые обьекты бот их должен увидеть появление трата монет опыта зб и т.д, а если не все ответы обработаны или неправильно обработаны то обновить стату поможет только перезагрузка
|
|
|
17.01.2017, 22:25
|
#5368
|
|
|
|
Разведчик
|
Регистрация: 19.10.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
|
|
17.01.2017, 22:26
|
#5369
|
|
|
|
Разведчик
|
Регистрация: 03.07.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Пытаюсь его ампутировать
PHP код:
if (refresh_min-min)==1:
# logger.info(u" ------------------------------------ ")
# logger.info(u' ПЕРЕЗАГРУЗКА ЧЕРЕЗ %s МИНУТУ'%str(refresh_min-min))
# logger.info(u" ------------------------------------ ")
elif ((refresh_min-min)>=2) and ((refresh_min-min)<=4):
# logger.info(u" ------------------------------------ ")
# logger.info(u' ПЕРЕЗАГРУЗКА ЧЕРЕЗ %s МИНУТЫ'%str(refresh_min-min))
# logger.info(u" ------------------------------------ ")
else:
# logger.info(u" ------------------------------------ ")
# logger.info(u' ПЕРЕЗАГРУЗКА ЧЕРЕЗ %s МИНУТ'%str(refresh_min-min))
# logger.info(u" ------------------------------------ ")
Сильно ругается.
Научите пожалуйста.
|
|
|
17.01.2017, 22:29
|
#5370
|
|
|
|
Разведчик
|
Регистрация: 25.02.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Последний раз редактировалось greyzza; 17.01.2017 в 22:33.
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 08:50.
|
|