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

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

-

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

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

Ответ
 
Опции темы
Старый 02.06.2014, 02:19   #2326
 Разведчик
Аватар для maks1995star
 
maks1995star никому не известный тип
Регистрация: 24.09.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

кто нибуть сделайте что б удобряло грядки пожалуйста я даже скину 20 изума за роботу
  Ответить с цитированием
Старый 02.06.2014, 11:19   #2327
 Пехотинец
Аватар для vintets
 
vintets скоро будет известенvintets скоро будет известенvintets скоро будет известен
Регистрация: 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
 Разведчик
Аватар для HotBlood
 
HotBlood никому не известный тип
Регистрация: 19.07.2012
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Есть предложения реализовать функцию которая будет сканировать друзей и выводить в отдельный, всех кто в тюрьме и людей попадающий под определённый уровень( к примеру ниже 20), да бы можно было почистить друзей в приложении, а потом этот список засунуть в vkbot и по удалять.
Так же мб возможно сканировать друзей вк и в зф и выделить тех кто не играет и удалить.На данный момент тем же vkbot ботом достаю список друзей в вк +переделанный бот который засовывает id всех друзей в список + программа для сравнения текстов и так удаляю, слишком долго(
  Ответить с цитированием
Старый 02.06.2014, 16:04   #2329
 Пехотинец
Аватар для vintets
 
vintets скоро будет известенvintets скоро будет известенvintets скоро будет известен
Регистрация: 01.08.2012
Сообщений: 95
Популярность: 255
Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от HotBloodПосмотреть сообщение
Есть предложения реализовать функцию которая будет сканировать друзей и выводить в отдельный, всех кто в тюрьме и людей попадающий под определённый уровень( к примеру ниже 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
 Разведчик
Аватар для maks1995star
 
maks1995star никому не известный тип
Регистрация: 24.09.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от vintetsПосмотреть сообщение
Зачем размахивать изюмом на ветке бота? Кому он нужен. Или тут есть такие кто за изюм пишет?

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

спасибо большое
  Ответить с цитированием
Старый 02.06.2014, 18:41   #2331
 Разведчик
Аватар для Kipari40
 
Kipari40 никому не известный тип
Регистрация: 25.05.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для Kipari40 с помощью Skype™
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от vintetsПосмотреть сообщение
В 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

А не подскажешь в каком файле этот def ?
  Ответить с цитированием
Старый 02.06.2014, 20:25   #2332
 Разведчик
Аватар для Taras37
 
Taras37 никому не известный тип
Регистрация: 31.05.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Напишите пожалуйста подробный ( пошаговый) мануал к установке и настройке zombotа. Столкнулся с проблемой при его запуске, Python до этого ни разу не пользовался, возможно, что-либо напутал. Помогите пожалуйста.....
  Ответить с цитированием
Старый 02.06.2014, 22:54   #2333
 Пехотинец
Аватар для vintets
 
vintets скоро будет известенvintets скоро будет известенvintets скоро будет известен
Регистрация: 01.08.2012
Сообщений: 95
Популярность: 255
Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от Kipari40Посмотреть сообщение
А не подскажешь в каком файле этот def ?

В гейменжине, после того как добавишь туда конечно. Читай пост про дарение бесплаток.
  Ответить с цитированием
Старый 03.06.2014, 01:59   #2334
 Разведчик
Аватар для HotBlood
 
HotBlood никому не известный тип
Регистрация: 19.07.2012
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от vintetsПосмотреть сообщение
В гейменжине, после того как добавишь туда конечно. Читай пост про дарение бесплаток.

Вроде всё пытался сделать правильно, но получилось как всегда.Бот просто мигает и не запускается в обще.
Бот в сообщении
Вложения
Тип файла: rar Приём всех подарков.rar (658.6 Кб, 26 просмотров)
  Ответить с цитированием
Старый 03.06.2014, 19:03   #2335
 Разведчик
Аватар для Miha88
 
Miha88 никому не известный тип
Регистрация: 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 GamePlantGameFruitTreeGameSlag,\
    
GameDigItemGamePickItemGameBuyItemGameSellItemGameUseStorageItemGameFertilizeTree
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).namegot_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_itemsself._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(selfharvestItem,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.typeitem_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(0L0L0L).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<0time_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<>0logger.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.yground.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(selfseed_item):
        
seed_reader GameSeedReader(self._get_item_reader())
        
game_state self._get_game_state()
        return 
seed_reader.is_item_available(seed_itemgame_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__(selfgame_location):
        
self.__game_location game_location

    def handle
(selfevent_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' % (kuser_id)) 

Последний раз редактировалось Miha88; 03.06.2014 в 19:07.
  Ответить с цитированием
Старый 03.06.2014, 19:27   #2336
 Разведчик
Аватар для Kipari40
 
Kipari40 никому не известный тип
Регистрация: 25.05.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для Kipari40 с помощью Skype™
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от vintetsПосмотреть сообщение
В гейменжине, после того как добавишь туда конечно. Читай пост про дарение бесплаток.

НЕ работает все равно
Код:
# 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
 Разведчик
Аватар для Znewf
 
Znewf никому не известный тип
Регистрация: 01.03.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Отправить сообщение для Znewf с помощью ICQ
 
Thumbs up Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от vintetsПосмотреть сообщение
У меня так: в gifts.py добавлено
импорт в начале...

спасибо, все работает.

Последний раз редактировалось Znewf; 03.06.2014 в 19:36.
  Ответить с цитированием
Старый 04.06.2014, 15:06   #2338
 Пехотинец
Аватар для vintets
 
vintets скоро будет известенvintets скоро будет известенvintets скоро будет известен
Регистрация: 01.08.2012
Сообщений: 95
Популярность: 255
Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от Kipari40Посмотреть сообщение
НЕ работает все равно

Вот
Вложения
Тип файла: zip game_engine Kipari40.zip (8.8 Кб, 68 просмотров)
  Ответить с цитированием
Старый 04.06.2014, 15:58   #2339
 Разведчик
Аватар для HotBlood
 
HotBlood никому не известный тип
Регистрация: 19.07.2012
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от vintetsПосмотреть сообщение
Вот

Безумно благодарный за помощь, но бот просто мигает и не работает
Запустил main`ик в редакторе питона да бы посмотреть ошибку( т.к консоль просто мигает и не успеешь прочитать ошибку) запустил через редактор увидел ошибку импорта файлов (т.к в гейм инжине есть импортированные файлы которых у меня нет, т.к я брал гейм инжин из другой сборки, так вот я удалил строки импорта, но проблема не решилась.
Прикрепил бот с файлом game_engine который скинул vintets, мб кто решит
Буду благодарен любой помощи.
Вложения
Тип файла: rar Приём всех подарков1.rar (661.6 Кб, 36 просмотров)

Последний раз редактировалось HotBlood; 04.06.2014 в 15:58. Причина: ошибка
  Ответить с цитированием
Старый 04.06.2014, 16:50   #2340
 Пехотинец
Аватар для vintets
 
vintets скоро будет известенvintets скоро будет известенvintets скоро будет известен
Регистрация: 01.08.2012
Сообщений: 95
Популярность: 255
Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от HotBloodПосмотреть сообщение
Безумно благодарный за помощь, но бот просто мигает и не работает
Запустил main`ик в редакторе питона да бы посмотреть ошибку( т.к консоль просто мигает и не успеешь прочитать ошибку) запустил через редактор увидел ошибку импорта файлов (т.к в гейм инжине есть импортированные файлы которых у меня нет, т.к я брал гейм инжин из другой сборки, так вот я удалил строки импорта, но проблема не решилась.
Прикрепил бот с файлом game_engine который скинул vintets, мб кто решит
Буду благодарен любой помощи.

в gifts.py вставить 125-й строкой
PHP код:
if not hasattr (self._get_game_state() , "playersInfo"): return 
в 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 код:
@pause 
Чтобы получить списки игроков с низким уровнем в
PHP код:
if 0#  списки ниже 20 уровня и забаненных 
поменять 0 на 1 (включить)
Вложения
Тип файла: zip Приём всех подарков1.zip (80.9 Кб, 64 просмотров)

Последний раз редактировалось vintets; 04.06.2014 в 16:55.
  Ответить с цитированием
Ответ


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

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, время: 07:24.

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