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

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

-

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

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

Ответ
 
Опции темы
Старый 20.12.2013, 09:50   #586
 Разведчик
Аватар для 4erepaha89
 
4erepaha89 никому не известный тип
Регистрация: 18.12.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Доброго дня. Как запустить бота так, чтобы вконтакте не было видно что ты онлайн и запущена зомбиферма?
  Ответить с цитированием
Старый 20.12.2013, 18:30   #587
 Разведчик
Аватар для Anch665
 
Anch665 никому не известный тип
Регистрация: 21.12.2012
Сообщений: 29
Популярность: 10
Сказал(а) спасибо: 20
Поблагодарили 4 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от 4erepaha89Посмотреть сообщение
Как запустить бота так, чтобы вконтакте не было видно что запущена зомбиферма?

В настройках приложения сними галочку:
Показывать приложение на моей странице во время игры
  Ответить с цитированием
Старый 22.12.2013, 00:00   #588
 Разведчик
Аватар для zloy_gnom_2012
 
zloy_gnom_2012 никому не известный тип
Регистрация: 19.05.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Один парень писал дополнения для открытия подарков, сейчас занят не может помочь, может вы поможете, в чём дело ?
вот код :
Цитата:
# coding=utf-8
import logging
from game_actors_and_handlers.base import BaseActor
from game_state.game_event import dict2obj, obj2dict

logger = logging.getLogger(__name__)

class VisitingUsers(BaseActor):

def perform_action(self):
#frends_ids = self._get_options()
#seeds = ['P_06','P_23','P_10','P_13']
'''
for itemid in self._get_game_state().get_state().storageItems:
#for seed in seeds:
#seedm = seed.replace('P_', '@S_')
if hasattr(itemid, "item"):# and itemid.item[:3] == "@S_":
try:
name = self._get_item_reader().get('P_'+itemid.item[3:]).name
except:
name = "N/A"
# print type(name)
count = self._get_game_state().count_in_storage(itemid.ite m)
#print name[:-1]
open('storage.txt', 'a').write((name+": "+str(count)+"\t\t"+itemid.item+"\n").encode(' utf-8', 'ignore'))
print u'######## Готово ! ! ! ########'
'''
if not hasattr(self._get_game_state(),'vgbstp'):
change_location_event = {
"user": None,
"locationId" : "isle_x",
"type":"gameState",
"action":"gameState",
"objId": None,
"extraId":None}
print u'Переходим на Остров X'
self._get_events_sender().send_game_events([change_location_event])
gifts = list(set(self._get_game_state().get_state().gifts) )
for gift in gifts:
#open('gifts.txt', 'a').write(gift.item + "\t" + str(gift.count) + "\n")
if gift.item == '@VALENT_GIFT_BOX1':
apply_event={
"action":"applyCompGift",
"type":"item",
"x":39, # А вот тут остается надеяться что по координатам ничего нет
"y":45, #
"objId":gift.id,
"itemId":gift.item}
print u'Устанавливаем подарок'
self._get_events_sender().send_game_events([apply_event])
pick_event = GamePickItem(objId=gift.id)
print u'Открываем подарок'
self._get_events_sender().send_game_events([pick_event])
if not hasattr(self._get_game_state(),'vgbstp'):self._get _game_state().vgbstp = 1
break


#open('giftsVGB.txt', 'a').write(str(obj2dict(gift)) + "\n")
print u'######## Готово ! ! ! ########'


а вот что он выдаёт:
[Ссылки могут видеть только зарегистрированные пользователи. ]

Добавлено через 51 минуту
доделал вроде копание , но ещё есть одна ошибка , не могу понять в чём дело , пишет :
sig is not valid
и перезапускается, и копает с первого друга, можно ли как то сделать чтоб начинал копать с того на ком закончил?
вот сам файл:
[Ссылки могут видеть только зарегистрированные пользователи. ]

Последний раз редактировалось zloy_gnom_2012; 22.12.2013 в 00:52. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 22.12.2013, 08:29   #589
Заблокирован
 Разведчик
Аватар для Cheater84
 
Cheater84 неизвестен в этих краях
Регистрация: 27.08.2013
Сообщений: 2
Популярность: -54
Сказал(а) спасибо: 5
Поблагодарили 15 раз(а) в 14 сообщениях
 
Exclamation Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

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



а вот что он выдаёт:
[Ссылки могут видеть только зарегистрированные пользователи. ]

Добавлено через 51 минуту
доделал вроде копание , но ещё есть одна ошибка , не могу понять в чём дело , пишет :
sig is not valid
и перезапускается, и копает с первого друга, можно ли как то сделать чтоб начинал копать с того на ком закончил?
вот сам файл:
[Ссылки могут видеть только зарегистрированные пользователи. ]


game_engine
PHP код:
# coding=utf-8
import random
import ssl
import message_factory
from message_factory import Session
import vkontakte
from settings import Settings
import vkutils
import pymymailru
import mrutils
import logging
import time
from game_state
.item_reader import GameItemReader
from game_state
.game_event import dict2objobj2dict
from game_state
.game_types import GameEVTGameTIMEGameSTARTGameInfoGameFertilizePlantGamePlayGameGameStartGainMaterialGameStartTimeGainEvent
import pprint
from game_actors_and_handlers
.gifts import GiftReceiverBotAddGiftEventHandlerCakesReceiverBot
from game_actors_and_handlers
.plants import HarvesterBotSeederBotPlantEventHandlerGameSeedReaderUseEggItemBotFertilBot
from game_actors_and_handlers
.harvest_buff import GameBuffHarvest
from game_actors_and_handlers
.extra_money import HarvestExchange
from game_actors_and_handlers
.chop import PirateTreeCut
from game_actors_and_handlers
.roulettes import RouletteRollerGameResultHandlerFrutRouletteRoller
from game_actors_and_handlers
.wood_graves import WoodPickerWoodTargetSelecter
from game_actors_and_handlers
.building_buyer import BuildingBuyer
from game_actors_and_handlers
.travel_buff import GameTravelBuff
from game_actors_and_handlers
.friend_dig import FriendDigger
from game_actors_and_handlers
.cook_graves import BrewPickerCookerBotRecipeReaderCookSpeed
from game_actors_and_handlers
.digger_graves import BagsPickerTimeGainEventHandler
from game_actors_and_handlers
.stone_graves import StonePickerStoneTargetSelecter
from game_actors_and_handlers
.workers import GainMaterialEventHandler
from game_actors_and_handlers
.pickups import PickuperAddPickupHandler,BoxPickuper
from game_actors_and_handlers
.location import ChangeLocationBotGameStateEventHandler
from game_actors_and_handlers
.friends import VisitingUsers
from game_state
.brains import PlayerBrains
from game_actors_and_handlers
.wand import MagicWand
import socket
import urllib2
from game_actors_and_handlers
.burrowing import DigBotDigBotEventHandler
from game_actors_and_handlers
.storage import SellBot
from game_actors_and_handlers
.missions import GetMissionsBotViewMissions

logger 
logging.getLogger(__name__)



class 
GameLocation():

    
def __init__(selfitem_readergame_locationgame_objects):
        
self.__item_reader item_reader
        self
.__game_location game_location
        self
.__game_objects game_objects
        self
.__pickups = []

    
def append_object(selfobj):
        
self.get_game_objects().append(obj)

    
def get_game_location(self):
        return 
self.__game_location

    def get_game_objects
(self):
        return 
self.__game_objects

    def get_location_id
