Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Zombot (Клиент для игры Зомби ферма) [Обсуждение]

-

Свободное обсуждение

- Ваши идеи, вопросы и ответы на тему браузерных игр и социальных сетей

Ответ
 
Опции темы
Старый 28.05.2015, 11:29   #4276
 Разведчик
Аватар для doubleaggent
 
doubleaggent никому не известный тип
Регистрация: 17.06.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

народ, поделитесь пожалуйста кодом для новых квестов, чтоб лавку застукивать и мячи надувать соседям
  Ответить с цитированием
Старый 28.05.2015, 13:06   #4277
Заблокирован
 Разведчик
Аватар для Cheater-84
 
Cheater-84 никому не известный тип
Регистрация: 22.03.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 6 раз(а) в 5 сообщениях
Отправить сообщение для Cheater-84 с помощью Skype™
 
Exclamation Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от doubleaggentПосмотреть сообщение
народ, поделитесь пожалуйста кодом для новых квестов, чтоб лавку застукивать и мячи надувать соседям

http://zhyk.ru/forum/showpost.php?p=...postcount=4204

и читаем что писали)

а это эвент

PHP код:
"events":[{"id":16,"itemId":"EVRO_BOX_GREEN_01","action":"remoteThanksgiving" 
я не делал, так как это все ненужно и бесполезно

Последний раз редактировалось Cheater-84; 28.05.2015 в 13:12.
  Ответить с цитированием
Старый 28.05.2015, 14:05   #4278
 Разведчик
Аватар для doubleaggent
 
doubleaggent никому не известный тип
Регистрация: 17.06.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от Cheater-84Посмотреть сообщение
http://zhyk.ru/forum/showpost.php?p=...postcount=4204

и читаем что писали)

а это эвент

PHP код:
"events":[{"id":16,"itemId":"EVRO_BOX_GREEN_01","action":"remoteThanksgiving" 

благодарю за ответ
  Ответить с цитированием
Старый 28.05.2015, 14:31   #4279
Заблокирован
 Разведчик
Аватар для Cheater-84
 
Cheater-84 никому не известный тип
Регистрация: 22.03.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 6 раз(а) в 5 сообщениях
Отправить сообщение для Cheater-84 с помощью Skype™
 
Exclamation Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от doubleaggentПосмотреть сообщение
благодарю за ответ


Спасибо greyzza за данный код!

PHP код:
                    ###туки###
                    
if 'tuk' in action:
                        if 
object.type == 'thanksgivingTable':
                            
day_stuk=self._get_game_state().get_state().remoteThanksgiving
                            
if len(day_stuk)>=100:continue
                            
reader_thanks=self._get_item_reader().get(object.item)
                            if 
hasattr(reader_thanks,'endSellingDate') and int(reader_thanks.endSellingDate)/1000<time.time():continue
                            
readerGifts=self._get_item_reader().get(reader_thanks.gifts[0])
                            if 
object.usedPlatesCount>=reader_thanks.platesCount:continue
                            for 
days in day_stuk:
                                if 
str(user)==str(days.user):break
                            else:
                                
self._get_events_sender().send_game_events([{"itemId"readerGifts.id"action""remoteThanksgiving""type""item""objId"object.id}])
                                
apend_frend={u'count'0Lu'date'u'-19849562'u'user'str(user)}
                                
self._get_game_state().get_state().remoteThanksgiving.append(dict2obj(apend_frend))
                                
self.cprint(u'5 %s в %s'%(readerGifts.name,reader_thanks.name)) 
Изображения
Тип файла: jpg 2.JPG (57.1 Кб, 28 просмотров)

Последний раз редактировалось Cheater-84; 28.05.2015 в 14:57.
  Ответить с цитированием
Старый 28.05.2015, 21:00   #4280
 Разведчик
Аватар для maxs0072
 
maxs0072 никому не известный тип
Регистрация: 01.02.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

ребят помогите с запуском бота.
  Ответить с цитированием
Старый 28.05.2015, 23:59   #4281
Заблокирован
 Разведчик
Аватар для Cheater-84
 
Cheater-84 никому не известный тип
Регистрация: 22.03.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 6 раз(а) в 5 сообщениях
Отправить сообщение для Cheater-84 с помощью Skype™
 
Question Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от maxs0072Посмотреть сообщение
ребят помогите с запуском бота.

погадаем на кофейной гуще, какой бот, какая сборка, какая ошибка, и так далее...а может к бабке гадалке сходим?
  Ответить с цитированием
Старый 31.05.2015, 01:38   #4282
 Разведчик
Аватар для GadW1n
 
GadW1n никому не известный тип
Регистрация: 24.08.2011
Сообщений: 17
Популярность: 10
Сказал(а) спасибо: 9
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

спотыкается на футбольном подарке(((

Добавлено через 6 минут
и кажется сам нашёл решение)))
добавить после
Код:
            if box.item == '@VALENT_GIFT_BOX6':
                continue
вот это
Код:
            if box.item == '@FOOTBALL_GIFT_BOX':
                continue

Последний раз редактировалось GadW1n; 31.05.2015 в 01:58. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 31.05.2015, 13:47   #4283
Заблокирован
 Разведчик
Аватар для Cheater-84
 
Cheater-84 никому не известный тип
Регистрация: 22.03.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 6 раз(а) в 5 сообщениях
Отправить сообщение для Cheater-84 с помощью Skype™
 
Exclamation Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от ripton07Посмотреть сообщение
# Надуваем футбольный подарок
if object.type == 'pickup':
if object.item =='@FOOTBALL_GIFT_BOX':
self.cprint(u'3 Надуваем футбольный подарок')
eventpick.append({"action":"pick","type":"item","o bjId"bject.id})

Полнейший бред, уже было решение, вот пример на вскрытии тайников

PHP код:
                    # Надуваем футбольный подарок
                    
if u'naduv' in action:
                        if 
object.type=='friendTransformObject':
                            if 
object.transformed:continue
                            
name self._get_item_reader().get(object.item).name
                            eventtrans
={"action":"remoteFriendTransform","type":"item","objId":object.id}
                            
self._get_events_sender().send_game_events([eventtrans])
                            
self.cprint(u'5 Надул %s'%name.upper()) 
Изображения
Тип файла: jpg 1.jpg (35.1 Кб, 24 просмотров)

Последний раз редактировалось Cheater-84; 31.05.2015 в 14:01.
  Ответить с цитированием
Старый 31.05.2015, 18:24   #4284
 Разведчик
Аватар для v_home
 
v_home никому не известный тип
Регистрация: 21.10.2010
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
# Надуваем футбольный подарок
if u'naduv' in action:
if object.type=='friendTransformObject':
if object.transformed:continue
name = self._get_item_reader().get(object.item).name
eventtrans={"action":"remoteFriendTransform","type ":"item","objId"bject.id}
self._get_events_sender().send_game_events([eventtrans])
self.cprint(u'5 Надул %s'%name.upper())

Спасибо)
  Ответить с цитированием
Старый 31.05.2015, 23:13   #4285
Заблокирован
 Разведчик
Аватар для Cheater-84
 
Cheater-84 никому не известный тип
Регистрация: 22.03.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 6 раз(а) в 5 сообщениях
Отправить сообщение для Cheater-84 с помощью Skype™
 
Exclamation Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Друзья, может кто подскажет, как в Pickups создать список невскрываемых сундуков или коробок...

PHP код:
class BoxPickuper(BaseActor):

    
def getOpeningPriceMsg(selfboxItem):
        
openingPrice boxItem.openingPrice[0]
        
count openingPrice.count
        item_name 
self._get_item_reader().get(openingPrice.item).name
        price_msg 
u'%d %s' % (countitem_name)
        return 
price_msg

    def perform_action
(self):
        
_loc self._get_game_state().get_game_loc().get_location_id()                                                    
        if 
_loc in ('un_07''un_06''isle_gnome'): return     
        
boxes self._get_game_location().get_all_objects_by_type(GamePickup.type)
        for 
box in boxes:
            
name self._get_item_reader().get_name(box)
            
boxItem self._get_item_reader().get(box.item)
            if 
box.item == '@FOOTBALL_GIFT_BOX':
                
self.cprint(u'6Нельзя открыть %s' name)
                continue
            if 
not hasattr(boxItem'openingPrice'):
                
enemies self._get_game_location().get_all_objects_by_type("pirateEnemy")
                
enemy_here 0
                
if enemies:
                    for 
enemy in enemies:
                        if(((
enemy.box.x)**2+(enemy.box.y)**2)**0.5 16):
                            
enemy_here 1
                            
break
                if(
enemy_here == 1):
                    
logger.info("Сильвер мешает вскрыть "+str(box.id))
                    continue
                
logger.info(u'Вскрываем %s' name)
                
pick_event GamePickItem(objId=box.id)
                
self._get_events_sender().send_game_events([pick_event])
                
self._get_game_location().remove_object_by_id(box.id
За ранее благодарю
  Ответить с цитированием
Старый 31.05.2015, 23:36   #4286
 Пехотинец
Аватар для vintets
 
vintets скоро будет известенvintets скоро будет известенvintets скоро будет известен
Регистрация: 01.08.2012
Сообщений: 95
Популярность: 255
Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от Cheater-84Посмотреть сообщение
Друзья, может кто подскажет, как в Pickups создать список невскрываемых сундуков или коробок...

PHP код:
if box.item in ('@FOOTBALL_GIFT_BOX''@VALENT_GIFT_BOX6'):
    continue 
  Ответить с цитированием
Старый 01.06.2015, 00:59   #4287
Заблокирован
 Разведчик
Аватар для Cheater-84
 
Cheater-84 никому не известный тип
Регистрация: 22.03.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 6 раз(а) в 5 сообщениях
Отправить сообщение для Cheater-84 с помощью Skype™
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от vintetsПосмотреть сообщение
PHP код:
if box.item in ('@FOOTBALL_GIFT_BOX''@VALENT_GIFT_BOX6'):
    continue 

спасибо Vint все работает, а для тех у кого включена рубка палочками, модуль wand.py, прописать надо то же самое, у себя заметил такую вещь, что какой бы остров не был прописан в палочках, бот все равно будет вскрывать ящики из этого модуля на всех островах.

в модуле wand.py -

PHP код:
    def BoxOpener(self):
        
box_all 0
        boxes 
self._get_game_location().get_all_objects_by_type(
                                                    
GamePickup.type)
        for 
box in boxes:
          
name self._get_item_reader().get_name(box)
          
boxItem self._get_item_reader().get(box.item)
          if 
box.item in ('@FOOTBALL_GIFT_BOX''@VALENT_GIFT_BOX6'):
            
self.cprint(u'6Невскрываем %s' name)
            continue
          if 
not hasattr(boxItem'openingPrice'):
            
logger.info(u'Вскрываем %s' name)
            
pick_event GamePickItem(objId=box.id)
            
self._get_events_sender().send_game_events([pick_event])
            
self._get_game_location().remove_object_by_id(box.id

Последний раз редактировалось Cheater-84; 01.06.2015 в 01:03.
  Ответить с цитированием
Старый 02.06.2015, 01:23   #4288
 Разведчик
Аватар для АлехВК
 
АлехВК никому не известный тип
Регистрация: 20.02.2012
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Код:
Traceback (most recent call last):
  File "main.py", line 108, in <module>
    run_game()
  File "main.py", line 90, in run_game
    Game(site, settings, UserPrompt(gui_input), gui_input=gui_input).start()
  File "D:\Programs\Pyton273\zombot\game_engine.py", line 531, in start
    self.eventLoop()
  File "D:\Programs\Pyton273\zombot\game_engine.py", line 570, in eventLoop
    self.perform_all_actions()
  File "D:\Programs\Pyton273\zombot\game_engine.py", line 672, in perform_all_actions
    actor.perform_action()
  File "D:\Programs\Pyton273\zombot\game_actors_and_handlers\roulettes.py", line 98, in perform_action
    roller=self.unconditionalPlayCost(game,next_play)
  File "D:\Programs\Pyton273\zombot\game_actors_and_handlers\roulettes.py", line 44, in unconditionalPlayCost
    if self._get_game_state().count_in_storageObjects(box)>0:return False
AttributeError: GameState instance has no attribute 'count_in_storageObjects'
Помогите с пиратской рулеткой.
Код самой рулетки.
И подскажите, как отключить что бы за дублоны не крутил?

PHP код:
# coding=utf-8
import logging
from game_state
.game_types import GameBuildingGamePlayGameDailyBonus
from game_actors_and_handlers
.base import BaseActor
from game_state
.game_event import obj2dictdict2obj

logger 
logging.getLogger(__name__)

class 
RouletteRoller(BaseActor):
    
def playCostGame(self,game,building_item):
        
rulettes = {
                    
# не комментировать ,а то будет крутить до упора,лучше остаток больше поставить
                    #    рулетка   |сколько оставлять фруктов  |сколько оставлять рецептов
                    
'B_SLOT_APPLE':{'B_SLOT_B_ROULETTE1':10000,'B_SLOT_APPLE_ROULETTE2':100},#         Яблочный автомат
                    
'B_SLOT_CHERRY':{'B_SLOT_B_ROULETTE1':10000,'B_SLOT_CHERRY_ROULETTE2':100},#       Вишнёвый автомат
                    
'B_SLOT_MANDARIN':{'B_SLOT_B_ROULETTE1':10000,'B_SLOT_MANDARIN_ROULETTE2':100},#   Мандариновый автомат
                    
'B_SLOT_LEMON':{'B_SLOT_B_ROULETTE1':100000,'B_SLOT_LEMON_ROULETTE2':10000},#     Лимонный автомат
                    
'B_SOLDIER':{'B_SOLDIER_ROULETTE2':100000,'B_SOLDIER_ROULETTE':10000},#           Адмирал
                    
}
        
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.building.x)**2+(enemy.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
                    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.idgame_id)
                
eventRoll.append(roll)
        if 
eventRoll:self._get_events_sender().send_game_events(eventRoll)

class 
GameResultHandler(object):
    
def __init__(selfitem_readergame_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
(selfevent_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.countu'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.itemgame_prize.count)
                    else:
self.__game_state_.add_from_storage(game_prize.itemgame_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.itemgame_prize.count)
                else:
self.__game_state_.add_from_storage(game_prize.itemgame_prize.count)
                
prizeSTR=u'приз: %s %s шт.'%(prize.name.upper(),str(game_prize.count))
                
logger.info(u"Крутанул '%s' %s"%(building.name,prizeSTR))

class 
FrutRouletteRoller(BaseActor):

    
def perform_action(self):
        
# '@R_56' Компот
        # '@R_57' Вишнёвый джем
        # '@R_58' Лимонный микс
        # '@R_59' Мармелад
        # '@R_60' Глазной суп
        # '@S_53' Мандарин
        # '@S_52' Вишня
        # '@S_51' Красные яблоки
        # '@S_55' Глазное яблоко
        #ftut_ids = ['@R_56','@R_57']
        
ftut_ids = {'@R_56'}
        for 
fr in ftut_ids:
            
frut_count=self._get_game_state().count_in_storage(fr)
            if 
frut_count==0: break
            
buildings self._get_game_location().get_all_objects_by_type(
                            
GameBuilding.type)
            for 
building in list(buildings):
                
building_item self._get_item_reader().get(building.item)
                for 
game in building_item.games:
                    
game_id game.id
                    play_cost 
None
                    
if hasattr(game'playCost'):
                        
play_cost game.playCost.item

                    
#{"type":"roulette","id":"B_SLOT_APPLE_ROULETTE2","level":1,"delayTime":0,"title":"Бонус-Рулетка","hint":"Крути рулетку за 1 Компот, чтобы испытать удачу.","playCost":{"count":1,"image":"storage/recipe_56.png","item":"@R_56"},"prizes":[{"count":1,"item":"@EGG_01"},{"count":5,"item":"@RED_SPEEDUPER"},{"count":1,"item":"@EGG_02"},{"count":10,"item":"@RED_TREE_FERTILIZER"},{"count":5,"item":"@RED_SPEEDUPER"},{"count":1,"item":"@EGG_04"},{"count":10,"item":"@RED_TREE_FERTILIZER"}]}
                    
next_play None
                    next_play_times 
building.nextPlayTimes.__dict__
                    
if game_id in next_play_times:
                        
next_play int(next_play_times[game_id])
                    if (
                            
next_play and
                            
self._get_timer().has_elapsed(next_play) and
                            
play_cost == fr
                    
):
                        
countR=0
                        
for i in range(frut_count):
                            
roll GamePlayGame(building.idgame_id)
                            
self._get_events_sender().send_game_events([roll])
                            
countR+=1
                            self
._get_game_state().remove_from_storage(fr,1)
                        
logger.info(u"Крутим рулетку %d раз в '%s' %d по координатам (%d,%d)"%(countR,building_item.name,building.id,building.x,building.y))
                        
#logger.info(u"Крутим рулетку "+str(countR)+" раз в '"+building_item.name + "' " +str(building.id)+u" по координатам (" +str(building.x) + u", " + str(building.y) + u")") 
  Ответить с цитированием
Старый 02.06.2015, 12:07   #4289
Заблокирован
 Разведчик
Аватар для Cheater-84
 
Cheater-84 никому не известный тип
Регистрация: 22.03.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 6 раз(а) в 5 сообщениях
Отправить сообщение для Cheater-84 с помощью Skype™
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от АлехВКПосмотреть сообщение
Код:
Traceback (most recent call last):
  File "main.py", line 108, in <module>
    run_game()
  File "main.py", line 90, in run_game
    Game(site, settings, UserPrompt(gui_input), gui_input=gui_input).start()
  File "D:\Programs\Pyton273\zombot\game_engine.py", line 531, in start
    self.eventLoop()
  File "D:\Programs\Pyton273\zombot\game_engine.py", line 570, in eventLoop
    self.perform_all_actions()
  File "D:\Programs\Pyton273\zombot\game_engine.py", line 672, in perform_all_actions
    actor.perform_action()
  File "D:\Programs\Pyton273\zombot\game_actors_and_handlers\roulettes.py", line 98, in perform_action
    roller=self.unconditionalPlayCost(game,next_play)
  File "D:\Programs\Pyton273\zombot\game_actors_and_handlers\roulettes.py", line 44, in unconditionalPlayCost
    if self._get_game_state().count_in_storageObjects(box)>0:return False
AttributeError: GameState instance has no attribute 'count_in_storageObjects'
Помогите с пиратской рулеткой.
Код самой рулетки.
И подскажите, как отключить что бы за дублоны не крутил?

PHP код:
# coding=utf-8
import logging
from game_state
.game_types import GameBuildingGamePlayGameDailyBonus
from game_actors_and_handlers
.base import BaseActor
from game_state
.game_event import obj2dictdict2obj

logger 
logging.getLogger(__name__)

class 
RouletteRoller(BaseActor):
    
def playCostGame(self,game,building_item):
        
rulettes = {
                    
# не комментировать ,а то будет крутить до упора,лучше остаток больше поставить
                    #    рулетка   |сколько оставлять фруктов  |сколько оставлять рецептов
                    
'B_SLOT_APPLE':{'B_SLOT_B_ROULETTE1':10000,'B_SLOT_APPLE_ROULETTE2':100},#         Яблочный автомат
                    
'B_SLOT_CHERRY':{'B_SLOT_B_ROULETTE1':10000,'B_SLOT_CHERRY_ROULETTE2':100},#       Вишнёвый автомат
                    
'B_SLOT_MANDARIN':{'B_SLOT_B_ROULETTE1':10000,'B_SLOT_MANDARIN_ROULETTE2':100},#   Мандариновый автомат
                    
'B_SLOT_LEMON':{'B_SLOT_B_ROULETTE1':100000,'B_SLOT_LEMON_ROULETTE2':10000},#     Лимонный автомат
                    
'B_SOLDIER':{'B_SOLDIER_ROULETTE2':100000,'B_SOLDIER_ROULETTE':10000},#           Адмирал
                    
}
        
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.building.x)**2+(enemy.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
                    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.idgame_id)
                
eventRoll.append(roll)
        if 
eventRoll:self._get_events_sender().send_game_events(eventRoll)

class 
GameResultHandler(object):
    
def __init__(selfitem_readergame_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
(selfevent_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.countu'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.itemgame_prize.count)
                    else:
self.__game_state_.add_from_storage(game_prize.itemgame_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.itemgame_prize.count)
                else:
self.__game_state_.add_from_storage(game_prize.itemgame_prize.count)
                
prizeSTR=u'приз: %s %s шт.'%(prize.name.upper(),str(game_prize.count))
                
logger.info(u"Крутанул '%s' %s"%(building.name,prizeSTR))

class 
FrutRouletteRoller(BaseActor):

    
def perform_action(self):
        
# '@R_56' Компот
        # '@R_57' Вишнёвый джем
        # '@R_58' Лимонный микс
        # '@R_59' Мармелад
        # '@R_60' Глазной суп
        # '@S_53' Мандарин
        # '@S_52' Вишня
        # '@S_51' Красные яблоки
        # '@S_55' Глазное яблоко
        #ftut_ids = ['@R_56','@R_57']
        
ftut_ids = {'@R_56'}
        for 
fr in ftut_ids:
            
frut_count=self._get_game_state().count_in_storage(fr)
            if 
frut_count==0: break
            
buildings self._get_game_location().get_all_objects_by_type(
                            
GameBuilding.type)
            for 
building in list(buildings):
                
building_item self._get_item_reader().get(building.item)
                for 
game in building_item.games:
                    
game_id game.id
                    play_cost 
None
                    
if hasattr(game'playCost'):
                        
play_cost game.playCost.item

                    
#{"type":"roulette","id":"B_SLOT_APPLE_ROULETTE2","level":1,"delayTime":0,"title":"Бонус-Рулетка","hint":"Крути рулетку за 1 Компот, чтобы испытать удачу.","playCost":{"count":1,"image":"storage/recipe_56.png","item":"@R_56"},"prizes":[{"count":1,"item":"@EGG_01"},{"count":5,"item":"@RED_SPEEDUPER"},{"count":1,"item":"@EGG_02"},{"count":10,"item":"@RED_TREE_FERTILIZER"},{"count":5,"item":"@RED_SPEEDUPER"},{"count":1,"item":"@EGG_04"},{"count":10,"item":"@RED_TREE_FERTILIZER"}]}
                    
next_play None
                    next_play_times 
building.nextPlayTimes.__dict__
                    
if game_id in next_play_times:
                        
next_play int(next_play_times[game_id])
                    if (
                            
next_play and
                            
self._get_timer().has_elapsed(next_play) and
                            
play_cost == fr
                    
):
                        
countR=0
                        
for i in range(frut_count):
                            
roll GamePlayGame(building.idgame_id)
                            
self._get_events_sender().send_game_events([roll])
                            
countR+=1
                            self
._get_game_state().remove_from_storage(fr,1)
                        
logger.info(u"Крутим рулетку %d раз в '%s' %d по координатам (%d,%d)"%(countR,building_item.name,building.id,building.x,building.y))
                        
#logger.info(u"Крутим рулетку "+str(countR)+" раз в '"+building_item.name + "' " +str(building.id)+u" по координатам (" +str(building.x) + u", " + str(building.y) + u")") 

если не ошибаюсь, то game_engine.py - class GameState():


после def set_from_storage_objects....

PHP код:
    def count_in_pirate_instruments(selfitem_id):
        
item_id item_id.lstrip('@')
        
item_id '@'+item_id
        
for itemid in self.__game_state.pirate.instruments:
            if 
itemid.item == item_id:return itemid.count
        
return 0

    def remove_from_pirate_instruments
(selfitem_idcount):
        
item_id item_id.lstrip('@')
        
item_id '@'+item_id
        
for itemid in self.__game_state.pirate.instruments:
            if 
hasattr(itemid"item"):
                if 
itemid.item != item_id:continue
                
itemid.count -= count
                
return True
        
return False

    def add_pirate_instruments
(selfitem_idcount):
        
item_id item_id.lstrip('@')
        
item_id '@'+item_id
        
for itemid in self.__game_state.pirate.instruments:
            if 
hasattr(itemid"item"):
                if 
itemid.item != item_id:continue
                
itemid.count += count
                
return
        
self.set_pirate_instruments(item_idcount)
        

    
def set_pirate_instruments(selfitem_idcount):
        
itemid=dict2obj({u'item'item_idu'count'count})
        
self.__game_state.pirate.instruments.append(itemid

P.S. если что подправьте меня
  Ответить с цитированием
Старый 02.06.2015, 13:49   #4290
 Пехотинец
Аватар для vintets
 
vintets скоро будет известенvintets скоро будет известенvintets скоро будет известен
Регистрация: 01.08.2012
Сообщений: 95
Популярность: 255
Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от АлехВКПосмотреть сообщение
И подскажите, как отключить что бы за дублоны не крутил?

После
PHP код:
                if hasattr(game,'unconditionalPlayCost'):
                    
roller self.unconditionalPlayCost(game,next_play
добавь
PHP код:
                    roller False 
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Программа] Zombot (Клиент для игры Зомби ферма) AnonProger Баги игр ВКонтакте 189 26.08.2014 15:50
[Статья] Небольшие секреты игры зомби ферма haussuper Баги игр ВКонтакте 11 26.01.2013 10:54
[Информация] Зомби Ферма dekirillov Баги игр ВКонтакте 40 22.10.2011 18:25

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 01:42.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net