(self):
        return 
self.__game_location.id

    def get_all_objects_by_types
(selfobject_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
(selfobject_type):
        return 
self.get_all_objects_by_types([object_type])

    
def get_object_by_id(selfobj_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(selfobj_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(selfpickups):
        
self.__pickups += pickups

    def remove_pickup
(selfpickup):
        
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(28004000))
        
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
(selfsending_time):
        
self._client_time += sending_time

    def has_elapsed
(selftime):
        return 
int(time) <= self._get_current_client_time()


class 
GameEventsSender(object):
    
def __init__(selfrequest_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(selfevents=[]):
        
'''
        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
        
#return game_response.events

    
def remove_game_event(selfevent):
        
self.__events_to_handle.remove(event)


class 
GameInitializer():
    
def __init__(selftimersite):
        
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_keyserver_time self.get_time()

        
# send START
        
start_responsefriendsid self.start_game(server_timesession_key)
        
#for friend in friendsid:
        #    print "####"+str(friend)
        
logger.info('Остров загружен!')
        return 
start_responsefriendsidserver_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.keyresponse.time

    def __create_request_sender
(self):
        
api_user_idgame_auth_keyapi_access_tokenconnection self.__site.get_game_params()
        
self.__api_access_token api_access_token
        self
.__connection connection
        self
.__session Session(api_user_idgame_auth_key,
                                 
client_version=Game.CLIENT_VERSION)
        
factory message_factory.Factory(self.__sessionNone)
        
request_sender RequestSender(factory,
                                       
self.__connection)
        
self.__factory factory
        
return request_sender

    def start_game
(selfserver_timesession_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
        
commandfriendsid self.__site.create_start_command(server_timeclient_time)
        
#for friend in friendsid:
        #    print "@@@@@@@@@@@@@@@@"+str(friend)
        
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__(selfstart_responseitem_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_counttotal_brain_count))
        
x=0
        z
=0
        
for burySlot in self.__game_state.burySlots:
            
x+=1
            
if (hasattr(burySlotu"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>=3s=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(selfgame_state_event):
        
self.__game_loc GameLocation(self.__item_reader,
                                       
game_state_event.location,game_state_event.gameObjects)
        for 
attrval in game_state_event.__dict__.iteritems():
            
self.__game_state.__setattr__(attrval)
        
#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
(selfitem_idcount):
        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
(selfitem_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
(selfitem_idcount):
        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
(selfitem_idcount):
        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_idcount)

    
def set_from_storage(selfitem_idcount):
        
itemid=dict2obj({item_id:count})
        
self.__game_state.storageItems.append(itemid)


class 
Game():

    
#CLIENT_VERSION = long(1362084734)
    
CLIENT_VERSION long(1378103895)

    
def __init__(selfsitesettings,
                 
user_promptgame_item_reader=Nonegui_input=None):
        
logger.info('Логинимся...')

        
self.__timer GameTimer()
        
self.__game_initializer GameInitializer(self.__timersite)
        
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 True
        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(''):
                    
#name = self.__itemReader.get(self.__selected_seed).name
                    
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(selfreader_classprompt_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(selfsetting_id):
        return 
self.__settings.get


    def running
(self):
        if 
self.__gui_input:
            
running self.__gui_input.running
        
else:
            
running lambdaTrue
        
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.eventLoop()
            
except urllib2.HTTPErrore:
                
raise e
            except 
(socket.timeouturllib2.HTTPErrorurllib2.URLError):
                
seconds 3
                logger
.error('Timeout occurred, retrying in %s seconds...'
                             
seconds)
                
time.sleep(seconds)
            
except (socket.errorssl.SSLError) as e:
                
seconds 10
                logger
.error('Socket error occurred, retrying in %s seconds...'
                             
seconds)
                
time.sleep(seconds)
            
except message_factory.GameErrore:
                if 
not self.__ignore_errors:
                    
raise e

    def save_game_state
(selfstart_response):
        
# parse game state
        
self.__game_state_ GameState(start_responseself.__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 8
        refresh_min 
9999
        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)==1logger.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,
                   
'FriendDigger':self.__friendsid,
                   
'DigBot':self.__friendsid,#self.__game_events_sender,
                   
'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 
= [
            
#DigBot,             # Работа с мозгами
            #GetMissionsBot,     # Запрос выполнения миссий 
            #VisitingUsers,      # Посещение друзей
        #    WoodPicker,         # Сбор дерева
        #    StonePicker,        # Сбор камня
        #    BrewPicker,         # Сбор сваренного
        #    BagsPicker,         # Сбор сумок
        #    WoodTargetSelecter, # Отправка работать дровосекам
        #    StoneTargetSelecter,# Отправка работать камнетёсов
            #PirateTreeCut,
        ###    GameBuffHarvest,
            #HarvestExchange, #  обмен роз на деньги Мая
            #GameTravelBuff,  #  создание проездного на 5 дней
            
FriendDigger,      ###### копание кладов у друзей   
        #    CookerBot,          # Работа с поварами (подъем из могил, установка рецептов)
            #CookSpeed,          # Посолить рецепты
            #FertilBot,          # Удобрение деревьев
        #    HarvesterBot,       # Сбор чего либо + вскапывание грядок
            #CakesReceiverBot,   # Сбор пряников
        #    SeederBot,          # Посейка
            #GiftReceiverBot,    # Принятие подарков
        #    BoxPickuper,        # Вскрытие чего либо
        #    RouletteRoller,     # Кручение рулеток
            #FrutRouletteRoller, # Кручение фруктовых рулеток
            #UseEggItemBot,      # Бить яйца ;)
            # MagicWand,          # Добыча ресурсов палочками
        #    Pickuper,           # Сбор дропа
            # SellBot,            # Продажа чего либо
            #ChangeLocationBot,  # Переход по локациям
        
]
        
self.__actors = []
        for 
actor_class in actor_classes:
            
self.__actors.append(
                
actor_class(item_readergame_stateevents_sendertimer,
                            
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(selfevent_to_handle):
        if 
event_to_handle.action == 'addGift':
            
AddGiftEventHandler(self.get_game_state()).handle(event_to_handle)
        if 
event_to_handle.type == 'alert':
            if 
event_to_handle.msg == 'SERVER_NEW_YEAR_GIFT_NOT_ALLOW':
                
self.__game_state_.nyna 1
            elif event_to_handle
.msg == 'SERVER_REMOTE_TREASURE_ALL_DIGGED':
                
self.__game_state_.alldigged 1
        elif event_to_handle
.action[:4] == 'ping':
            
#print "PING"
            
pass
        elif event_to_handle
.action == 'add':
            if 
event_to_handle.type == 'pickup':
                
AddPickupHandler(self.__itemReaderself.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.__itemReaderself.get_game_loc(),
                                     
self.__timer).handle(event_to_handle)
        
elif event_to_handle.type == GameStartTimeGainEvent.type:
            
TimeGainEventHandler(self.__itemReaderself.get_game_loc(),
                                 
self.__timer).handle(event_to_handle)
        
elif event_to_handle.type == 'gameState'# состояние игры
            
self.__game_state_.gameObjects event_to_handle.gameObjects
            
#GameStateEventHandler(self.__game_state_, self.__server_time,self.__setting_view).handle(event_to_handle)
        
elif event_to_handle.action == 'sendNewYearGift':
            
self.__game_state_.sendNewYearGift += 1
        elif event_to_handle
.type == 'mission':
            
ViewMissions(self.__itemReaderself.__setting_view).handle(event_to_handle)
        
elif event_to_handle.type == 'playersInfo':
            
#playersInfo = []
            #DigBotEventHandler().handle(event_to_handle)
            
self.__game_state_.playersInfo event_to_handle.players
        
else:
            
self.logUnknownEvent(event_to_handle)
        
self.__game_events_sender.remove_game_event(event_to_handle)


    
def logUnknownEvent(selfevent_to_handle):
        
logger logging.getLogger('unknownEventLogger')
        
#logger.info(
        
print "############### unknownEvent !!!!!!!!!!!!!!"
        
open('unknownEvent.txt','a').write(str(obj2dict(event_to_handle))+"\n")
        
open('unknownEvent.txt','a').write("-----------------------------------------------------------------------------------\n")

    
def _get_timer(self):
        return 
self.__timer

    def get_request_sender
(self):
        return 
self.__request_sender


class RequestSender(object):
    
def __init__(selfmessage_factoryconnection):
        
self.__factory message_factory
        self
.__connection connection

    def send
(selfdata):
        
data obj2dict(data)
        
assert 'type' in data
        request 
self.__factory.createRequest(data)
        return 
dict2obj(request.send(self.__connection))

    
def set_url(selfurl):
        
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(selfauth_key):
        
self.__factory.set_auth_key(auth_key
а это уже само копание
PHP код:
# coding=utf-8
import sys
import logging
import  random  
as  random_number
from game_state
.game_types import GameWoodGraveGameWoodGraveDouble,\
    
GamePickItemGameWoodTreeGameGainItemGamePickupGameDigItem
from game_state
.game_event import dict2objobj2dict
from game_actors_and_handlers
.base import BaseActor

logger 
logging.getLogger(__name__)


class 
FriendDigger(BaseActor):
    
def perform_action(self):
          
#logger.info(u"######### Идем к другу ###########")
          #go_to_friend = {"action":"gameState","locationId":"main","user":'201018303',"objId":None,"type":"gameState"}#{"id":8,"action":"gameState","objId":null,"locationId":"main","user":"144371056","type":"gameState"} #,"id":46667
          #friends = ['8477452','22656865','27505179','107183826','68030140','163206097']#'476111',
          
friends self._get_options()
          
#            Юдо              Чудо
          
friends = ['[BOT]friend1','[BOT]friend2'] + friends
          objtypes 
= ['decoration']
          
myid '201018303'
          
self._get_game_state().shovel 0
          
if not hasattr(self._get_game_state(),'countfnyt'):self._get_game_state().countfnyt 109
          
if not hasattr(self._get_game_state(), 'countnyt'):self._get_game_state().countnyt 0
          
if not hasattr(self._get_game_state(), 'sendNewYearGift'):self._get_game_state().sendNewYearGift 0
          
if not hasattr(self._get_game_state(), 'gameObjects') and self._get_game_state().countfnyt len(friends):
            
user friends[self._get_game_state().countfnyt]
            print (
u"######### Идем к другу "+str(user)+" "+str(self._get_game_state().countfnyt+1)+"/"+str(len(friends))+" #########").encode('cp866')
            
self._get_events_sender().send_game_events([{"action":"gameState","locationId":"main","user":str(user),"objId":None,"type":"gameState"},{"type":"players","action":"getInfo","players":[str(user)]}])
            
self._get_game_state().countfnyt += 1
          elif hasattr
(self._get_game_state(), 'gameObjects'):# and 
            
open('objects.txt''a').write(str(friends[self._get_game_state().countfnyt])+"\n")
            print 
"############### gameObjects #################"
            
countnyt 0
            countmyg 
0
            countpickup 
0
            objssvl 
= []
            if 
hasattr(self._get_game_state(),'alldigged'):alldigged 1
            
else: alldigged 0
            
for object in self._get_game_state().gameObjects:
                if 
self._get_game_state().countnyt countnyt 148:
                    if 
hasattr(object'type'):
                        
tf 0
                        
if object.type == 'newYearTree':
                            
tf 1
                            usrs 
len(object.users)
                            
#object.users = usrs
                            #open('newyeartree.txt', 'a').write(str(obj2dict(object))+"\n")
                        
if tf == and not hasattr(self._get_game_state(), 'nytend'): 
                            
#print (u"Ёлка !!!").encode('cp866')
                            #open('gameObjects.txt', 'a').write(str(obj2dict(object))+"\n")
                            #open('newyeartree.txt', 'a').write(object.item + " UsersGift:" + str(len(object.users)) + "\n")
                            
tf 1
                            f 
0
                            
#Ёлки разной ёмкости. указано не точно.
                            
if object.item == u'@B_SPRUCE_SMOLL' and len(object.users) < 31
                            
if object.item == u'@B_SPRUCE_MIDDLE' and len(object.users) < 61
                            
if object.item == u'@B_SPRUCE_BIG' and len(object.users) < 151
                            
#if object.item == u'@B_BASKETS_EASTER_1' and len(object.users) < 15: f = 1
                            #if object.item == u'@B_BASKETS_EASTER_2' and len(object.users) < 7: f = 1
                            #if object.item == u'@B_BASKETS_EASTER_3' and len(object.users) < 3: f = 1
                            
for user in object.users:
                                if 
user.id == myid:
                                    
countmyg+=1#print "MyGift"
                                    
0
                                    
break
                                
                            
#if not check_no_my_gift(object.users): f = 1
                            
if self._get_game_state().countnyt countnyt 151 or hasattr(self._get_game_state(),'nyna'):
                                
self._get_game_state().nytend 1
                                
print "################## END ####################"
                            
if == 1:
                                
# Ложим пряник
                                #open('newyeartree.txt', 'a').write(str(obj2dict(object)) + "\n")
                                #self._get_events_sender().send_game_events([{"itemId":"CAKE_PACK_FREE1","action":"remoteNewYear","type":"item","objId":object.id}])
                                
countnyt+=1
                                
#pass
                            #else: print "NO"
                        # Вскрываем сундук
                        
if tf == and object.type == 'pickup':
                            
#open('sunduki.txt', 'a').write(str(obj2dict(object)) + "\n")
                            
self._get_events_sender().send_game_events([{"action":"pick","type":"item","objId":object.id}])
                            
countpickup+=1
                            tf 
2
                        
# Добавляем в список объекты для копания клада
                        
if tf == and alldigged == 0:
                            for 
objtype in objtypes:
                                if 
object.type == objtype:
                                    if 
object.item == '@D_SAKURASMALL':
                                        print 
object.item,object.id
                                        objssvl
.append(object)
                                        break                            
                        if 
tf == 0:
                            
open('objects.txt''a').write(str(obj2dict(object))+"\n")
            if 
hasattr(self._get_game_state(),'playersInfo'):
                
open('objects.txt''a').write('-------------------------------------' "\n")
                
open('objects.txt''a').write(str(obj2dict(self._get_game_state().playersInfo))+"\n")
                
            
open('objects.txt''a').write('-------------------------------------' "\n")
            
countlop 0
            
if len(objssvl) > 0:
                for 
i in range(150):
                    
objdig random_number.choice(objssvl)
                    
self._get_events_sender().send_game_events([{"objId":objdig.id,"x":objdig.x,"action":"remoteDig","y":objdig.y,"type":"item"}])
                    
countlop+=1
                
print (u"Использовал: "+str(countlop)+u" лопат").encode('cp866')
            
elif alldigged == 1: print (u'Всё уже выкопано!').encode('cp866')
            else: print (
u'Нечего копать!').encode('cp866')
            print (
u"Вскрыли сундуков: "+str(countpickup)).encode('cp866')
            if 
hasattr(self._get_game_state(),'alldigged'): del self._get_game_state().alldigged
            del self
._get_game_state().gameObjects
            self
._get_game_state().countnyt += countnyt
            
print (u"поЛожил пряник(ов): "+str(self._get_game_state().sendNewYearGift)+":"+str(self._get_game_state().countnyt)+"/"+str(countnyt)+" dub: "+str(countmyg)).encode('cp866')
            
self._get_game_state().shovel 0
            
#if self._get_game_state().countfnyt + 1 > len(friends):sys.exit(0) 


я надеюсь кто хоть что-ниить соображает разберется в строках?а то я и так уже понодавал якобы прогерам с Жука,а оказалось что нет((
  Ответить с цитированием
Старый 22.12.2013, 10:26   #590
 Разведчик
Аватар для AlexVolt
 
AlexVolt никому не известный тип
Регистрация: 24.04.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

подскажите пожалуйста как избавится от этого баяна:
[Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
Старый 22.12.2013, 10:31   #591
 Разведчик
Аватар для zapilenko
 
zapilenko никому не известный тип
Регистрация: 29.05.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

ни у кого после обновления бот хуже работать не стал?
  Ответить с цитированием
Старый 22.12.2013, 12:11   #592
 Разведчик
Аватар для Anch665
 
Anch665 никому не известный тип
Регистрация: 21.12.2012
Сообщений: 29
Популярность: 10
Сказал(а) спасибо: 20
Поблагодарили 4 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от zapilenkoПосмотреть сообщение
ни у кого после обновления бот хуже работать не стал?

Вроде нет, всю ночь огороды ростил, сейчас северный полюс разрабатывает

Последний раз редактировалось Anch665; 22.12.2013 в 13:57.
  Ответить с цитированием
Старый 22.12.2013, 13:07   #593
 Разведчик
Аватар для ichi88
 
ichi88 никому не известный тип
Регистрация: 06.08.2011
Сообщений: 21
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

появился новый сундук (новогодний пиратский, пришлось дописать его, чтоб таверна норм работала... вроде работает =)
Цитата:

if game_id == "B_TAVERNA_ROULETTE_1":
pirate_box = 0
for _obj in list(self._get_game_state().get_state().storageGam eObjects):
if _obj.item == '@PIRATE_BOX' or '@PIRATE_BOX_2': pirate_box = 1
if pirate_box!=1 and (self._get_game_state().get_state().pirate.state != 'PIRATE'): play_cost = None
else: play_cost = game.unconditionalPlayCost


Последний раз редактировалось ichi88; 22.12.2013 в 13:19.
  Ответить с цитированием
Старый 22.12.2013, 13:56   #594
 Разведчик
Аватар для Anch665
 
Anch665 никому не известный тип
Регистрация: 21.12.2012
Сообщений: 29
Популярность: 10
Сказал(а) спасибо: 20
Поблагодарили 4 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Кто нибудь научил бота собирать сокровища на пиратском острове?
И еще где-то проскакивала инфа что кто-то научил бота крутить ежедневную рулетку.
  Ответить с цитированием
Старый 22.12.2013, 13:59   #595
 Разведчик
Аватар для As1x89
 
As1x89 скоро будет известенAs1x89 скоро будет известенAs1x89 скоро будет известен
Регистрация: 03.11.2012
Сообщений: 30
Популярность: 238
Сказал(а) спасибо: 26
Поблагодарили 3 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от Anch665Посмотреть сообщение
Кто нибудь научил бота собирать сокровища на пиратском острове?
И еще где-то проскакивала инфа что кто-то научил бота крутить ежедневную рулетку.

Научили, но сейчас проблема с сильверами...
Я уже выкладывал этого бота ранее
  Ответить с цитированием
Старый 22.12.2013, 15:15   #596
 Разведчик
Аватар для zloy_gnom_2012
 
zloy_gnom_2012 никому не известный тип
Регистрация: 19.05.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Помогите с открытием соседских...

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

logger 
logging.getLogger(__name__)

class 
VisitingUsers(BaseActor):
    
    
def perform_action(self):
        
#frends_ids = self._get_options()
        #seeds = ['P_06','P_23','P_10','P_13']
        
'''
        for itemid in self._get_game_state().get_state().storageItems:
            #for seed in seeds:
                #seedm = seed.replace('
P_', '@S_')
                if hasattr(itemid, "item"):# and itemid.item[:3] == "@S_":
                    try:
                        name = self._get_item_reader().get('
P_'+itemid.item[3:]).name
                    except:
                        name = "N/A"
                   # print type(name)
                    count = self._get_game_state().count_in_storage(itemid.item)
                    #print name[:-1]
                    open('
storage.txt', 'a').write((name+": "+str(count)+"\t\t"+itemid.item+"\n").encode('utf-8', 'ignore'))
                    print u'
########   Готово ! ! !  ########'
        
'''
        if not hasattr(self._get_game_state(),'
vgbstp'):
            change_location_event = {
                "user": None,
                "locationId" : "isle_x",
                "type":"gameState",
                "action":"gameState",
                "objId": None,
                "extraId":None}
            print u'
Переходим на Остров X'
            self._get_events_sender().send_game_events([change_location_event])
            gifts = list(set(self._get_game_state().get_state().gifts))
            for gift in gifts:
                #open('
gifts.txt', 'a').write(gift.item + "\t" + str(gift.count) + "\n")
                if gift.item == '
@VALENT_GIFT_BOX1':
                    apply_event={
                        "action":"applyCompGift",
                        "type":"item",
                        "x":39, # А вот тут остается надеяться что по координатам ничего нет
                        "y":45, #
                        "objId":gift.id,
                        "itemId":gift.item}
                    print u'
Устанавливаем подарок'
                    self._get_events_sender().send_game_events([apply_event])
                    pick_event = GamePickItem(objId=gift.id)
                    print u'
Открываем подарок'
                    self._get_events_sender().send_game_events([pick_event])
                    if not hasattr(self._get_game_state(),'
vgbstp'):self._get_game_state().vgbstp = 1
                    break
                
                
                #open('
giftsVGB.txt', 'a').write(str(obj2dict(gift)) + "\n")
            print u'
########   Готово ! ! !  ########' 
пишет Internal server error

Последний раз редактировалось zloy_gnom_2012; 22.12.2013 в 15:25.
  Ответить с цитированием
Старый 22.12.2013, 16:32   #597
 Разведчик
Аватар для Anch665
 
Anch665 никому не известный тип
Регистрация: 21.12.2012
Сообщений: 29
Популярность: 10
Сказал(а) спасибо: 20
Поблагодарили 4 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от As1x89Посмотреть сообщение
Научили, но сейчас проблема с сильверами...

А можно увидеть то чему научили? Хоть часть острова вырубит, да и северном полюсе сильверов нет.
  Ответить с цитированием
Старый 22.12.2013, 16:46   #598
 Разведчик
Аватар для mike4kz
 
mike4kz никому не известный тип
Регистрация: 23.08.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от Cheater84Посмотреть сообщение
я надеюсь кто хоть что-ниить соображает разберется в строках?а то я и так уже понодавал якобы прогерам с Жука,а оказалось что нет((

PHP код:
                        if tf == and object.type == 'pickup':
                            
#open('sunduki.txt', 'a').write(str(obj2dict(object)) + "\n")
                            
self._get_events_sender().send_game_events([{"action":"pick","type":"item","objId":object.id}])
                            
countpickup+=1
                            tf 

Вообще-то эти строки попадают под статью "грабеж, совершенный группой лиц с отягчающими обстоятельствами". Он вскрывает чужие сундуки и мешки кладоискателей. Что по меньшей мере неэтично...

Во-вторых, я нигде не видел ответа на запрос PING1 и PING2. При удаленном копании это очень критично - иначе игра как раз выдает invalid sig (если пришел ping, но на него не ответили "пустым event").
  Ответить с цитированием
Старый 22.12.2013, 16:54   #599
 Разведчик
Аватар для Kipari40
 
Kipari40 никому не известный тип
Регистрация: 25.05.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для Kipari40 с помощью Skype™
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от Cheater84Посмотреть сообщение
game_engine
PHP код:
# кодирование=utf-8
импорт случайных
импорт ssl
импорт message_factory
от message_factory импорта Сессии
импорт вконтакте
от настройки Параметров импорта
импорт vkutils
импорт pymymailru
импорт mrutils
импорта журнала
время импорта
от game_state
.item_reader импорта GameItemReader
от game_state
.game_event импорта dict2objobj2dict
от game_state
.game_types импорта GameEVTGameTIMEGameSTARTGameInfoGameFertilizePlantGamePlayGameGameStartGainMaterialGameStartTimeGainEvent
импорт pprint
от game_actors_and_handlers
.gifts импорта GiftReceiverBotAddGiftEventHandlerCakesReceiverBot
от game_actors_and_handlers
.plants импорта HarvesterBotSeederBotPlantEventHandlerGameSeedReaderUseEggItemBotFertilBot
от game_actors_and_handlers
.harvest_buff импорта GameBuffHarvest
от game_actors_and_handlers
.extra_money импорта HarvestExchange
от game_actors_and_handlers
.chop импорта PirateTreeCut
от game_actors_and_handlers
.roulettes импорта RouletteRollerGameResultHandlerFrutRouletteRoller
от game_actors_and_handlers
.wood_graves импорта WoodPickerWoodTargetSelecter
от game_actors_and_handlers
.building_buyer импорта BuildingBuyer
от game_actors_and_handlers
.travel_buff импорта GameTravelBuff
от game_actors_and_handlers
.friend_dig импорта FriendDigger
от game_actors_and_handlers
.cook_graves импорта BrewPickerCookerBotRecipeReaderCookSpeed
от game_actors_and_handlers
.digger_graves импорта BagsPickerTimeGainEventHandler
от game_actors_and_handlers
.stone_graves импорта StonePickerStoneTargetSelecter
от game_actors_and_handlers
.workers импорта GainMaterialEventHandler
от game_actors_and_handlers
.pickups импорта PickuperAddPickupHandler,BoxPickuper
от импорта game_actors_and_handlers
.location ChangeLocationBotGameStateEventHandler
от game_actors_and_handlers
.friends импорта VisitingUsers
от game_state
.brains импорта PlayerBrains
от game_actors_and_handlers
.wand импорта MagicWand
импорт гнездо
импорт urllib2
от game_actors_and_handlers
.burrowing импорта DigBotDigBotEventHandler
от game_actors_and_handlers
.storage импорта SellBot
от game_actors_and_handlers
.missions импорта GetMissionsBotViewMissions

Регистратор 
logging.getLogger(__name__)



класс GameLocation():

def тот же каталог(selfitem_readergame_locationgame_objects):
self.__item_reader item_reader
self
.__game_location game_location
self
.__game_objects game_objects
self
.__pickups = []

def append_object(selfobj):
self.get_game_objects().append(obj)

def get_game_location(self):
возвращение self.__game_location

def get_game_objects
(self):
возвращение self.__game_objects

def get_location_id
(self):
возвращение self.__game_location.id

def get_all_objects_by_types
(selfobject_types):
объекты = []
для game_object в self.get_game_objects():
item self.__item_reader.get(game_object.item)
если game_object.type в object_types или item.type в object_types:
objects.append(game_object)
возвращение объектов

def get_all_objects_by_type
(selfobject_type):
возвращение self.get_all_objects_by_types([object_type])

def get_object_by_id(selfobj_id):
для game_object в self.get_game_objects():
если game_object.id == obj_id:
возвращение game_object
возврата Нет

def log_game_objects
(self):
для gameObject в self.get_game_objects():
# если gameObject.type != "базовый":
Регистратор.info(obj2dict(gameObject))

def remove_object_by_id(selfobj_id):
для game_object в списке(self.get_game_objects()):
если game_object.id == obj_id:
self.get_game_objects().remove(game_object)

def get_pickups(self):
возвращение кортеж(self.__pickups)

def add_pickups(selfпикапы):
self.__pickups += пикапов

def remove_pickup
(selfпикап):
self.__pickups.remove(пикап)


класс GameTimer(объект):

def тот же каталог(self):
self._client_time 0
self
._start_time 0

def _get_client_time
(self):
случайные.seed()
self._client_time long(random.randrange(28004000))
self._start_time time.time()
возвращение self._client_time

def _get_current_client_time
(self):
"'
возвращает текущее время в игре (в миллисекундах)
"'
currentTime = self._client_time
currentTime += (time.time() - self._start_time) * 1000
возвращение currentTime

def _add_sending_time(self, sending_time):
self._client_time += sending_time

def has_elapsed(self, время):
возвращает значение типа int(время) <= self._get_current_client_time()


класс GameEventsSender(объект):
def тот же каталог(self, request_sender):
self.__events_to_handle = []
self.__request_sender = request_sender

def print_game_events(self):
если len(self.__events_to_handle) > 0:
logger.debug("получила события: %s" % self.__events_to_handle)

def get_game_events(self):
возвращает список(self.__events_to_handle)

def send_game_events(self, события=[]):
"'
Возвращает ключ (строкаи времени (int)
"'
если len(событий) > 0:
logger.debug("
события " отправить":% s" % событий)
команда = GameEVT(events=событий)
game_response = self.__request_sender.send(команда)
self.__events_to_handle += game_response.events
#вернуться game_response.events

def remove_game_event(само событие):
self.__events_to_handle.remove(событие)


класс GameInitializer():
def тот же каталог(self, таймер, сайта):
self.__timer = таймер
self.__site = сайт

def create_events_sender(self):
возвращение GameEventsSender(self.__request_sender)

def start(self):
logger.info('Загружаем остров...')
# ВРЕМЕНИ отправки запроса (http://java.shadowlands.ru/zombievk/go)
# обрабатывать переадресации (сохранить новый адрес: http://95.163.80.20/zombievk)
# разобрать auth ключ и времени id
session_key, server_time = self.get_time()

# НАЧАЛО отправить
start_response, friendsid = self.start_game(server_time, session_key)
#для друга в friendsid:
# print "
####"+str(друга)
logger.info('Остров загружен!')
возвращение start_responsefriendsidserver_time

def get_time
(self):
"'
Возвращает ключ (строка) и времени (int)
"'
self.__request_sender = self.__create_request_sender()
key = self.__site.get_time_key()
команда = GameTIME(клавиша клавиша=)
ответ = self.__request_sender.send(команда)
возвращение response.key, response.time

def __create_request_sender(self):
api_user_id, game_auth_key, api_access_token, соединение = self.__site.get_game_params()
self.__api_access_token = api_access_token
self.__connection = подключение
self.__session = Сессии(api_user_id, game_auth_key,
client_version=Game.CLIENT_VERSION)
завод = message_factory.Factory(self.__session, Нет)
request_sender = RequestSender(завод,
self.__connection)
self.__factory = завод
возвращение request_sender

def start_game(самостоятельная, 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()
#печать client_time, start_time
команда, friendsid = self.__site.create_start_command(server_time, client_time)
#для друга в friendsid:
# печать"@@@@@@@@@@@@@@@@"+str(друга)
sending_time = (time.time() - start_time) * 1000
self.__timer._add_sending_time(sending_time)
возвращение self.__request_sender.send(команды),friendsid

def _getUserInfo(self):
"'
возвращает пользователя info использованием api вконтакте
"'
# получить ВК пользователя info
api = vkontakte.api.API(token=self.__api_access_token)
info = api.getProfiles(
UID=self.__session.getUserId(), format='json',
поля='bdate,секс,имя,фамилия,город,страна')
info = информация[0]
если " 
bdate " в info:
bdate = info['bdate']
другое:
bdate = None
my_country = api.places.getCountryById(CID=int(info ["
страна"])) [0]
info ["
страна"] = my_country['name']
my_city = api.places.getCityById(CID=int(info['город']))[0]
info['город'] = my_city['name']
game_info = GameInfo(city=info['город'], имя=info['имя'],
фамилия=info['фамилия'],
uid=long(info['uid']), страны=info ["
страна"],
секс=long(info['секс']), bdate=bdate)
возвращение game_info


класс GameState():

def тот же каталог(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
для burySlot в self.__game_state.burySlots:
x+=1
если (hasattr(burySlot, u"
пользователь") Верно): z+=1
logger.info("
Использование слотов для закопки друзей: %d/%d" % (z,x))
если len(self.__game_state.buyedBrains)<>0:
logger.info("
Купленные:")
x=1
для buyed_brain в 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)
м=((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):
если я>=3s=str(self.__game_state.gameMoney)[i-3:i]+'.'+s
остальное
s=str(self.__game_state.gameMoney)[:i]+'.'+s
logger
.info("Деньги игрока: "+s[:-1])
#logger.info("")

def set_game_loc(selfgame_state_event):
self.__game_loc GameLocation(self.__item_reader,
game_state_event.location,game_state_event.gameObjects)
для attrв Валь game_state_event.__dict__.iteritems():
self.__game_state.__setattr__(attrval)
#self.get_game_loc().log_game_objects()

def get_location_id(self):
возвращение self.get_state().locationId

def get_game_loc
(self):
возвращение self.__game_loc

def get_state
(self):
возвращение self.__game_state

def get_brains
(self):
возвращение self.__player_brains

def has_in_storage
(selfitem_idcount):
для itemid в self.__game_state.storageItems:
если hasattr(itemid"элемент"):
если itemid.item == item_id:
возвращение itemid.count >= count
return False

def count_in_storage
(selfitem_id):
для itemid в self.__game_state.storageItems:
если hasattr(itemid"элемент"):
если itemid.item == item_id:
возвращение itemid.count
возвращает 0
,

def remove_from_storage(selfitem_idcount):
для itemid в self.__game_state.storageItems:
если hasattr(itemid"элемент"):
если itemid.item == item_id:
itemid.count -= count
return True
return False

def add_from_storage
(selfitem_idcount):
для itemid в self.__game_state.storageItems:
если hasattr(itemid"элемент"):
если itemid.item == item_id:
itemid.count += count
возвращение
self
.set_from_storage(item_idcount)

def set_from_storage(selfitem_idcount):
itemid=dict2obj({item_id:count})
self.__game_state.storageItems.append(itemid)


класс Игры():

#CLIENT_VERSION = long(1362084734)
CLIENT_VERSION long(1378103895)

def тот же каталог(selfсайтанастройки,
user_promptgame_item_reader=Nonegui_input=None):
logger.info('Логинимся...')

self.__timer GameTimer()
self.__game_initializer GameInitializer(self.__timerсайт)
self.__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 True
self
.__receive_non_free_gifts False
self
.__gui_input gui_input

# загрузка настроек
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 "
если self.__selected_seed<>None:
если (self.__selected_seed=='None'): print u'Выбранные семена: ничего не сажать'
другое:
если тип(self.__selected_seed)==тип("):
#name = self.__itemReader.get(self.__selected_seed).name
печать u'Выбранные семена: везде "
%s"'%str(self.__selected_seed)
другое:
печать u'Выбранные семена (остров - семена):'
для loc self.__selected_seed.keys():
если len(loc)>6: печать u'\t%s\t\t"
%s"'%(str(loc),str(self.__selected_seed[loc]))
остальное: печать u'\t%s\t\t\t"
%s"'%(str(loc),str(self.__selected_seed[loc]))
#print "
если self.__selected_recipe<>None:
если (self.__selected_recipe=='None'): print u'Выбранные рецепты: ничего не варить'
другое:
если тип(self.__selected_recipe)==тип("): print u'Выбранные рецепты: везде "%s"'%str(self.__selected_recipe)
elif типа(self.__selected_recipe)==([]): print u'Выбранные рецепты: везде "
%s"'%str(', '.join(self.__selected_recipe))
другое:
печать u'Выбранные семена (остров - рецепт):'
для loc в self.__selected_recipe.keys():
если len(loc)>6: печать u'\t%s\t\t"
%s"'%(str(loc),str(self.__selected_recipe[loc]))
остальное: печать u'\t%s\t\t\t"
%s"'%(str(loc),str(self.__selected_recipe[loc]))
если (self.__selected_sell==None): print u'Предметы на продажу: ничего не продавать'
другое:
печать u'Предметы на продажу (предмет - сколько оставить):'
для элемента в self.__selected_sell.keys():
печать u'\t"
%s"\t\t\t%s'%(str(позиция),str(self.__selected_sell[item]))
"
печать "
печать u'Настройки показа:'
если (self.__setting_view['пикап']): print u'\tПоказывать подбираемые предметы'
остальное: печать u'\показывать подбираемые предметы'
если (self.__setting_view['location_send']): print u'\tПоказывать перешедшую локацию'
остальное: печать u'\показывать перешедшую локацию'
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)
возвращение item_reader.get_by_name(item_name)

def select_plant_seed(self):
если self.__selected_seed None:
self.__selected_seed = self.select_item(GameSeedReader,
u'Семена для грядок:')

def select_recipe(self):
если Никто self.__selected_recipe:
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), где x в диапазоне(9)]

местах = {}
для размещения в self.get_game_state().locationInfos:
name = self.__itemReader.get(location.locationId).name
если (location.locationId не в locations_nfree) и (location.locationId не в locations_nwalk):
местах[name] = месте
logger.info('\t\t'+location.locationId+'\t'+имя)
другое:
если (location.locationId не в locations_nfree):
logger.info('\t?\t'+location.locationId+'\t'+имя)
другое:
logger.info('\t+\t'+location.locationId+'\t'+имя)
если местах:
logger.info('Находимся на острове:')
Регистратор.info(' * '+самоуправления.__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]
если location_name местах:
self.__selected_location = местах[location_name].locationId
другое:
self.__selected_location = self.get_game_loc().get_location_id()

def get_user_setting(self, setting_id):
возвращение self.__settings.get


def управлением(self):
если self.__gui_input:
работает = self.__gui_input.running
другое:
работает = лямбда: True
возвращение running()

def start(self):

в то время как(self.running()):
попробуйте:
# загрузка элементов словарь
если self.__itemReader 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()
# Сохранить Game_state
#open("
game_state.txt","w")написать(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 отправить getMissions
# TODO ручки getMissions ответ

self.eventLoop()
кроме urllib2.HTTPError, e:
повысить e
за исключением (socket.timeout, urllib2.HTTPError, urllib2.URLError):
секунд = 3
logger.error('истекло, повторять через %s секунд)...'
% секунды)
время.sleep(в секундах)
за исключением (socket.error, ssl.SSLError) e:
секунд = 10
logger.error('ошибка Сокета, повторять через %s секунд)...'
% секунды)
time.sleep(в секундах)
кроме message_factory.GameError, e:
если не self.__ignore_errors:
повысить e

def save_game_state(self, start_response):
# проанализировать состояние игры
self.__game_state_ = GameState(start_response, self.__itemReader)

def get_game_loc(self):
возвращение self.__game_state_.get_game_loc()

def get_game_state(self):
возвращение self.__game_state_.get_state()

def eventLoop(self):
"'
в цикле, каждые 30 секунд
отправить EVT запросу
ручка EVT ответ
"'
интервал 8
refresh_min 
9999
секунд 
интервал
ref_min 
= []
while(
self.running()):
если seconds >= интервал:
self.perform_all_actions()
#logger.info('Ждем %d секунд'%интервал)
секунды 0
time
.sleep(0.1)
секунд += 0.1

cur_time 
self.__timer._get_current_client_time()
min int(int(cur_time/1000)/60)
если мин не в ref_min:
если (refresh_min-мин.)==1logger.info(u'Перезагрузка через %s минуту'%str(refresh_min-min))
elif ((refresh_min-мин)>=2и ((refresh_min-мин)<=4): logger.info(u'Перезагрузка через %s минуты'%str(refresh_min-min))
остальноеlogger.info(u'Перезагрузка через %s минут'%str(refresh_min-min))
ref_min += [min]
если min>=refresh_min:
ref_min = []
перерыв

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,
'FriendDigger':self.__friendsid,
'DigBot':self.__friendsid,#самостоятельно.__game_events_sender,
'SellBot':{'sell_item':self.__selected_sell,'send_user':self.__selected_send},
'ChangeLocationBot':self.__selected_loc_setting,
}
events_sender self.__game_events_sender
таймер 
self._get_timer()
item_reader self.__itemReader
game_state 
self.__game_state_
actor_classes 
= [
#DigBot, # Работа с мозгами
#GetMissionsBot, # Запрос выполнения миссий
#VisitingUsers, # Посещение друзей
# WoodPicker, # Сбор дерева
# StonePicker, # Сбор камня
# BrewPicker, # Сбор сваренного
# BagsPicker, # Сбор сумок
# WoodTargetSelecter, # Отправка работать дровосекам
# StoneTargetSelecter,# Отправка работать камнетесов
#PirateTreeCut,
### GameBuffHarvest,
#HarvestExchange, # обмен роз на деньги Мая
#GameTravelBuff, # создание проездного на 5 дней
FriendDigger###### копание кладов у друзей
# CookerBot, # Работа с поварами (подъем из могил, установка рецептов)
#CookSpeed, # Посолить рецепты
#FertilBot, # Удобрение деревьев
# HarvesterBot, # Сбор чего либо + вскапывание грядок
#CakesReceiverBot, # Сбор пряников
# SeederBot, # Посейка
#GiftReceiverBot, # Принятие подарков
# BoxPickuper, # Вскрытие чего либо
# RouletteRoller, # Кручение рулеток
#FrutRouletteRoller, # Кручение фруктовых рулеток
#UseEggItemBot, # Бить яйца ;)
# MagicWand, # Добыча ресурсов палочками
# Pickuper, # Сбор дропа
# SellBot, # Продажа чего либо
#ChangeLocationBot, # Переход по локациям
]
self.__actors = []
для actor_class в actor_classes:
self.__actors.append(
actor_class(item_readergame_stateevents_senderтаймер,
варианты))

def perform_all_actions(self):
"'
Предполагается, что create_all_actors вызывается перед
"'
#all_time=[]
для актера в self.__actors:
#time_one=time.time()
actor.perform_action()
#time_two=time.time()
#logger.info(u'
Класс %s' % (str(актер).split()[0].split('.')[-1]))
#logger.info(u'
Выполнялся %f' % (time_two-time_one))
#all_time+=[[str(актер).split()[0].split('
.')[-1],(time_two-time_one)]]
self.handle_all_events()
#open('
time.txt','a')написать(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()
события в self.__game_events_sender.get_game_events():
self.handleEvent(событие)

def handleEvent(self, event_to_handle):
если event_to_handle.action == '
addGift':
AddGiftEventHandler(self.get_game_state()).handle(event_to_handle)
если event_to_handle.type == '
alert':
если event_to_handle.msg == '
SERVER_NEW_YEAR_GIFT_NOT_ALLOW':
self.__game_state_.nyna = 1
elif event_to_handle.msg == '
SERVER_REMOTE_TREASURE_ALL_DIGGED':
self.__game_state_.alldigged = 1
elif event_to_handle.action[с. 4] = = " ping'
:
#print "ПИНГ"
перевал
elif event_to_handle
.action = = " добавить":
если event_to_handle.type == 'пикап':
AddPickupHandler(self.__itemReaderself.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.__itemReaderself.get_game_loc(),
self.__timer).handle(event_to_handle)
elif event_to_handle.type == GameStartTimeGainEvent.type:
TimeGainEventHandler(self.__itemReaderself.get_game_loc(),
self.__timer).handle(event_to_handle)
elif event_to_handle.type == 'gameState'# состояние игры
self.__game_state_.gameObjects event_to_handle.gameObjects
#GameStateEventHandler(self.__game_state_, self.__server_time,self.__setting_view).handle(event_to_handle)
elif event_to_handle.action == 'sendNewYearGift':
self.__game_state_.sendNewYearGift += 1
elif event_to_handle
.type = = " миссии":
ViewMissions(self.__itemReaderself.__setting_view).handle(event_to_handle)
elif event_to_handle.type == 'playersInfo':
#playersInfo = []
#DigBotEventHandler().handle(event_to_handle)
self.__game_state_.playersInfo event_to_handle.players
другое
:
self.logUnknownEvent(event_to_handle)
self.__game_events_sender.remove_game_event(event_to_handle)


def logUnknownEvent(selfevent_to_handle):
Регистратор logging.getLogger('unknownEventLogger')
#logger.info(
печать"############### unknownEvent!!!!!!!!!!!!!!"
open('unknownEvent.txt','a')написать(str(obj2dict(event_to_handle))+"\n")
open('unknownEvent.txt','a')написать("-----------------------------------------------------------------------------------\n")

def _get_timer(self):
возвращение self.__timer

def get_request_sender
(self):
возвращение self.__request_sender


класс RequestSender
(объект):
def тот же каталог(selfmessage_factoryсоединение):
self.__factory message_factory
self
.__connection подключение

def отправить
(self" данные"):
data obj2dict(данных)
assert 'type' в данных
запрос 
self.__factory.createRequest(данных)
возвращение dict2obj(request.send(self.__connection))

def set_url(самостоятельнов url):
self.__connection.setUrl(url)

def clear_session(self):
self.__factory.setSessionKey(Нет)

def reset_request_id(self):
request_id message_factory._getInitialId()
self.__factory.setRequestId(request_id)

def set_auth_key(selfauth_key):
self.__factory.set_auth_key(auth_key
а это уже само копание
PHP код:
# кодирование=utf-8
import sys
импорта журнала
импорт случайных как random_number
от game_state
.game_types импорта GameWoodGraveGameWoodGraveDouble,\
GamePickItemGameWoodTreeGameGainItemGamePickupGameDigItem
от game_state
.game_event импорта dict2objobj2dict
от game_actors_and_handlers
.base импорта BaseActor

Регистратор 
logging.getLogger(__name__)


класс FriendDigger(BaseActor):
def perform_action(self):
#logger.info(u"######### Идем к другу###########")
#go_to_friend = {"действий":"gameState","locationId":"главная","пользователь":'201018303',"objId": " Нет","тип":"gameState"}#{id:8,"экшн":"gameState","objId":null,"locationId":"главная","пользователь":"144371056","тип":"gameState"} #"id":46667
#друзей= ['8477452','22656865','27505179','107183826','68030140','163206097']#'476111',
друзья self._get_options()
# Чудо Юдо
друзья = ['[BOT]friend1','[BOT]friend2'] + друзья
objtypes 
= ['украшения']
myid '201018303'
self._get_game_state().shovel 0
если не hasattr
(self._get_game_state(),'countfnyt'):self._get_game_state().countfnyt 109
если не hasattr
(self._get_game_state(), 'countnyt'):self._get_game_state().countnyt 0
если не hasattr
(self._get_game_state(), 'sendNewYearGift'):self._get_game_state().sendNewYearGift 0
если не hasattr
(self._get_game_state(), 'gameObjects'и self._get_game_state().countfnyt len(друзья):
user друзья[self._get_game_state().countfnyt]
print (
u"######### Идем к другу "+str(пользователя)+" "+str(self._get_game_state().countfnyt+1)+"/"+str(len(друзья))+" #########").encode('cp866')
self._get_events_sender().send_game_events([{"действий":"gameState","locationId":"главная","пользователь":str(пользователь),"objId"" Нет","тип":"gameState"},{"тип":"игроки","действие":"getInfo","игроки":[str(пользователя)]}])
self._get_game_state().countfnyt += 1
elif hasattr
(self._get_game_state(), 'gameObjects'):# и
open('objects.txt''a')написать(str(друзья[self._get_game_state().countfnyt])+"\n")
печать"############### gameObjects#################"
countnyt 0
countmyg 
0
countpickup 
0
objssvl 
= []
если hasattr(self._get_game_state(),'alldigged'):alldigged 1
остальное
alldigged 0
для объекта в self
._get_game_state().gameObjects:
если self._get_game_state().countnyt countnyt 148:
если hasattr ("объект"" тип"):
tf 0
если object
.type == 'newYearTree':
tf 1
УССР 
len(object.users)
#object.users = УССР
#open('newyeartree.txt', 'a')написать(str(obj2dict ("объект"))+"\n")
если tf == 1 и не hasattr(self._get_game_state(), 'nytend'):
#печать (u"Елка !!!").encode('cp866')
#open('gameObjects.txt', 'a')написать(str(obj2dict ("объект"))+"\n")
#open('newyeartree.txt', 'a')написать(object.item + " UsersGift:" + str(len(object.users)) + "\n")
tf 1
0
#Елки разной емкости. указано не точно.
если object.item == u'@B_SPRUCE_SMOLL " и len(object.users) < 3: f = 1
если object.item == u'
@B_SPRUCE_MIDDLE " и len(object.users) < 6: f = 1
если object.item == u'@B_SPRUCE_BIG " 
и len(object.users) < 151
#если object.item == u'@B_BASKETS_EASTER_1 " и len(object.users) < 15: f = 1
#если object.item == u'@B_BASKETS_EASTER_2 " и len(object.users) < 7: f = 1
#если объект.item == u'@B_BASKETS_EASTER_3 " и len(object.users) < 3: f = 1
для пользователя в object.users:
если user.id == myid:
countmyg+=1#print "MyGift"
0
перерыв

#если не check_no_my_gift(object.users): f = 1
если self._get_game_state().countnyt countnyt 151 или hasattr(self._get_game_state(),'Нина'):
self._get_game_state().nytend 1
печать
"################## КОНЕЦ####################"
если f == 1:
# Ложим пряник
#open('newyeartree.txt', 'a')написать(str(obj2dict ("объект")) + "\n")
#self._get_events_sender().send_game_events([{"itemId":"CAKE_PACK_FREE1","действие":"remoteNewYear","тип":"элемент","objId":object.id}])
countnyt+=1
#пропустить
#else: выведите "NO"
# Вскрываем сундук
если tf == 0 и object.type == 'пикап':
#open('sunduki.txt', 'a')написать(str(obj2dict ("объект")) + "\n")
self._get_events_sender().send_game_events([{"действий":"pick","тип":"элемент","objId":object.id}])
countpickup+=1
tf 
2
# Добавляем в список объекты для копания клада
если tf == 0 и alldigged == 0:
для objtype в objtypes:
если object.type == objtype:
если object.item == '@D_SAKURASMALL':
печать object.item,object.id
objssvl
.append(объект)
перерыв
если tf 
== 0:
open('objects.txt''a')написать(str(obj2dict ("объект"))+"\n")
если hasattr(self._get_game_state(),'playersInfo'):
open('objects.txt''a')написать('-------------------------------------' "\n")
open('objects.txt''a')написать(str(obj2dict(self._get_game_state().playersInfo))+"\n")

open('objects.txt''a')написать('-------------------------------------' "\n")
countlop 0
если len
(objssvl) > 0:
for 
i in range(150):
objdig random_number.choice(objssvl)
self._get_events_sender().send_game_events([{"objId":objdig.id,"x":objdig.x,"экшн":"remoteDig","y":objdig.y,"тип":"пункт"}])
countlop+=1
print ("u"Использовал"+str(countlop)+u" лопат").encode('cp866')
elif alldigged == 1: print (u'Все уже выкопано!').encode('cp866')
остальное: print (u'Нечего копать!').encode('cp866')
print ("
u"Вскрыли сундуков: "+str(countpickup)).encode('cp866')
если hasattr(self._get_game_state(),'alldigged'): del self._get_game_state().alldigged
дель self
._get_game_state().gameObjects
self
._get_game_state().countnyt += countnyt
print ("u"поЛожил пряник(ов): "+str(self._get_game_state().sendNewYearGift)+":"+str(self._get_game_state().countnyt)+"/"+str(countnyt)+" dub"+str(countmyg)).encode('cp866')
self._get_game_state().shovel = 0
#если self._get_game_state().countfnyt + 1 > len(друзья):sys.exit(0) 

С отступами можно?))
  Ответить с цитированием
Старый 22.12.2013, 17:16   #600
 Разведчик
Аватар для As1x89
 
As1x89 скоро будет известенAs1x89 скоро будет известенAs1x89 скоро будет известен
Регистрация: 03.11.2012
Сообщений: 30
Популярность: 238
Сказал(а) спасибо: 26
Поблагодарили 3 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от Anch665Посмотреть сообщение
А можно увидеть то чему научили? Хоть часть острова вырубит, да и северном полюсе сильверов нет.

смотри #474 сообщение
  Ответить с цитированием
Ответ


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

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

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

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

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

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

Пишите нам: forum@zhyk.ru
Copyright © 2025 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net