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

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

-

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

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

Ответ
 
Опции темы
Старый 11.03.2018, 06:46   #6046
 Разведчик
Аватар для ABBAtjaga
 
ABBAtjaga никому не известный тип
Регистрация: 28.05.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
Red face Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от ОлександраПосмотреть сообщение
Мужчины, научите пожалуйста, как настроить бота, чтоб он выставил на Домашний остров все подаренные подснежнички "Весеннее настроение". Пожалуйста)

В game_engine.py включаем PremiumGifts.

В \game_actors_and_handlers\premium_gifts.py
Меняем "location_id ="
В массив specified_gifts добавляем '@SNOWDROP_BOX18_1',

free_x = 28 # Координаты пустого места
free_y = 40
можно получить методом тыка, либо сделать пробную установку подарка и подсмотреть в инструментах разработчика браузера, во вкладке Network.

В конце файла закоменчиваем
#events.append(apply_event)
#events.append(open_event)
#self._get_game_state().get_state().gifts.remove(g ift)
И две строки
#self._get_events_sender().send_game_events(events )

Раскоменчиваем
self._get_events_sender().send_game_events([apply_event])
self._get_events_sender().send_game_events([open_event])

Я не сварщик
  Ответить с цитированием
Старый 11.03.2018, 12:06   #6047
 Разведчик
Аватар для Warrior94
 
Warrior94 никому не известный тип
Регистрация: 11.01.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Всем привет!

Цитата:
Сообщение от ABBAtjagaПосмотреть сообщение
В game_engine.py включаем PremiumGifts.

В \game_actors_and_handlers\premium_gifts.py
Меняем "location_id ="
В массив specified_gifts добавляем '@SNOWDROP_BOX18_1',

free_x = 28 # Координаты пустого места
free_y = 40
можно получить методом тыка, либо сделать пробную установку подарка и подсмотреть в инструментах разработчика браузера, во вкладке Network.

В конце файла закоменчиваем
#events.append(apply_event)
#events.append(open_event)
#self._get_game_state().get_state().gifts.remove(g ift)
И две строки
#self._get_events_sender().send_game_events(events )

Раскоменчиваем
self._get_events_sender().send_game_events([apply_event])
self._get_events_sender().send_game_events([open_event])

Я не сварщик

Уже как только ни пробовал, такая вот фигня


в game_engine.py дописал строку
PHP код:
from game_actors_and_handlers.premium_gifts import PremiumGifts 
Также подключил PremiumGifts

PHP код:
# coding=utf-8
import os
import sys
import random
import ssl
import message_factory
from message_factory import Session
sys
.path.append('./API')
import vkontakte.api
import vkutils
import odnoklassniki
.api
import okutils
import mrutils
import fbutils
import logging
from settings import Settings
import time
from game_state
.item_reader import GameItemReader
from game_state
.composit_reader import GameCompositionReader
from game_state
.game_event import dict2objobj2dict
from game_state
.game_types import GameEVTGameTIMEGameSTARTGameInfoGameFertilizePlantGamePlayGameGameStartGainMaterialGameStartTimeGainEvent
import pprint
from game_actors_and_handlers
.premium_gifts import PremiumGifts
#from game_actors_and_handlers.friends import VisitingUsers
from game_actors_and_handlers.brains import GameBrains
from game_actors_and_handlers
.gifts import GiftReceiverBotAddGiftEventHandlerCakesReceiverBotFreeGifts
from game_actors_and_handlers
.plants import HarvesterBotSeederBotPlantEventHandlerGameSeedReaderUseEggItemBotFertilBot
from game_actors_and_handlers
.roulettes import RouletteRollerGameResultHandlerFrutRouletteRoller
from game_actors_and_handlers
.wood_graves import WoodPickerWoodTargetSelecter
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
.search_buff import GameBuffDigger
from game_actors_and_handlers
.workers import GainMaterialEventHandler
from game_actors_and_handlers
.pickups import PickuperAddPickupHandler,BoxPickuper,MonsterPit
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
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 ExchangeKrugerExchangeMummy
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
from game_actors_and_handlers
.tree_plant import TreePlant
from game_actors_and_handlers
.move_items import MoveItem
from game_actors_and_handlers
.BuildingTrack import BuildingTrack
from game_actors_and_handlers
.exchange import Exchange_Collection
from game_actors_and_handlers
.create_shovel import CreateShovelExtra
from game_actors_and_handlers
.exchange_all import GameBrains1
from game_actors_and_handlers
.deletingobjects import DeletingObjects
from game_actors_and_handlers
.pirate_put import PiratePut
from game_actors_and_handlers
.bolt_gift import BoltGift
from game_actors_and_handlers
.exchange_super import ExchangeCollections
from game_actors_and_handlers
.buff_fix_cook import GameBuffFixCook
from game_actors_and_handlers
.emerald_exchange import Emeraldic
from game_actors_and_handlers
.tent_circus import BowReceiverBot
from game_actors_and_handlers
.exchange_all import GameBrains1
import socket
import urllib2
from game_actors_and_handlers
.torg import Torgovec
from game_actors_and_handlers
.storage import SellBot
from game_actors_and_handlers
.missions import GetMissionsBotViewMissions
from game_actors_and_handlers
.exchange_izumrud import ExhangeCollEmerald
from game_actors_and_handlers
.storage_put import StoragePut
from game_actors_and_handlers
.burrowing import DigBot
from game_actors_and_handlers
.seederbot import SeederBotMy
from game_actors_and_handlers
.base import BaseActor
from game_actors_and_handlers
.wand import MagicWand
from game_actors_and_handlers
.airplane_sell import TiketReceiverBot
##############################
from game_actors_and_handlers.base import BaseActor
from ctypes import windll
stdout_handle 
windll.kernel32.GetStdHandle(-11)
SetConsoleTextAttribute windll.kernel32.SetConsoleTextAttribute
##############################
from os import walk
import os
.path

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

    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('Загружаем остров...')
        
SetConsoleTextAttribute(stdout_handle0x0007 0x0008)
        print 
u'                              Загружаем остров...                              ',
        
sys.stdout.flush()
        
SetConsoleTextAttribute(stdout_handle0x0002 0x0008)
        
# 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_responsefriendsiduid self.start_game(server_timesession_key)
        
logger.info('Остров загружен!')
        return 
start_responsefriendsiduidserver_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
        
commandfriendsiduid self.__site.create_start_command(server_timeclient_time)
        
#print uid
        
sending_time = (time.time() - start_time) * 1000
        self
.__timer._add_sending_time(sending_time)
        return 
self.__request_sender.send(command),friendsid,uid

    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)
        print 
"UID: "+str(uid)
        return 
game_info


class GameState(BaseActor):
    
#self.order = None
    
def __init__(selfstart_responseitem_readercuruserfriends):
        
#self.__friendsid = self.__game_state_.get_state().friends
        
self.__curuser curuser
        self
.__friends friends
        self
.order None
        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)
        if 
not hasattr(self.__game_state,'rectsObjects'):self.__game_state.rectsObjects=[]
        
compositions=GameCompositionReader()
        
objAnims=compositions.readCompositnew()
        for 
anims in objAnims:
            
rectss=compositions.readComposit(anims,'compositions')
            
objects=dict2obj({"objAnim":str(anims),"rects":rectss})
            
self.__game_state.rectsObjects.append(objects)
            
        
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))
        
cou 0
        
for fgift in self.__game_state.freeGiftUsers:
            if 
fgift.blockedUntil 0cou+=1
            
#print str(obj2dict(fgift))
        #if cou < 1: os.remove('countfnyt.txt')
        
if not os.path.isfile('gameGIFT.txt'):
            
open('gameGIFT.txt''a').write(str(cou)+"/"+str(len(self.__game_state.freeGiftUsers))+"\n")
            for 
fgift in self.__game_state.freeGiftUsers:
                
open('gameGIFT.txt''a').write(str(obj2dict(fgift))+"\n")
            
open('gameGIFT.txt''a').write(str(dir(self.__game_state)))
            
open('gameSTATE.txt''w').write(str(obj2dict(self.__game_state)))
        if 
occupied_brain_count total_brain_count:
            print 
u"Мозги: ",
            
sys.stdout.flush()
            
SetConsoleTextAttribute(stdout_handle0x0004 0x0008)
            print 
"%d/%d" % (occupied_brain_counttotal_brain_count)
            
SetConsoleTextAttribute(stdout_handle0x0002 0x0008)
            
sys.stdout.flush()
        else:
            print 
u"Мозги: %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
        
if z<x:
            print 
u"Использование слотов для закопки друзей: ",
            
sys.stdout.flush()
            
SetConsoleTextAttribute(stdout_handle0x0004 0x0008)
            print 
"%d/%d" % (z,x)
            
SetConsoleTextAttribute(stdout_handle0x0002 0x0008)
            
sys.stdout.flush()
        else:
            print 
u"Слоты для закопки друзей: %d/%d" % (z,x)
        
#self.cprint(u'4'+self.__curuser)
        
os.system((u'title '+self.__curuser+u' Мозгов: ' str(occupied_brain_count)+'/'+str(total_brain_count)+u' Слоты: '+str(z)+'/'+str(x)+u' Друзья: '+str(len(self.__game_state.freeGiftUsers))+"/"+str(self.__friends)+":"+str(cou)).encode('cp1251''ignore'))
        
#logger.info("Использование слотов для закопки друзей: %d/%d" % (z,x))
        
if len(self.__game_state.buyedBrains)<>0:
          print 
u"Купленные:"
          
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
              
print u"%d. Время окончания: %d:%d:%d.%d"%(x,h,m,s,ms)
              
x+=1
        
#logger.info(u"загружаем друзей")
        #self.__friendsid=self.__game_state_.get_state().friends
        
print u"Уровень игрока: ",
        
SetConsoleTextAttribute(stdout_handle0x0006 0x0008)
        print 
str(self.__game_state.level)
        
SetConsoleTextAttribute(stdout_handle0x0002 0x0008)
        
sys.stdout.flush()
        
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
        
print u"Деньги игрока: ",
        
sys.stdout.flush()
        
SetConsoleTextAttribute(stdout_handle0x0006 0x0008)
        print 
str(s[:-1]),
        
SetConsoleTextAttribute(stdout_handle0x0002 0x0008)
        
sys.stdout.flush()
        print 
u' монет'
        
#logger.info("Деньги игрока: "+s[:-1])
        #logger.info("")
        
self.cprint(u'3Положил пряников сегодня:^7_%s'%(len(self.__game_state.remoteNewYear)))
        
self.cprint(u'3Закопал Друзьям Чудика сегодня:^7_%s'%(len(self.__game_state.remoteMonsterPit)))
        
self.cprint(u'3Удобрил друзьям деревья сегодня:^7_%s'%(len(self.__game_state.remoteFertilizeFruitTree)))
    
    
#def order(self):
    #    return order
    
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 seed2storage_plant
(selfseed):
        if 
seed[0] == '@'seed seed[1:]
        if 
seed[-1:] == 'P':seedst seed[2:-1]
        else: 
seedst seed[2:]
        return 
'@S_'+seedst
    
    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

    def count_in_storage
(selfitem_id):
        if 
os.path.isfile('storage.txt'): exif 1
        
else: exif 0
        
for itemid in self.__game_state.storageItems:
            if 
hasattr(itemid"item"): 
                if 
itemid.item == item_idret itemid.count
                
if exif == 0:
                    
#if itemid.item[:3] == "@S_":open('storage.txt', 'a').write(itemid.item.replace('@S_', 'P_')+": "+str(itemid.count)+"\n")
                    
try:
                        
name self.__item_reader.get('P_'+itemid.item[3:]).name
                    except
:
                        
name "N/A"
                    
open('storage.txt''a').write((name+": "+str(itemid.count)+"\t\t"+itemid.item+"\n").encode('utf-8''ignore'))
                    
#-------------------------------------                
                #if itemid.item == item_id: ret = itemid.count
        
try: return ret
        
#print "##################################################"
        
except: return 0

    def count_in_storageObjects
(selfitem_id):
        for 
itemid in self.__game_state.storageGameObjects:
            if 
hasattr(itemid"item"):
                if 
itemid.item == item_id:
                    return 
itemid.count

    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)


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

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

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

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


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
        
        
#print dir(self.__game_initializer._getUserInfo)
        

        
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
.__receive_admin_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()
        
#######################################
        
self.__selected_brains_count settings.getUserBrains1()
        
self.__selected_Burrowing settings.getUserBurrowing()
        
self.__selected_SeedMode settings.getUserSeedMode()
        
self.__selected_Friends settings.getUserFriends()
        
self.__selected_curuser settings.getCurUser()
        
self.__selected_Actors settings.getUserActors()
        
#self.__selected_PremiumGifts = settings.getUserPremiumGifts()
        #self.__selected_modePassAllAccount = paa
        
        #print ''
        
if self.__selected_seed<>None
            if  (
self.__selected_seed=='None'): print u'Выбранные семена: ничего не сажать'
            
else:
                
#item_reader = reader_class(self.__itemReader)
                
if type(self.__selected_seed)==type(''): print u'Выбранные семена: везде "%s"'%str(self.__selected_seed)
                
elif type(self.__selected_seed)==type([]):
                    print 
u'Выбранные семена: везде ',
                    for 
seed in self.__selected_seed:
                        print 
seed,
                    print 
''
                
elif type(self.__selected_seed)==type({}): 
                    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):
        print 
u'Доступные острова:'
        
print u'(+ платный, - бесплатный, ? - пещера)'
        
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
                
print u'\t-\t'+location.locationId+'\t'+name
            
else:
                if (
location.locationId not in locations_nfree):
                    print 
u'\t?\t'+location.locationId+'\t'+name
                
else:
                    print 
u'\t+\t'+location.locationId+'\t'+name
        
if locations:
            print 
u'Находимся на острове:',
            print 
u'   *       '+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(selfpaa):
        
#print dir(self)
        
self.__selected_modePassAllAccount paa
        game_state 
self.get_game_state
        
while(self.running()):
            try:
                
#загружаем заказ на посадку и варку
                #self.get_game_state.order.recipes = []
                #self.get_game_state.order.seed = []
                #game_state = GameState()
                #global order
                
self.order = {'recipes':[], 'seed':[]}
                for (
dirpathdirnamesfilenamesin walk(".\orders"):
                    for 
file in filenames:
                        if 
file[-3:] == "itm":
                            
scou open(".\orders\\"+file).read()
                            
cou int(scou)
                            if 
file[:2] == "P_":
                                if 
cou 0:
                                    
self.order['seed'].append([file[:-4],cou])
                                    
#self.get_game_state.order.seed.append([file[:-3],cou])
                                    #print file[:-4]+" : "+str(cou)
                            
elif file[:7] == "RECIPE_":
                                if 
cou 0:
                                    
self.order['recipes'].append([file[:-4],cou])
                                    
#self.get_game_state.order.recipes.append([file[:-3],cou])
                                    #print file[:-4]+" : "+str(cou)
                # load items dictionary
                
if self.__itemReader is None:
                    print 
u'Загружаем словарь объектов...'
                    
item_reader GameItemReader()
                    
item_reader.download('items.txt')
                    
item_reader.read('items.txt')
                    
self.__itemReader item_reader
                    
print u'Словарь объектов загружен'
                
compositions GameItemReader()
                print 
u'Загружаю размеры обьектов'
                
compositions.loadComposit('compositions')
                
start_response,self.__friendsid,self.__uid,self.__server_time self.__game_initializer.start()
                
# Save Game_state
                
open("game_state.txt","w").write(str(obj2dict(start_response)))
                
                
#print str(len(self.__friendsid))
                
self.__game_events_sender self.__game_initializer.create_events_sender()

                
self.save_game_state(start_response)
                if 
hasattr(self.__game_state_.get_state(),'friends'): 
                    
self.__friendsid=self.__game_state_.get_state().friends
                
#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.load_info_users()
                
                
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 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()
            
    
def add_users_info(selfevent_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))
        
#time.sleep(2)
    ################

    
def save_game_state(selfstart_response):
        
# parse game state
        
self.__game_state_ GameState(start_responseself.__itemReaderself.__selected_curuserlen(self.__friendsid))

    
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
        '''
        
game_state self.__game_state_
        interval 
1
        refresh_min 
5
        seconds 
interval
        ref_min 
= []
        while(
self.running()):
            if 
seconds >= interval:
                
self.perform_all_actions()
                
#logger.info('Ждем %d секунд'%interval)
                
if hasattr(game_state'fdend'):
                    
#print "interval 20"
                    
interval 1
                
                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)==1pass#logger.info(u'Перезагрузка через %s минуту'%str(refresh_min-min))
                
elif ((refresh_min-min)>=2) and ((refresh_min-min)<=4):pass# 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):
        
self.__selected_loc_setting['modePassAllAccount'] = self.__selected_modePassAllAccount
        
#print type(self.__selected_Friends)
        
receive_options = {'with_messages'self.__receive_gifts_with_messages,
                           
'non_free'self.__receive_non_free_gifts,
                           
'from_admin'self.__receive_admin_gifts,
                           
'users'self.__friendsid}
        
options = {'GiftReceiverBot'receive_options,
                   
'GameBrains1'self.__selected_brains_count,
                   
'SeederBot': [self.__selected_SeedModeself.__selected_seed],
                   
'CookerBot'self.__selected_recipe,
                   
'ChangeLocationBot'self.__selected_location,
                   
'ChangeLocationBot': {'modePassAllAccount':self.__selected_modePassAllAccount},
                   
#'VisitingUsers' : str(self.__friendsid)+str(self.__selected_Friends),
                   
'DigBot':self.__selected_Burrowing,
                   
'SellBot':{'sell_item':self.__selected_sell,'send_user':self.__selected_send},
                   
'ChangeLocationBot':self.__selected_loc_setting,
                   
#'PremiumGifts':self.__selected_PremiumGifts
                  
}
        
events_sender self.__game_events_sender
        timer 
self._get_timer()
        
item_reader self.__itemReader
        game_state 
self.__game_state_
        actor_classes1 
= [
            
DigBot,              #0 Работа с мозгами
            
StoragePut,           #1 выставление сосклада барахло
        
ExhangeCollEmerald,   #2 создание изумрудной
        
BowReceiverBot,       #3 сбор бантов
        
Emeraldic,            #4 создание луксорской
            
GameBrains1,          #5 создание коллекций и мозгов
            
GameBrains,           #6 производство мозгов (останкинобкорабль)        
            
GetMissionsBot,       #7 Запрос выполнения миссий
            
MonsterPit,           #8 Закапывание чуда
            #VisitingUsers,        #9 Посещение друзей
            
GameBuffHarvest,      #10 Приём супер урожая
            
GameBuffDigger,       #11 Приём супер-поиск
            
GameBuffFixCook,      #12 Прием минутки на день
            
WoodPicker,           #13 Сбор дерева
            
StonePicker,          #14 Сбор камня
            
BrewPicker,           #15 Сбор сваренного
            
BagsPicker,           #16 Сбор сумок
            
WoodTargetSelecter,   #17 Отправка работать дровосекам
            
StoneTargetSelecter,  #18 Отправка работать камнетёсов
            
CookerBot,            #19 Работа с поварами (подъем из могил, установка рецептов)
            
CookSpeed,            #20 Посолить рецепты
            
FertilBot,            #21 Удобрение деревьев
            
HarvesterBot,         #22 Сбор чего либо + вскапывание грядок
            
CakesReceiverBot,     #23 Сбор пряников
            
SeederBot,            #24 Посейка
            
GiftReceiverBot,      #25 Принятие подарков
            
BoxPickuper,          #26 Вскрытие чего либо
            
PiratePut,            #27 Выставление любого барахла со склада
            
RouletteRoller,       #28 Кручение рулеток            
            
FrutRouletteRoller,   #29 Кручение фруктовых рулеток
            
UseEggItemBot,        #30 Бить яйца ;)
            
MagicWand,            #31 Добыча ресурсов палочками
            
ExchangeKruger,       #32 Создаем коллекцию фреди в изумрудной мельнице
            
ExchangeMummy,        #33 Создаем коллекцию мумии в изумрдуном маяке
            
Pickuper,             #34 Сбор дропа
            
SellBot,              #35 Продажа чего либо
            
TraderWork,           #36 Торговцы
            
BuildingBuyer,        #37 Покупаем, продаем ракету
            
HarvestExchange,      #38 создаем деньги в БЦ
            
PirateTreeCut,        #39 рубка на острове сокровищ
            
Exchange_Collection,  #40 обмен коллекции(любая)
        
MoveItem,             #41 воровать вещи с острова(не актуально)
        
TreePlant,            #42 Посадка деревьев
            
BuildingTrack,        #43 покупка настилов(не актуально)
            
CreateShovelExtra,    #44 Создание лопат в Глаз-алмаз
            
DeletingObjects,      #45 Удаление объектов
            
BoltGift,             #46 передача другу чего либо
            
ExchangeCollections,  #47
            
Torgovec,             #48
            
ChangeLocationBot,    #49 Переход по локациям
            
SeederBotMy,          #50
            
FreeGifts,            #51
            
TiketReceiverBot,     #52 обнова корзин
            
PremiumGifts# Принятие платных выставляемых подарков
        
]
        
br 0
        
if self.__selected_Burrowing == None:
            print 
u'Никого не закапывать'
            
del actor_classes1[0]
            
br 1
        
else: self.__selected_Actors.insert(00)
        
#else: print str(self.__selected_Burrowing)
        #print str(self.__selected_SeedMode)+"  "+str(self.__selected_seed)
        
actor_classes = []
        if 
self.__selected_Actors != None:
            for 
ator in self.__selected_Actors:
                
actor_classes.append(actor_classes1[ator-br])
        else: 
actor_classes actor_classes1
        
#print self.__selected_Actors
        
self.__actors = []
        for 
actor_class in actor_classes:
            
self.__actors.append(
                
actor_class(item_readergame_stateevents_sendertimer,
                            
options))

    
def perform_all_actions(self):
        
game_state self.__game_state_
        
#print str(self.__selected_Friends)
        
options = {'VisitingUsers' : [[self.__selected_curuserself.__uidself.__friendsid], self.__selected_Friends]}
        
events_sender self.__game_events_sender
        timer 
self._get_timer()
        
item_reader self.__itemReader
        
'''
        Assumes that create_all_actors is called before
        '''
        
if not hasattr(game_state'fdend'):
            
#print '#########  VisitingUsers  #########'
            
VisitingUsers(item_readergame_stateevents_sendertimeroptions).perform_action()
        else:
            
#print '######## perform_all_actions #######'
            #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()
        
#print "###################"
    
if hasattr(game_state,'tmpall')and len(game_state.tmpall)>0:
            for 
i in game_state.tmpall.keys():
                if 
!= u'денег' and != u'опыта':
                    
SetConsoleTextAttribute(stdout_handle0x0005 0x0008)
                    print 
u' Подобрали ',
                    
sys.stdout.flush()
                    
SetConsoleTextAttribute(stdout_handle0x0007 0x0008)
                    print 
game_state.tmpall[i],
                    
sys.stdout.flush()
                    
SetConsoleTextAttribute(stdout_handle0x0003 0x0008)
                    print 
i
                    sys
.stdout.flush()
                    
SetConsoleTextAttribute(stdout_handle0x0002 0x0008)
            
del game_state.tmpall
        
if hasattr(game_state,'getcoins') and game_state.getcoins 0:
            
SetConsoleTextAttribute(stdout_handle0x0005 0x0008)
            print 
u'Подобрали: ',
            
sys.stdout.flush()
            
SetConsoleTextAttribute(stdout_handle0x0006 0x0008)
            print 
str(game_state.getcoins),
            
sys.stdout.flush()
            
SetConsoleTextAttribute(stdout_handle0x0002 0x0008)
            print 
u'монет'
            
del game_state.getcoins
        
if hasattr(game_state,'getxp') and game_state.getxp 0:
            
SetConsoleTextAttribute(stdout_handle0x0005 0x0008)
            print 
u'Подобрали: ',
            
sys.stdout.flush()
            
SetConsoleTextAttribute(stdout_handle0x0006 0x0008)
            print 
str(game_state.getxp),
            
sys.stdout.flush()
            
SetConsoleTextAttribute(stdout_handle0x0002 0x0008)
            print 
u'опыта'
            
del game_state.getxp
        
#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':
            
#print event_to_handle.msg
            
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
.msg == 'SERVER_TREASURE_FOUND':#нашел секретный клад
                
print u'НАЙДЕН СЕКРЕТНЫЙ КЛАД!!!'
                
self.__game_state_.treasfound 1
            elif event_to_handle
.msg == 'SERVER_REMOTE_TREASURE_NO_TRIES':#Кончились лопаты
                
self.__game_state_.treasnotries 1
            elif event_to_handle
.msg == 'SERVER_NO_BRAINS':#Не хватает мозгов
                
self.__game_state_.nobrains 1
            elif event_to_handle
.msg == 'SERVER_REMOTE_FERTILIZE_FRUIT_TREE_NOT_FOUND':#Не найдены деревья для удобрения
                
self.__game_state_.fertilizenot 1
            elif event_to_handle
.msg == 'SERVER_MONSTER_PIT_DIG_OK':#Закопали мишуту
                
self.__game_state_.monsterpitok 1
            elif event_to_handle
.msg == 'SERVER_MONSTER_PIT_INCORRECT_INSTRUMENT':#мишуту можно закопать только за баксы
                
self.__game_state_.monsterpitincorrect 1
        elif event_to_handle
.action[:4] == 'ping':
            if 
event_to_handle.action[:5] == 'ping2':
                
time.sleep(1)
            else: 
time.sleep(0.005)
            
self.__game_events_sender.send_game_events([])
            
pass
        
#    print event_to_handle.action
        
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.type == 'mission':
            
ViewMissions(self.__itemReaderself.__setting_view).handle(event_to_handle)
        
elif event_to_handle.action == 'getInfo'# and event_to_handle.type == 'playersInfo':
            
self.add_users_info(event_to_handle)
        
elif event_to_handle.type == 'monsterPitDigEvent':
            
name unicode(event_to_handle.user) + self.addName(event_to_handle.user)
            
logger.info(u'Пользователь ' name u' закопал нам медведя')
            
#logger.info(u"Пользователь %s закопал нам медведя"% (event_to_handle.user))
            
with open('action_frends.txt''a') as f:
                
sms u'Пользователь ' name u' закопал нам медведя' u'\n'           
                
f.write(sms.encode("utf-8"))
        
elif event_to_handle.type == 'pirateShip':
            
name unicode(event_to_handle.user) + self.addName(event_to_handle.user)
            
logger.info(u'Пользователь ' name u' вошёл в команду корабля')
            
#logger.info(u"Пользователь %s вошёл в команду корабля"% (event_to_handle.user))
            
with open('action_frends.txt''a') as f:
                
sms u'Пользователь ' name u' вошёл в команду корабля' u'\n'
                
f.write(sms.encode("utf-8"))
        
elif event_to_handle.action == 'exchange':
            
name unicode(event_to_handle.user) + self.addName(event_to_handle.user)
            
torg unicode(event_to_handle.objId)
            
logger.info(u'Пользователь ' name u' произвёл обмен у торговца ' torg)
            
#logger.info(u"Пользователь %s произвёл обмен у торговца"% (event_to_handle.user))
            
with open('action_frends.txt''a') as f:
                
sms u'Пользователь ' name u' произвёл обмен у торговца ' unicode(event_to_handle.objId) + u'\n'
                
f.write(sms.encode("utf-8"))    
        else:
            
self.logUnknownEvent(event_to_handle)
        
self.__game_events_sender.remove_game_event(event_to_handle)
        
    

    
def add_users_info(selfevent_to_handle):
        
self.__game_state_.resp True
        
if not hasattr(self.__game_state_'playersInfo'):
            
self.__game_state_.playersInfo event_to_handle.players
        
else:
            for 
new_info in event_to_handle.players:
                for 
info in self.__game_state_.playersInfo:
                    if 
new_info.id == info.id:
                        
del info
                        
break                        
            
self.__game_state_.playersInfo.extend(event_to_handle.players)

        
data = {}
        for 
n in event_to_handle.players:
            if 
hasattr(n'name') and n.name:
                
name_ n.name
                
while '{' in name_ or '}' in name_ or '[' in name_ or ']' in name_ or '^' in name_:
                    for 
l in '{}[]^':
                        
name_ name_.replace(l'')
                if 
u'\u0456' in name_:
                    
name_ name_.replace(u'\u0456'u'i')
            else:
                
name_ u''
                
#name_ = u'Без имени'
            
data[n.id] = name_
        
if data:
            if 
hasattr(self.__game_state_'friends_names'):
                
self.__game_state_.friends_names.update(data)
            else:
                
self.__game_state_.friends_names data


    def addName
(selfid):                    
        if 
hasattr(self.__game_state_'friends_names') and self.__game_state_.friends_names.get(id) and self.__game_state_.friends_names.get(id) != u'':
            
name u" '" self.__game_state_.friends_names.get(id) + u"'"
            
name name.replace(u'\u0456'u'i').encode("UTF-8""ignore")
            
name unicode(name"UTF-8")
            
#print name.replace(u'\u0456', u'i').encode("cp866", "ignore")
        
else: name u''
        
return name            
                

    def logUnknownEvent
(selfevent_to_handle):
        
logger logging.getLogger('unknownEventLogger')
        
#logger.info(pprint.pformat(obj2dict(event_to_handle)))
        
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
В gifts.py строку
PHP код:
self.remove_gift_from_game_state(gift
Сдвинул вправо на 1 блок (4 пробела), пробовал также не сдвигать

PHP код:
# coding=utf-8
import logging
from game_actors_and_handlers
.base import BaseActor
from game_state
.game_types import GameApplyGiftEventGameGift
from game_state
.game_event import dict2objobj2dict
import random  
as  random_number
import os
.path
import os
import time
logger 
logging.getLogger(__name__)


class 
GiftReceiverBot(BaseActor):
    
'''
    Receives gifts

    @param options: Available receive options:

    with_messages: receive gifts with messages
    non_free: receive non-free gifts
    '''

    
def perform_action(self):
        
self.receive_all_gifts()

    
def receive_all_gifts(self):
        
gifts = list(set(self._get_game_state().get_state().gifts))
        
#gifts = []
        #for i in gifts_one:
        #    if not i in gifts:
        #        gifts+=[i]
        # print dir(gifts[0])
        #[ u'count', u'free', u'id', u'item', u'msg', u'type', u'user']
        
if len(gifts) > 0:
            
logger.info(u"Доступно подарков: %s" len(gifts))
        for 
gift in list(gifts):
            
self.receive_gift(gift)

    
def receive_gift(selfgift):
        
item self._get_item_reader().get(gift.item)
        
gift_name u'П ' str(gift.count)+' '+item.name # подарок
        
with_message hasattr(gift'msg') and gift.msg != ''
        
moved hasattr(item'moved') and item.moved == True
        free 
hasattr(gift'free') and gift.free
        
if with_message:
            
SMS u" SMS: " gift.msg u""
            
#if u'Перрон' in gift.msg or u'перрон' in gift.msg or u'перон' in gift.msg:
            #    sms_perron = u'id '+gift.user+u'  SMS: '+gift.msg+"\n".encode("utf-8")
            #    open('perron_log.txt', 'a').write(sms_perron.encode("utf-8"))
        
else:
            
SMS u''
        
if moved:
           
gift_name u'В' gift_name # выставляемый
           #logger.info(u"П"+gift_name[1:]+ u"' нужно поместить")
        
if free and not moved:
            
gift_name u'Б' gift_name # бесплатный
        
gift_name gift_name.ljust(22' ')
        
gift_name += u" от " gift.user
        gift_name 
gift_name.ljust(47' ')
        
#print gift_name
        
if hasattr(self._get_game_state(), 'friends_names') and self._get_game_state().friends_names.get(gift.user) and self._get_game_state().friends_names.get(gift.user) != u'Без имени':
            
gift_name += u"'" self._get_game_state().friends_names.get(gift.user) + u"'"
        
print gift_name.replace(u'\u0456'u'i').encode("cp866""ignore")
        if 
SMS:
            print 
SMS.replace(u'\u0456'u'i').encode("cp866""ignore")
        
        
#logger.info(u'' + gift_name) # Доступен 
        
CollIt=obj2dict(self._get_game_state().get_state().collectionItems)
        if 
not moved and gift.user != 'ACTIVE_NPC_LOVE':
            if (
gift.item == '@CR_44') or (gift.item[1:] in CollIt.keys()) or free or self._get_options()["non_free"]:
                if (
self._get_options()["with_messages"] or not with_message):
                    
#logger.info(u"Принимаю " + gift_name)
                    
apply_gift_event GameApplyGiftEvent(GameGift(gift.id))
                    
self._get_events_sender().send_game_events([apply_gift_event])
                    
self._get_game_state().add_from_storage(gift.item,gift.count)
                    if (
gift.item[1:] in CollIt.keys()): CollIt[gift.item]=gift.count
            
            
#CR_01                Цемент
            #CR_06                Металл
            #CR_11                Доска
            #CR_16                Шестерня
            #CR_25                Стекло
            #CR_44                Мир
            #CR_70                Время

            
if 0:#отключено
                
if free and (gift.item<>'@CR_44'): # мир
                    #{"userIds":["85678136"],"type":"gifts","action":"sendFreeGifts","itemId":"CR_16","msg":"qwerty"}
                    #{"action":"sendFreeGifts","itemId":"CR_11","userIds":["119482219"],"type":"gifts","msg":":3"}
                    #{"userIds":[str(gift.user)],"type":"gifts","action":"sendFreeGifts","itemId":gift.item[1:],"msg":":3"}
                    
self._get_events_sender().send_game_events([{"userIds":[str(gift.user)],"type":"gifts","action":"sendFreeGifts","itemId":gift.item[1:],"msg":":3"}])
                    
#self._get_events_sender().send_game_events([{"userId":[gift.user],"itemId":gift.item[1:],"type":"gifts","msg":"","action":"sendFreeGifts"}])
                    
logger.info(u"Подарок от %s отправлен обратно: %s"%(gift.user,gift_name))
            
self.remove_gift_from_game_state(gift)
        
self._get_game_state().get_state().collectionItems=dict2obj(CollIt)

    
def remove_gift_from_game_state(selfgift):
        for 
current_gift in list(self._get_game_state().get_state().gifts):
            if 
gift.id == current_gift.id:
                
self._get_game_state().get_state().gifts.remove(current_gift)
                break


class 
AddGiftEventHandler(object):
    
def __init__(selfgame_state):
        
self.__game_state game_state

    def handle
(selfevent):
        
gift event.gift
        self
.append_gift_to_game_state(gift)

    
def append_gift_to_game_state(selfgift):
        
logger.info(u"Получен подарок.")
        
self.__game_state.gifts.append(gift)


class 
CakesReceiverBot(BaseActor):
    
def perform_action(self):
        
# Пряники
        
if not hasattr(self._get_game_state(), 'conifer_user'):
            try:
                
with open('conifer_user.txt''r') as f:
                    
self._get_game_state().conifer_user = eval(f.read())
            
except:
                
self._get_game_state().conifer_user = []
                
        
trees self._get_game_location().\
                    
get_all_objects_by_type('newYearTree')
        
cakes_count 0
        
for tree in trees:
            for 
i in tree.users:
                
cakes_count += 1
                self
._get_game_state().conifer_user.append(i.id)
                
apply_tree_event = {"type""newYearTree",
                                    
"action""applyNewYearGift",
                                    
"objId"tree.id,
                                    
"index"0}
                
self._get_events_sender().send_game_events([apply_tree_event])
                
self._get_game_state().add_from_storage("@CAKE",1)
            
tree.users = []
        if 
cakes_count 0:
            
logger.info(u"Собрали %d пряников" cakes_count)
            
with open('conifer_user.txt''w') as f:
                
f.write(str(self._get_game_state().conifer_user))


class 
FreeGifts(BaseActor):

    
def perform_action(self):
        
# Дарение бесплатки
        
        
SMS u'Привет Друзья!))'  
 
        
if not hasattr (self._get_game_state() , "playersInfo"): return 
        
# создаём список с бесплатками
        
freeGifts = []
        for 
i in self._get_item_reader().get("FREE_GIFTS").freeGifts:
            if 
hasattr (iu'endDate') and int(i.endDate) < long(time.time())*1000: continue 
            
freeGifts.append(i.item)  
        
#print 'freeGifts', freeGifts
        
        # создаём список уже осчастливленных
        
GU_go = []
        for 
i in self._get_game_state().get_state().freeGiftUsers:
            
GU_go.append(i.user)
        
#print obj2dict(self._get_game_state().get_state().freeGiftUsers)
        #print 'GU_go', len(GU_go)
        
        
self._event = []
        for 
playerInfo in self._get_game_state().playersInfo:
            if 
playerInfo.id in GU_go: continue
            
wish = []
            for 
w in playerInfo.liteGameState.wishlist:
                if 
!= None and (w in freeGifts): wish.append(w)
            if 
not wish:
                continue
#wish.append('@CR_16')
            
self._event.append({"userIds":[str(playerInfo.id)],"msg":SMS,"type":"gifts","action":"sendFreeGifts","itemId":random_number.choice(wish)[1:]})
            
self._get_game_state().get_state().freeGiftUsers.append(dict2obj({u'blockedUntil'u'86400000'u'user'playerInfo.id}))
            if 
len(self._event) > 499:
                
self.events_send()
        
self.events_send()
        
    
def events_send(self):
        if 
self._event != []:
            
self._get_events_sender().send_game_events(self._event)
            if 
str(len(self._event))[-1:] == '1' and len(self._event) !=11:
                
logger.info(u'Отослали бесплатку %s другу' % (len(self._event)))
            else:
                
logger.info(u'Отослали бесплатку %s друзьям' % (len(self._event)))
            
self._event = []              

    
#freeGifts = self._get_item_reader().get("FREE_GIFTS")
    #GameFreeGiftUser: {u'blockedUntil': u'29677878', u'user': u'10831211684864283025'}
    #{"type":"freeGifts","id":"FREE_GIFTS","freeGifts":[{"level":0,"item":"@CR_70"},{"level":0,"item":"@CR_01"},{"level":0,"item":"@CR_11"},{"level":0,"item":"@CR_44"},{"level":0,"item":"@CR_06"},{"level":0,"item":"@CR_16"},{"level":0,"item":"@CR_25"},{"level":0,"item":"@CR_40"},{"level":0,"item":"@CR_97"}]}
    
class StandartGifts(BaseActor):

    
def perform_action(self):
        
self.gift_id "@CR_66"    # подарок
        
self.count 15                   # количество
        
SMS u''                        # сообщение        
        #users = self._get_options()      # все друзья
        
users = ['577535434622']     # друзья по списку
        #users = users[80:]
        
        
if not users: return
        if 
self.gift_id == "@CR_66"self.count 15 # для металла, количество 10
        
        
storage self._get_game_state().get_state().storageItems
        
for object in storage:
            if 
object.item == self.gift_id:
                
self.mat_count object.count
                
print self.gift_idobject.count
                
break       
        
        
self.event = []
        for 
user in users:
            
#"id":users.index(user)+1
            
self.event.append({"action":"sendGift","type":"gift","gift":{"count":self.count,"user":user,"item":self.gift_id,"msg":SMS}})
            if 
user == users[0]:
                
logger.info(u'Отправляем подарок '+str(self.gift_id)+' '+str(len(self.event))+u' раз '+str(len(self.event)*self.count)+u' штук')
                
self._get_events_sender().send_game_events(self.event)                
                
object.count -= len(self.event)*self.count
                self
.event = []
            if 
len(self.event) > 19:
                
self.events_send(users[0])
                
object.count -= len(self.event)*self.count
        self
.events_send(users[0])
        print
        
raw_input('-------------   END   ---------------')
            
    
def events_send(selfconrol):
        if 
self.event != []:
            
self._get_game_state().resp False
            logger
.info(u'Отправляем подарок '+str(self.gift_id)+' '+str(len(self.event)-1)+u' раз '+str(len(self.event)*self.count)+u' штук')            
            
#self.event.append({"type":"players","action":"getInfo","players":[conrol]})
            
self._get_events_sender().send_game_events(self.event)
            
event_control = {"type":"players","action":"getInfo","players":[conrol]}
            
self._get_events_sender().send_game_events([event_control])
            
self.response_wait()
            
self.event = []

    
def response_wait(self):
        
#self._get_game().handle_all_events()
        
print 'resp'self._get_game_state().resp
        
while not self._get_game_state().resp:
            
#print u'\b.',
            
if 'SERVER_TOO_MANY_GIFTS_LIMIT' in self._get_game().alerts:
                print 
u'Лимит...'
                
self._get_game_state().resp True
                time
.sleep(1)
                
self.limit True
            
else:
                print 
u'\b.',
                
#self._get_events_sender().send_game_events([])
                
self._get_game().handle_all_events()
                
time.sleep(0.2)
        print 
'resp'self._get_game_state().resp
        time
.sleep(1)

    
# {"gift":{"msg":"","user":"8997900496038913535","count":1,"item":"@CR_16"},"id":14,"type":"gift","action":"sendGift"},
    # {"gift":{"msg":"","user":"8036052199871747874","count":1,"item":"@CR_16"},"id":15,"type":"gift","action":"sendGift"},
    # {"gift":{"msg":"","user":"17845066894669387658","count":1,"item":"@CR_16"},"id":16,"type":"gift","action":"sendGift"} 
Модуль с прописанным весенним настроением, несколько версий пробовал, здесь люди выкладывали, безрезультатно, кстати, если оттуда все удалить, будет то же самое, как на скрине выше, то есть будто бот и не видит вовсе этого модуля, в чем может быть косяк?

premium_gifts.py

PHP код:
# coding=utf-8
import logging
from game_actors_and_handlers
.base import BaseActor
from game_state
.game_types import GameApplyGiftEventGameGift
from game_state
.game_event import dict2objobj2dict
from game_state
.game_types import GamePickPickupGamePickItemGamePickup
from game_actors_and_handlers
.base import BaseActor
#from ctypes import windll
import sys
import time

logger 
logging.getLogger(__name__)

class 
PremiumGifts(BaseActor):
    
    
def perform_action(self):
        
location_id "isle_omega"
        
specified_gift '@SNOWDROP_BOX18_1'  # весеннее настроение
        
free_x 15  # Координаты пустого места
        
free_y 15
        
        location 
self._get_game_state().get_game_loc().get_location_id()
        if 
location == location_id:
            
gifts = list(set(self._get_game_state().get_state().gifts))
            
num 0
            
for gift in gifts:
                if 
gift.item == specified_gift:
                    for 
co in range(gift.count):                    
                        
next_id self._get_game_state().get_state().gameObjects[-1].id 1   
                        apply_event
={
                            
"x":free_x
                            
"y":free_y,
                            
"extraId":gift.id,
                            
"action":"applyCompGift",
                            
"itemId":specified_gift[1:],
                            
"type":"item",
                            
"objId":next_id 
                            
}
                        
logger.info(u'Устанавливаем подарок  со склада и по х...на все)Я Cheat Cheater')
                        
self._get_events_sender().send_game_events([apply_event])
                        
#print u'Открываем подарок'
                        
open_event={"action":"pick","type":"item","objId":next_id}
                        
self._get_events_sender().send_game_events([open_event])
                        
num += 1
                        
#time.sleep(0.003)
                        
if not num 600:
                            
time.sleep(2)
                            break
                    if 
num 600:
                        break
                    
self._get_game_state().get_state().gifts.remove(gift)
            
logger.info(u"  ------------------------------------  ")
            
logger.info(u"Приняли и вскрыли "+str(num)+u" шт. "+specified_gift)
            
logger.info(u"  ------------------------------------  ")
            
"""
#min_money = 1000000000  # оставляем денег
ставим:
{"
events":[{"objId":14918,"x":99,"y":4,"extraId":204061,"type":"item","itemId":"@SNOWDROP_BOX18_1","action":"applyCompGift"}]}
{"
events":[{"objId":14919,"x":96,"y":5,"extraId":203891,"type":"item","itemId":"@SNOWDROP_BOX18_1","action":"applyCompGift"}]}

            
вскрываем:
{"
events":[{"objId":14918,"type":"item","action":"pick"}]}
покупаем
{"
events":[{"objId":14920,"x":96,"y":6,"action":"buy","type":"item","itemId":"@SNOWDROP_BOX18_1"}]}            
""" 
Первый вариант покупка - вскрытие, который выше, а вот ниже второй вариант, выставлять и вскрывать, впрочем, как уже говорил один фик...

PHP код:
# coding=utf-8
import logging
from game_actors_and_handlers
.base import BaseActor
from game_state
.game_types import GameApplyGiftEventGameGift
from game_state
.game_event import dict2objobj2dict
from game_state
.game_types import GamePickPickupGamePickItemGamePickup
from game_actors_and_handlers
.base import BaseActor
#from ctypes import windll
import sys
import time

logger 
logging.getLogger(__name__)

class 
PremiumGifts(BaseActor):
    
    
def perform_action(self):
        
location_id "main"
        
specified_gift '@VALENT_GIFT_BOX6'  # зомбилетто
        
free_x 96  # Координаты пустого места
        
free_y 5
        
        location 
self._get_game_state().get_game_loc().get_location_id()
        if 
location == location_id:
            
gifts = list(set(self._get_game_state().get_state().gifts))
            
num 0
            
for gift in gifts:
                if 
gift.item == specified_gift:
                    for 
co in range(gift.count):                    
                        
next_id self._get_game_state().get_state().gameObjects[-1].id 1   
                        apply_event
={
                            
"x":free_x
                            
"y":free_y,
                            
"extraId":gift.id,
                            
"action":"applyCompGift",
                            
"itemId":specified_gift[1:],
                            
"type":"item",
                            
"objId":next_id 
                            
}
                        print 
u'Устанавливаем подарок 'co 
                        self
._get_events_sender().send_game_events([apply_event])
                        
#print u'Открываем подарок'
                        
open_event={"action":"pick","type":"item","objId":next_id}
                        
self._get_events_sender().send_game_events([open_event])
                        
num += 1
                        
if not num 500:
                            
time.sleep(2)
                            break
                    if 
num 499:
                        break
                    
self._get_game_state().get_state().gifts.remove(gift)
            
logger.info(u"  ------------------------------------  ")
            
logger.info(u"Приняли и вскрыли "+str(num)+u" шт. "+specified_gift)
            
logger.info(u"  ------------------------------------  "
Это пример, не обращай внимания на то что там зомбилетто прописано.

Последний раз редактировалось Warrior94; 11.03.2018 в 12:11.
  Ответить с цитированием
Старый 11.03.2018, 17:10   #6048
 Разведчик
Аватар для ABBAtjaga
 
ABBAtjaga никому не известный тип
Регистрация: 28.05.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Я мало понимаю в программировании вообще и в питоне в частности, так что с вопросами ко мне очень опасно обращаться До проблем с подключением модуля, я ещё не дорос)

  Ответить с цитированием
Старый 11.03.2018, 18:20   #6049
 Разведчик
Аватар для alser2
 
alser2 никому не известный тип
Регистрация: 03.12.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

[Ссылки могут видеть только зарегистрированные пользователи. ] для выставления и вскрытия весеннего. выставляет и вскрывает на всю свободную площадь острова. остров куда выставлять выбирается внутри модуля. модуль небезгрешен, писался давным давно ))
  Ответить с цитированием
Старый 12.03.2018, 06:33   #6050
 Разведчик
Аватар для Warrior94
 
Warrior94 никому не известный тип
Регистрация: 11.01.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от alser2Посмотреть сообщение
[Ссылки могут видеть только зарегистрированные пользователи. ] для выставления и вскрытия весеннего. выставляет и вскрывает на всю свободную площадь острова. остров куда выставлять выбирается внутри модуля. модуль небезгрешен, писался давным давно ))

  Ответить с цитированием
Старый 12.03.2018, 10:23   #6051
 Разведчик
Аватар для alser2
 
alser2 никому не известный тип
Регистрация: 03.12.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

а зачем ты удалил модуль premium_gifts ?
для моего модуля надо в гэймэнжин сделать импорт
PHP код:
from game_actors_and_handlers.vesennee import Vesennee 
и в актеры добавить
PHP код:
            Vesennee,           # Выставление весеннего настроения 

Последний раз редактировалось alser2; 12.03.2018 в 10:26.
  Ответить с цитированием
Старый 12.03.2018, 11:46   #6052
 Разведчик
Аватар для Warrior94
 
Warrior94 никому не известный тип
Регистрация: 11.01.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от alser2Посмотреть сообщение
а зачем ты удалил модуль premium_gifts ?
для моего модуля надо в гэймэнжин сделать импорт
PHP код:
from game_actors_and_handlers.vesennee import Vesennee 
и в актеры добавить
PHP код:
            Vesennee,           # Выставление весеннего настроения 

Исправил, но эффекта это не дало, без разницы какой модуль, вот такая шняга происходит



game_engine.py

PHP код:
# coding=utf-8
import os
import sys
import random
import ssl
import message_factory
from message_factory import Session
sys
.path.append('./API')
import vkontakte.api
import vkutils
import odnoklassniki
.api
import okutils
import mrutils
import fbutils
import logging
from settings import Settings
import time
from game_state
.item_reader import GameItemReader
from game_state
.composit_reader import GameCompositionReader
from game_state
.game_event import dict2objobj2dict
from game_state
.game_types import GameEVTGameTIMEGameSTARTGameInfoGameFertilizePlantGamePlayGameGameStartGainMaterialGameStartTimeGainEvent
import pprint
#from game_actors_and_handlers.friends import VisitingUsers
from game_actors_and_handlers.brains import GameBrains
from game_actors_and_handlers
.gifts import GiftReceiverBotAddGiftEventHandlerCakesReceiverBotFreeGifts
from game_actors_and_handlers
.plants import HarvesterBotSeederBotPlantEventHandlerGameSeedReaderUseEggItemBotFertilBot
from game_actors_and_handlers
.roulettes import RouletteRollerGameResultHandlerFrutRouletteRoller
from game_actors_and_handlers
.wood_graves import WoodPickerWoodTargetSelecter
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
.search_buff import GameBuffDigger
from game_actors_and_handlers
.workers import GainMaterialEventHandler
from game_actors_and_handlers
.pickups import PickuperAddPickupHandler,BoxPickuper,MonsterPit
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
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 ExchangeKrugerExchangeMummy
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
from game_actors_and_handlers
.tree_plant import TreePlant
from game_actors_and_handlers
.move_items import MoveItem
from game_actors_and_handlers
.BuildingTrack import BuildingTrack
from game_actors_and_handlers
.exchange import Exchange_Collection
from game_actors_and_handlers
.create_shovel import CreateShovelExtra
from game_actors_and_handlers
.exchange_all import GameBrains1
from game_actors_and_handlers
.deletingobjects import DeletingObjects
from game_actors_and_handlers
.pirate_put import PiratePut
from game_actors_and_handlers
.bolt_gift import BoltGift
from game_actors_and_handlers
.exchange_super import ExchangeCollections
from game_actors_and_handlers
.buff_fix_cook import GameBuffFixCook
from game_actors_and_handlers
.emerald_exchange import Emeraldic
from game_actors_and_handlers
.tent_circus import BowReceiverBot
from game_actors_and_handlers
.exchange_all import GameBrains1
import socket
import urllib2
from game_actors_and_handlers
.vesennee import Vesennee  
#from game_actors_and_handlers.premium_gifts import PremiumGifts
from game_actors_and_handlers.torg import Torgovec
from game_actors_and_handlers
.storage import SellBot
from game_actors_and_handlers
.missions import GetMissionsBotViewMissions
from game_actors_and_handlers
.exchange_izumrud import ExhangeCollEmerald
from game_actors_and_handlers
.storage_put import StoragePut
from game_actors_and_handlers
.burrowing import DigBot
from game_actors_and_handlers
.seederbot import SeederBotMy
from game_actors_and_handlers
.base import BaseActor
from game_actors_and_handlers
.wand import MagicWand
from game_actors_and_handlers
.airplane_sell import TiketReceiverBot
##############################
from game_actors_and_handlers.base import BaseActor
from ctypes import windll
stdout_handle 
windll.kernel32.GetStdHandle(-11)
SetConsoleTextAttribute windll.kernel32.SetConsoleTextAttribute
##############################
from os import walk
import os
.path

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

    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('Загружаем остров...')
        
SetConsoleTextAttribute(stdout_handle0x0007 0x0008)
        print 
u'                              Загружаем остров...                              ',
        
sys.stdout.flush()
        
SetConsoleTextAttribute(stdout_handle0x0002 0x0008)
        
# 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_responsefriendsiduid self.start_game(server_timesession_key)
        
logger.info('Остров загружен!')
        return 
start_responsefriendsiduidserver_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
        
commandfriendsiduid self.__site.create_start_command(server_timeclient_time)
        
#print uid
        
sending_time = (time.time() - start_time) * 1000
        self
.__timer._add_sending_time(sending_time)
        return 
self.__request_sender.send(command),friendsid,uid

    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)
        print 
"UID: "+str(uid)
        return 
game_info


class GameState(BaseActor):
    
#self.order = None
    
def __init__(selfstart_responseitem_readercuruserfriends):
        
#self.__friendsid = self.__game_state_.get_state().friends
        
self.__curuser curuser
        self
.__friends friends
        self
.order None
        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)
        if 
not hasattr(self.__game_state,'rectsObjects'):self.__game_state.rectsObjects=[]
        
compositions=GameCompositionReader()
        
objAnims=compositions.readCompositnew()
        for 
anims in objAnims:
            
rectss=compositions.readComposit(anims,'compositions')
            
objects=dict2obj({"objAnim":str(anims),"rects":rectss})
            
self.__game_state.rectsObjects.append(objects)
            
        
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))
        
cou 0
        
for fgift in self.__game_state.freeGiftUsers:
            if 
fgift.blockedUntil 0cou+=1
            
#print str(obj2dict(fgift))
        #if cou < 1: os.remove('countfnyt.txt')
        
if not os.path.isfile('gameGIFT.txt'):
            
open('gameGIFT.txt''a').write(str(cou)+"/"+str(len(self.__game_state.freeGiftUsers))+"\n")
            for 
fgift in self.__game_state.freeGiftUsers:
                
open('gameGIFT.txt''a').write(str(obj2dict(fgift))+"\n")
            
open('gameGIFT.txt''a').write(str(dir(self.__game_state)))
            
open('gameSTATE.txt''w').write(str(obj2dict(self.__game_state)))
        if 
occupied_brain_count total_brain_count:
            print 
u"Мозги: ",
            
sys.stdout.flush()
            
SetConsoleTextAttribute(stdout_handle0x0004 0x0008)
            print 
"%d/%d" % (occupied_brain_counttotal_brain_count)
            
SetConsoleTextAttribute(stdout_handle0x0002 0x0008)
            
sys.stdout.flush()
        else:
            print 
u"Мозги: %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
        
if z<x:
            print 
u"Использование слотов для закопки друзей: ",
            
sys.stdout.flush()
            
SetConsoleTextAttribute(stdout_handle0x0004 0x0008)
            print 
"%d/%d" % (z,x)
            
SetConsoleTextAttribute(stdout_handle0x0002 0x0008)
            
sys.stdout.flush()
        else:
            print 
u"Слоты для закопки друзей: %d/%d" % (z,x)
        
#self.cprint(u'4'+self.__curuser)
        
os.system((u'title '+self.__curuser+u' Мозгов: ' str(occupied_brain_count)+'/'+str(total_brain_count)+u' Слоты: '+str(z)+'/'+str(x)+u' Друзья: '+str(len(self.__game_state.freeGiftUsers))+"/"+str(self.__friends)+":"+str(cou)).encode('cp1251''ignore'))
        
#logger.info("Использование слотов для закопки друзей: %d/%d" % (z,x))
        
if len(self.__game_state.buyedBrains)<>0:
          print 
u"Купленные:"
          
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
              
print u"%d. Время окончания: %d:%d:%d.%d"%(x,h,m,s,ms)
              
x+=1
        
#logger.info(u"загружаем друзей")
        #self.__friendsid=self.__game_state_.get_state().friends
        
print u"Уровень игрока: ",
        
SetConsoleTextAttribute(stdout_handle0x0006 0x0008)
        print 
str(self.__game_state.level)
        
SetConsoleTextAttribute(stdout_handle0x0002 0x0008)
        
sys.stdout.flush()
        
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
        
print u"Деньги игрока: ",
        
sys.stdout.flush()
        
SetConsoleTextAttribute(stdout_handle0x0006 0x0008)
        print 
str(s[:-1]),
        
SetConsoleTextAttribute(stdout_handle0x0002 0x0008)
        
sys.stdout.flush()
        print 
u' монет'
        
#logger.info("Деньги игрока: "+s[:-1])
        #logger.info("")
        
self.cprint(u'3Положил пряников сегодня:^7_%s'%(len(self.__game_state.remoteNewYear)))
        
self.cprint(u'3Закопал Друзьям Чудика сегодня:^7_%s'%(len(self.__game_state.remoteMonsterPit)))
        
self.cprint(u'3Удобрил друзьям деревья сегодня:^7_%s'%(len(self.__game_state.remoteFertilizeFruitTree)))
    
    
#def order(self):
    #    return order
    
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 seed2storage_plant
(selfseed):
        if 
seed[0] == '@'seed seed[1:]
        if 
seed[-1:] == 'P':seedst seed[2:-1]
        else: 
seedst seed[2:]
        return 
'@S_'+seedst
    
    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

    def count_in_storage
(selfitem_id):
        if 
os.path.isfile('storage.txt'): exif 1
        
else: exif 0
        
for itemid in self.__game_state.storageItems:
            if 
hasattr(itemid"item"): 
                if 
itemid.item == item_idret itemid.count
                
if exif == 0:
                    
#if itemid.item[:3] == "@S_":open('storage.txt', 'a').write(itemid.item.replace('@S_', 'P_')+": "+str(itemid.count)+"\n")
                    
try:
                        
name self.__item_reader.get('P_'+itemid.item[3:]).name
                    except
:
                        
name "N/A"
                    
open('storage.txt''a').write((name+": "+str(itemid.count)+"\t\t"+itemid.item+"\n").encode('utf-8''ignore'))
                    
#-------------------------------------                
                #if itemid.item == item_id: ret = itemid.count
        
try: return ret
        
#print "##################################################"
        
except: return 0

    def count_in_storageObjects
(selfitem_id):
        for 
itemid in self.__game_state.storageGameObjects:
            if 
hasattr(itemid"item"):
                if 
itemid.item == item_id:
                    return 
itemid.count

    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)


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

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

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

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


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
        
        
#print dir(self.__game_initializer._getUserInfo)
        

        
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
.__receive_admin_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()
        
#######################################
        
self.__selected_brains_count settings.getUserBrains1()
        
self.__selected_Burrowing settings.getUserBurrowing()
        
self.__selected_SeedMode settings.getUserSeedMode()
        
self.__selected_Friends settings.getUserFriends()
        
self.__selected_curuser settings.getCurUser()
        
self.__selected_Actors settings.getUserActors()
        
#self.__selected_PremiumGifts = settings.getUserPremiumGifts()
        #self.__selected_modePassAllAccount = paa
        
        #print ''
        
if self.__selected_seed<>None
            if  (
self.__selected_seed=='None'): print u'Выбранные семена: ничего не сажать'
            
else:
                
#item_reader = reader_class(self.__itemReader)
                
if type(self.__selected_seed)==type(''): print u'Выбранные семена: везде "%s"'%str(self.__selected_seed)
                
elif type(self.__selected_seed)==type([]):
                    print 
u'Выбранные семена: везде ',
                    for 
seed in self.__selected_seed:
                        print 
seed,
                    print 
''
                
elif type(self.__selected_seed)==type({}): 
                    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):
        print 
u'Доступные острова:'
        
print u'(+ платный, - бесплатный, ? - пещера)'
        
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
                
print u'\t-\t'+location.locationId+'\t'+name
            
else:
                if (
location.locationId not in locations_nfree):
                    print 
u'\t?\t'+location.locationId+'\t'+name
                
else:
                    print 
u'\t+\t'+location.locationId+'\t'+name
        
if locations:
            print 
u'Находимся на острове:',
            print 
u'   *       '+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(selfpaa):
        
#print dir(self)
        
self.__selected_modePassAllAccount paa
        game_state 
self.get_game_state
        
while(self.running()):
            try:
                
#загружаем заказ на посадку и варку
                #self.get_game_state.order.recipes = []
                #self.get_game_state.order.seed = []
                #game_state = GameState()
                #global order
                
self.order = {'recipes':[], 'seed':[]}
                for (
dirpathdirnamesfilenamesin walk(".\orders"):
                    for 
file in filenames:
                        if 
file[-3:] == "itm":
                            
scou open(".\orders\\"+file).read()
                            
cou int(scou)
                            if 
file[:2] == "P_":
                                if 
cou 0:
                                    
self.order['seed'].append([file[:-4],cou])
                                    
#self.get_game_state.order.seed.append([file[:-3],cou])
                                    #print file[:-4]+" : "+str(cou)
                            
elif file[:7] == "RECIPE_":
                                if 
cou 0:
                                    
self.order['recipes'].append([file[:-4],cou])
                                    
#self.get_game_state.order.recipes.append([file[:-3],cou])
                                    #print file[:-4]+" : "+str(cou)
                # load items dictionary
                
if self.__itemReader is None:
                    print 
u'Загружаем словарь объектов...'
                    
item_reader GameItemReader()
                    
item_reader.download('items.txt')
                    
item_reader.read('items.txt')
                    
self.__itemReader item_reader
                    
print u'Словарь объектов загружен'
                
compositions GameItemReader()
                print 
u'Загружаю размеры обьектов'
                
compositions.loadComposit('compositions')
                
start_response,self.__friendsid,self.__uid,self.__server_time self.__game_initializer.start()
                
# Save Game_state
                
open("game_state.txt","w").write(str(obj2dict(start_response)))
                
                
#print str(len(self.__friendsid))
                
self.__game_events_sender self.__game_initializer.create_events_sender()

                
self.save_game_state(start_response)
                if 
hasattr(self.__game_state_.get_state(),'friends'): 
                    
self.__friendsid=self.__game_state_.get_state().friends
                
#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.load_info_users()
                
                
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 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()
            
    
def add_users_info(selfevent_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))
        
#time.sleep(2)
    ################

    
def save_game_state(selfstart_response):
        
# parse game state
        
self.__game_state_ GameState(start_responseself.__itemReaderself.__selected_curuserlen(self.__friendsid))

    
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
        '''
        
game_state self.__game_state_
        interval 
1
        refresh_min 
5
        seconds 
interval
        ref_min 
= []
        while(
self.running()):
            if 
seconds >= interval:
                
self.perform_all_actions()
                
#logger.info('Ждем %d секунд'%interval)
                
if hasattr(game_state'fdend'):
                    
#print "interval 20"
                    
interval 1
                
                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)==1pass#logger.info(u'Перезагрузка через %s минуту'%str(refresh_min-min))
                
elif ((refresh_min-min)>=2) and ((refresh_min-min)<=4):pass# 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):
        
self.__selected_loc_setting['modePassAllAccount'] = self.__selected_modePassAllAccount
        
#print type(self.__selected_Friends)
        
receive_options = {'with_messages'self.__receive_gifts_with_messages,
                           
'non_free'self.__receive_non_free_gifts,
                           
'from_admin'self.__receive_admin_gifts,
                           
'users'self.__friendsid}
        
options = {'GiftReceiverBot'receive_options,
                   
'GameBrains1'self.__selected_brains_count,
                   
'SeederBot': [self.__selected_SeedModeself.__selected_seed],
                   
'CookerBot'self.__selected_recipe,
                   
'ChangeLocationBot'self.__selected_location,
                   
'ChangeLocationBot': {'modePassAllAccount':self.__selected_modePassAllAccount},
                   
#'VisitingUsers' : str(self.__friendsid)+str(self.__selected_Friends),
                   
'DigBot':self.__selected_Burrowing,
                   
'SellBot':{'sell_item':self.__selected_sell,'send_user':self.__selected_send},
                   
'ChangeLocationBot':self.__selected_loc_setting,
                   
#'PremiumGifts':self.__selected_PremiumGifts
                  
}
        
events_sender self.__game_events_sender
        timer 
self._get_timer()
        
item_reader self.__itemReader
        game_state 
self.__game_state_
        actor_classes1 
= [
            
DigBot,              #0 Работа с мозгами
            
StoragePut,           #1 выставление сосклада барахло
        
ExhangeCollEmerald,   #2 создание изумрудной
        
BowReceiverBot,       #3 сбор бантов
        
Emeraldic,            #4 создание луксорской
            
GameBrains1,          #5 создание коллекций и мозгов
            
GameBrains,           #6 производство мозгов (останкинобкорабль)        
            
GetMissionsBot,       #7 Запрос выполнения миссий
            
MonsterPit,           #8 Закапывание чуда
            #VisitingUsers,        #9 Посещение друзей
            
GameBuffHarvest,      #10 Приём супер урожая
            
GameBuffDigger,       #11 Приём супер-поиск
            
GameBuffFixCook,      #12 Прием минутки на день
            
WoodPicker,           #13 Сбор дерева
            
StonePicker,          #14 Сбор камня
            
BrewPicker,           #15 Сбор сваренного
            
BagsPicker,           #16 Сбор сумок
            
WoodTargetSelecter,   #17 Отправка работать дровосекам
            
StoneTargetSelecter,  #18 Отправка работать камнетёсов
            
CookerBot,            #19 Работа с поварами (подъем из могил, установка рецептов)
            
CookSpeed,            #20 Посолить рецепты
            
FertilBot,            #21 Удобрение деревьев
            
HarvesterBot,         #22 Сбор чего либо + вскапывание грядок
            
CakesReceiverBot,     #23 Сбор пряников
            
SeederBot,            #24 Посейка
            
GiftReceiverBot,      #25 Принятие подарков
            
BoxPickuper,          #26 Вскрытие чего либо
            
PiratePut,            #27 Выставление любого барахла со склада
            
RouletteRoller,       #28 Кручение рулеток            
            
FrutRouletteRoller,   #29 Кручение фруктовых рулеток
            
UseEggItemBot,        #30 Бить яйца ;)
            
MagicWand,            #31 Добыча ресурсов палочками
            
ExchangeKruger,       #32 Создаем коллекцию фреди в изумрудной мельнице
            
ExchangeMummy,        #33 Создаем коллекцию мумии в изумрдуном маяке
            
Pickuper,             #34 Сбор дропа
            
SellBot,              #35 Продажа чего либо
            
TraderWork,           #36 Торговцы
            
BuildingBuyer,        #37 Покупаем, продаем ракету
            
HarvestExchange,      #38 создаем деньги в БЦ
            
PirateTreeCut,        #39 рубка на острове сокровищ
            
Exchange_Collection,  #40 обмен коллекции(любая)
        
MoveItem,             #41 воровать вещи с острова(не актуально)
        
TreePlant,            #42 Посадка деревьев
            
BuildingTrack,        #43 покупка настилов(не актуально)
            
CreateShovelExtra,    #44 Создание лопат в Глаз-алмаз
            
DeletingObjects,      #45 Удаление объектов
            
BoltGift,             #46 передача другу чего либо
            
ExchangeCollections,  #47
            
Torgovec,             #48
            
ChangeLocationBot,    #49 Переход по локациям
            
SeederBotMy,          #50
            
FreeGifts,            #51
            
TiketReceiverBot,     #52 обнова корзин
            
Vesennee,           # Выставление весеннего настроения
        
]
        
br 0
        
if self.__selected_Burrowing == None:
            print 
u'Никого не закапывать'
            
del actor_classes1[0]
            
br 1
        
else: self.__selected_Actors.insert(00)
        
#else: print str(self.__selected_Burrowing)
        #print str(self.__selected_SeedMode)+"  "+str(self.__selected_seed)
        
actor_classes = []
        if 
self.__selected_Actors != None:
            for 
ator in self.__selected_Actors:
                
actor_classes.append(actor_classes1[ator-br])
        else: 
actor_classes actor_classes1
        
#print self.__selected_Actors
        
self.__actors = []
        for 
actor_class in actor_classes:
            
self.__actors.append(
                
actor_class(item_readergame_stateevents_sendertimer,
                            
options))

    
def perform_all_actions(self):
        
game_state self.__game_state_
        
#print str(self.__selected_Friends)
        
options = {'VisitingUsers' : [[self.__selected_curuserself.__uidself.__friendsid], self.__selected_Friends]}
        
events_sender self.__game_events_sender
        timer 
self._get_timer()
        
item_reader self.__itemReader
        
'''
        Assumes that create_all_actors is called before
        '''
        
if not hasattr(game_state'fdend'):
            
#print '#########  VisitingUsers  #########'
            
VisitingUsers(item_readergame_stateevents_sendertimeroptions).perform_action()
        else:
            
#print '######## perform_all_actions #######'
            #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()
        
#print "###################"
    
if hasattr(game_state,'tmpall')and len(game_state.tmpall)>0:
            for 
i in game_state.tmpall.keys():
                if 
!= u'денег' and != u'опыта':
                    
SetConsoleTextAttribute(stdout_handle0x0005 0x0008)
                    print 
u' Подобрали ',
                    
sys.stdout.flush()
                    
SetConsoleTextAttribute(stdout_handle0x0007 0x0008)
                    print 
game_state.tmpall[i],
                    
sys.stdout.flush()
                    
SetConsoleTextAttribute(stdout_handle0x0003 0x0008)
                    print 
i
                    sys
.stdout.flush()
                    
SetConsoleTextAttribute(stdout_handle0x0002 0x0008)
            
del game_state.tmpall
        
if hasattr(game_state,'getcoins') and game_state.getcoins 0:
            
SetConsoleTextAttribute(stdout_handle0x0005 0x0008)
            print 
u'Подобрали: ',
            
sys.stdout.flush()
            
SetConsoleTextAttribute(stdout_handle0x0006 0x0008)
            print 
str(game_state.getcoins),
            
sys.stdout.flush()
            
SetConsoleTextAttribute(stdout_handle0x0002 0x0008)
            print 
u'монет'
            
del game_state.getcoins
        
if hasattr(game_state,'getxp') and game_state.getxp 0:
            
SetConsoleTextAttribute(stdout_handle0x0005 0x0008)
            print 
u'Подобрали: ',
            
sys.stdout.flush()
            
SetConsoleTextAttribute(stdout_handle0x0006 0x0008)
            print 
str(game_state.getxp),
            
sys.stdout.flush()
            
SetConsoleTextAttribute(stdout_handle0x0002 0x0008)
            print 
u'опыта'
            
del game_state.getxp
        
#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':
            
#print event_to_handle.msg
            
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
.msg == 'SERVER_TREASURE_FOUND':#нашел секретный клад
                
print u'НАЙДЕН СЕКРЕТНЫЙ КЛАД!!!'
                
self.__game_state_.treasfound 1
            elif event_to_handle
.msg == 'SERVER_REMOTE_TREASURE_NO_TRIES':#Кончились лопаты
                
self.__game_state_.treasnotries 1
            elif event_to_handle
.msg == 'SERVER_NO_BRAINS':#Не хватает мозгов
                
self.__game_state_.nobrains 1
            elif event_to_handle
.msg == 'SERVER_REMOTE_FERTILIZE_FRUIT_TREE_NOT_FOUND':#Не найдены деревья для удобрения
                
self.__game_state_.fertilizenot 1
            elif event_to_handle
.msg == 'SERVER_MONSTER_PIT_DIG_OK':#Закопали мишуту
                
self.__game_state_.monsterpitok 1
            elif event_to_handle
.msg == 'SERVER_MONSTER_PIT_INCORRECT_INSTRUMENT':#мишуту можно закопать только за баксы
                
self.__game_state_.monsterpitincorrect 1
        elif event_to_handle
.action[:4] == 'ping':
            if 
event_to_handle.action[:5] == 'ping2':
                
time.sleep(1)
            else: 
time.sleep(0.005)
            
self.__game_events_sender.send_game_events([])
            
pass
        
#    print event_to_handle.action
        
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.type == 'mission':
            
ViewMissions(self.__itemReaderself.__setting_view).handle(event_to_handle)
        
elif event_to_handle.action == 'getInfo'# and event_to_handle.type == 'playersInfo':
            
self.add_users_info(event_to_handle)
        
elif event_to_handle.type == 'monsterPitDigEvent':
            
name unicode(event_to_handle.user) + self.addName(event_to_handle.user)
            
logger.info(u'Пользователь ' name u' закопал нам медведя')
            
#logger.info(u"Пользователь %s закопал нам медведя"% (event_to_handle.user))
            
with open('action_frends.txt''a') as f:
                
sms u'Пользователь ' name u' закопал нам медведя' u'\n'           
                
f.write(sms.encode("utf-8"))
        
elif event_to_handle.type == 'pirateShip':
            
name unicode(event_to_handle.user) + self.addName(event_to_handle.user)
            
logger.info(u'Пользователь ' name u' вошёл в команду корабля')
            
#logger.info(u"Пользователь %s вошёл в команду корабля"% (event_to_handle.user))
            
with open('action_frends.txt''a') as f:
                
sms u'Пользователь ' name u' вошёл в команду корабля' u'\n'
                
f.write(sms.encode("utf-8"))
        
elif event_to_handle.action == 'exchange':
            
name unicode(event_to_handle.user) + self.addName(event_to_handle.user)
            
torg unicode(event_to_handle.objId)
            
logger.info(u'Пользователь ' name u' произвёл обмен у торговца ' torg)
            
#logger.info(u"Пользователь %s произвёл обмен у торговца"% (event_to_handle.user))
            
with open('action_frends.txt''a') as f:
                
sms u'Пользователь ' name u' произвёл обмен у торговца ' unicode(event_to_handle.objId) + u'\n'
                
f.write(sms.encode("utf-8"))    
        else:
            
self.logUnknownEvent(event_to_handle)
        
self.__game_events_sender.remove_game_event(event_to_handle)
        
    

    
def add_users_info(selfevent_to_handle):
        
self.__game_state_.resp True
        
if not hasattr(self.__game_state_'playersInfo'):
            
self.__game_state_.playersInfo event_to_handle.players
        
else:
            for 
new_info in event_to_handle.players:
                for 
info in self.__game_state_.playersInfo:
                    if 
new_info.id == info.id:
                        
del info
                        
break                        
            
self.__game_state_.playersInfo.extend(event_to_handle.players)

        
data = {}
        for 
n in event_to_handle.players:
            if 
hasattr(n'name') and n.name:
                
name_ n.name
                
while '{' in name_ or '}' in name_ or '[' in name_ or ']' in name_ or '^' in name_:
                    for 
l in '{}[]^':
                        
name_ name_.replace(l'')
                if 
u'\u0456' in name_:
                    
name_ name_.replace(u'\u0456'u'i')
            else:
                
name_ u''
                
#name_ = u'Без имени'
            
data[n.id] = name_
        
if data:
            if 
hasattr(self.__game_state_'friends_names'):
                
self.__game_state_.friends_names.update(data)
            else:
                
self.__game_state_.friends_names data


    def addName
(selfid):                    
        if 
hasattr(self.__game_state_'friends_names') and self.__game_state_.friends_names.get(id) and self.__game_state_.friends_names.get(id) != u'':
            
name u" '" self.__game_state_.friends_names.get(id) + u"'"
            
name name.replace(u'\u0456'u'i').encode("UTF-8""ignore")
            
name unicode(name"UTF-8")
            
#print name.replace(u'\u0456', u'i').encode("cp866", "ignore")
        
else: name u''
        
return name            
                

    def logUnknownEvent
(selfevent_to_handle):
        
logger logging.getLogger('unknownEventLogger')
        
#logger.info(pprint.pformat(obj2dict(event_to_handle)))
        
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
vesennee.py

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

logger 
logging.getLogger(__name__)

class 
Vesennee(BaseActor):

    
def perform_action(self):
        
        
plant_tree = {
                
#u'main':u'SNOWDROP_BOX18_1',                 # Домашний (Вписать код открываемого объекта SNOWDROP_BOX1)
                #u'isle_03':u'SNOWDROP_BOX18_1',             # Любви
                #u'isle_02':u'SNOWDROP_BOX18_1',             # Майя
                #u'isle_x':u'SNOWDROP_BOX18_1',              # X
                #u'isle_faith':u'SNOWDROP_BOX18_1',          # Веры
                #u'isle_hope':u'SNOWDROP_BOX18_1',           # Надежды
                #u'isle_scary':u'SNOWDROP_BOX18_1',          # Страшный
                #u'isle_alpha':u'SNOWDROP_BOX18_1',          # Альфа
                
u'isle_omega':u'SNOWDROP_BOX18_1',          # Омега
                #u'isle_sand':u'SNOWDROP_BOX18_1',           # Песочный
                #u'isle_polar':u'SNOWDROP_BOX18_1',          # Полярной ночи
                #u'isle_wild':u'SNOWDROP_BOX1',              # Дремучий
                #u'isle_mobile':u'SNOWDROP_BOX18_1',         # Мобильный
                #u'isle_ufo':u'SNOWDROP_BOX18_1',            # НЛО
                #u'isle_dream':u'SNOWDROP_BOX1',             # Мечты
                #u'isle_scarecrow':u'SNOWDROP_BOX18_1',      # Пик Админа
                #u'isle_elephant':u'SNOWDROP_BOX18_1',       # Ужасный
                #u'isle_emerald':u'SNOWDROP_BOX18_1',        # Город Призрак
                #u'isle_monster':u'SNOWDROP_BOX18_1',        # Чудовища
                #u'isle_halloween':u'SNOWDROP_BOX18_1',      # Лысая гора
                #
                ###############     Платные     ###############
                #
                #u'isle_01':u'SNOWDROP_BOX18_1',             # Секретный
                #u'isle_small':u'SNOWDROP_BOX18_1',          # Маленькой ёлочки
                #u'isle_star':u'SNOWDROP_BOX18_1',           # Звездный
                #u'isle_large':u'SNOWDROP_BOX18_1',          # Большой ёлки
                #u'isle_moon':u'SNOWDROP_BOX18_1',           # Лунный
                #u'isle_giant':u'SNOWDROP_BOX18_1',          # Гигантов
                #u'isle_xxl':u'SNOWDROP_BOX18_1',            # Огромной ёлки
                #u'isle_desert':u'SNOWDROP_BOX18_1',         # Необитаемый
                
}
        
current_loc self._get_game_state().get_location_id()
        if 
not current_loc in plant_tree:return 1
        need 
plant_tree [current_loc]
        
specified_gift '@SNOWDROP_BOX18_1'  # Весеннее настроение  (Вписать код открываемого объекта)
        
objects self._get_game_state().get_free_spases().newObject(need)       
        
need self._get_item_reader().get(need)
        
buy = []
        
opened = []
        
opened1 = []
        
count 0
        
if not hasattr(self._get_game_state(), 'vesennee'):
            
0
        
else:
            
self._get_game_state().vesennee
        gifts 
= list(set(self._get_game_state().get_state().gifts))
        for 
obj in objects:
            for 
gift in gifts:
                if 
gift.item == specified_gift:
                        if 
== 0:
                            
gift.count
                        apply_event
={
                            
"x":obj.x
                            
"y":obj.y,
                            
"extraId":gift.id,
                            
"action":"applyCompGift",
                            
"itemId":specified_gift[1:],
                            
"type":"item",
                            
"objId":obj.id 
                            
}
                        
buy.append(apply_event)
                        
open_event={"action":"pick","type":"item","objId":obj.id}
                        
opened.append(open_event)
                        
-=1
                        
if == 0:
                            
self._get_game_state().get_state().gifts.remove(gift)
                            
gifts = list(set(self._get_game_state().get_state().gifts))
                        break
        if 
len(buy) > 0:
            
self._get_events_sender().send_game_events(buy)
            
time.sleep(3)
            
logger.info(u'Выставили %d %s'%(len(buy),need.name))
        if 
len(opened) > 300:
            for 
ev in opened:
                
opened1 opened[:300]
                
self._get_events_sender().send_game_events(opened1)
                print 
u'                    \rОткрываем: '+str(count),
                
count += 300
                del opened
[:300]
            else:
                
self._get_events_sender().send_game_events(opened)
                print 
u''
            
self._get_events_sender().send_game_events(opened)
            print 
u''
            
logger.info(u'Открыли %d %s'%(len(buy),need.name))
        if 
not hasattr(self._get_game_state(), 'vesennee'):
            
self._get_game_state().vesennee t
        
else:
            
self._get_game_state().vesennee 
gifts.py

PHP код:
# coding=utf-8
import logging
from game_actors_and_handlers
.base import BaseActor
from game_state
.game_types import GameApplyGiftEventGameGift
from game_state
.game_event import dict2objobj2dict
import random  
as  random_number
import os
.path
import os
import time
logger 
logging.getLogger(__name__)


class 
GiftReceiverBot(BaseActor):
    
'''
    Receives gifts

    @param options: Available receive options:

    with_messages: receive gifts with messages
    non_free: receive non-free gifts
    '''

    
def perform_action(self):
        
self.receive_all_gifts()

    
def receive_all_gifts(self):
        
gifts = list(set(self._get_game_state().get_state().gifts))
        
#gifts = []
        #for i in gifts_one:
        #    if not i in gifts:
        #        gifts+=[i]
        # print dir(gifts[0])
        #[ u'count', u'free', u'id', u'item', u'msg', u'type', u'user']
        
if len(gifts) > 0:
            
logger.info(u"Доступно подарков: %s" len(gifts))
        for 
gift in list(gifts):
            
self.receive_gift(gift)

    
def receive_gift(selfgift):
        
item self._get_item_reader().get(gift.item)
        
gift_name u'П ' str(gift.count)+' '+item.name # подарок
        
with_message hasattr(gift'msg') and gift.msg != ''
        
moved hasattr(item'moved') and item.moved == True
        free 
hasattr(gift'free') and gift.free
        
if with_message:
            
SMS u" SMS: " gift.msg u""
            
#if u'Перрон' in gift.msg or u'перрон' in gift.msg or u'перон' in gift.msg:
            #    sms_perron = u'id '+gift.user+u'  SMS: '+gift.msg+"\n".encode("utf-8")
            #    open('perron_log.txt', 'a').write(sms_perron.encode("utf-8"))
        
else:
            
SMS u''
        
if moved:
           
gift_name u'В' gift_name # выставляемый
           #logger.info(u"П"+gift_name[1:]+ u"' нужно поместить")
        
if free and not moved:
            
gift_name u'Б' gift_name # бесплатный
        
gift_name gift_name.ljust(22' ')
        
gift_name += u" от " gift.user
        gift_name 
gift_name.ljust(47' ')
        
#print gift_name
        
if hasattr(self._get_game_state(), 'friends_names') and self._get_game_state().friends_names.get(gift.user) and self._get_game_state().friends_names.get(gift.user) != u'Без имени':
            
gift_name += u"'" self._get_game_state().friends_names.get(gift.user) + u"'"
        
print gift_name.replace(u'\u0456'u'i').encode("cp866""ignore")
        if 
SMS:
            print 
SMS.replace(u'\u0456'u'i').encode("cp866""ignore")
        
        
#logger.info(u'' + gift_name) # Доступен 
        
CollIt=obj2dict(self._get_game_state().get_state().collectionItems)
        if 
not moved and gift.user != 'ACTIVE_NPC_LOVE':
            if (
gift.item == '@CR_44') or (gift.item[1:] in CollIt.keys()) or free or self._get_options()["non_free"]:
                if (
self._get_options()["with_messages"] or not with_message):
                    
#logger.info(u"Принимаю " + gift_name)
                    
apply_gift_event GameApplyGiftEvent(GameGift(gift.id))
                    
self._get_events_sender().send_game_events([apply_gift_event])
                    
self._get_game_state().add_from_storage(gift.item,gift.count)
                    if (
gift.item[1:] in CollIt.keys()): CollIt[gift.item]=gift.count
            
            
#CR_01                Цемент
            #CR_06                Металл
            #CR_11                Доска
            #CR_16                Шестерня
            #CR_25                Стекло
            #CR_44                Мир
            #CR_70                Время

            
if 0:#отключено
                
if free and (gift.item<>'@CR_44'): # мир
                    #{"userIds":["85678136"],"type":"gifts","action":"sendFreeGifts","itemId":"CR_16","msg":"qwerty"}
                    #{"action":"sendFreeGifts","itemId":"CR_11","userIds":["119482219"],"type":"gifts","msg":":3"}
                    #{"userIds":[str(gift.user)],"type":"gifts","action":"sendFreeGifts","itemId":gift.item[1:],"msg":":3"}
                    
self._get_events_sender().send_game_events([{"userIds":[str(gift.user)],"type":"gifts","action":"sendFreeGifts","itemId":gift.item[1:],"msg":":3"}])
                    
#self._get_events_sender().send_game_events([{"userId":[gift.user],"itemId":gift.item[1:],"type":"gifts","msg":"","action":"sendFreeGifts"}])
                    
logger.info(u"Подарок от %s отправлен обратно: %s"%(gift.user,gift_name))
            
self.remove_gift_from_game_state(gift)
        
self._get_game_state().get_state().collectionItems=dict2obj(CollIt)

    
def remove_gift_from_game_state(selfgift):
        for 
current_gift in list(self._get_game_state().get_state().gifts):
            if 
gift.id == current_gift.id:
                
self._get_game_state().get_state().gifts.remove(current_gift)
                break


class 
AddGiftEventHandler(object):
    
def __init__(selfgame_state):
        
self.__game_state game_state

    def handle
(selfevent):
        
gift event.gift
        self
.append_gift_to_game_state(gift)

    
def append_gift_to_game_state(selfgift):
        
logger.info(u"Получен подарок.")
        
self.__game_state.gifts.append(gift)


class 
CakesReceiverBot(BaseActor):
    
def perform_action(self):
        
# Пряники
        
if not hasattr(self._get_game_state(), 'conifer_user'):
            try:
                
with open('conifer_user.txt''r') as f:
                    
self._get_game_state().conifer_user = eval(f.read())
            
except:
                
self._get_game_state().conifer_user = []
                
        
trees self._get_game_location().\
                    
get_all_objects_by_type('newYearTree')
        
cakes_count 0
        
for tree in trees:
            for 
i in tree.users:
                
cakes_count += 1
                self
._get_game_state().conifer_user.append(i.id)
                
apply_tree_event = {"type""newYearTree",
                                    
"action""applyNewYearGift",
                                    
"objId"tree.id,
                                    
"index"0}
                
self._get_events_sender().send_game_events([apply_tree_event])
                
self._get_game_state().add_from_storage("@CAKE",1)
            
tree.users = []
        if 
cakes_count 0:
            
logger.info(u"Собрали %d пряников" cakes_count)
            
with open('conifer_user.txt''w') as f:
                
f.write(str(self._get_game_state().conifer_user))


class 
FreeGifts(BaseActor):

    
def perform_action(self):
        
# Дарение бесплатки
        
        
SMS u'Привет Друзья!))'  
 
        
if not hasattr (self._get_game_state() , "playersInfo"): return 
        
# создаём список с бесплатками
        
freeGifts = []
        for 
i in self._get_item_reader().get("FREE_GIFTS").freeGifts:
            if 
hasattr (iu'endDate') and int(i.endDate) < long(time.time())*1000: continue 
            
freeGifts.append(i.item)  
        
#print 'freeGifts', freeGifts
        
        # создаём список уже осчастливленных
        
GU_go = []
        for 
i in self._get_game_state().get_state().freeGiftUsers:
            
GU_go.append(i.user)
        
#print obj2dict(self._get_game_state().get_state().freeGiftUsers)
        #print 'GU_go', len(GU_go)
        
        
self._event = []
        for 
playerInfo in self._get_game_state().playersInfo:
            if 
playerInfo.id in GU_go: continue
            
wish = []
            for 
w in playerInfo.liteGameState.wishlist:
                if 
!= None and (w in freeGifts): wish.append(w)
            if 
not wish:
                continue
#wish.append('@CR_16')
            
self._event.append({"userIds":[str(playerInfo.id)],"msg":SMS,"type":"gifts","action":"sendFreeGifts","itemId":random_number.choice(wish)[1:]})
            
self._get_game_state().get_state().freeGiftUsers.append(dict2obj({u'blockedUntil'u'86400000'u'user'playerInfo.id}))
            if 
len(self._event) > 499:
                
self.events_send()
        
self.events_send()
        
    
def events_send(self):
        if 
self._event != []:
            
self._get_events_sender().send_game_events(self._event)
            if 
str(len(self._event))[-1:] == '1' and len(self._event) !=11:
                
logger.info(u'Отослали бесплатку %s другу' % (len(self._event)))
            else:
                
logger.info(u'Отослали бесплатку %s друзьям' % (len(self._event)))
            
self._event = []              

    
#freeGifts = self._get_item_reader().get("FREE_GIFTS")
    #GameFreeGiftUser: {u'blockedUntil': u'29677878', u'user': u'10831211684864283025'}
    #{"type":"freeGifts","id":"FREE_GIFTS","freeGifts":[{"level":0,"item":"@CR_70"},{"level":0,"item":"@CR_01"},{"level":0,"item":"@CR_11"},{"level":0,"item":"@CR_44"},{"level":0,"item":"@CR_06"},{"level":0,"item":"@CR_16"},{"level":0,"item":"@CR_25"},{"level":0,"item":"@CR_40"},{"level":0,"item":"@CR_97"}]}
    
class StandartGifts(BaseActor):

    
def perform_action(self):
        
self.gift_id "@CR_66"    # подарок
        
self.count 15                   # количество
        
SMS u''                        # сообщение        
        #users = self._get_options()      # все друзья
        
users = ['577535434622']     # друзья по списку
        #users = users[80:]
        
        
if not users: return
        if 
self.gift_id == "@CR_66"self.count 15 # для металла, количество 10
        
        
storage self._get_game_state().get_state().storageItems
        
for object in storage:
            if 
object.item == self.gift_id:
                
self.mat_count object.count
                
print self.gift_idobject.count
                
break       
        
        
self.event = []
        for 
user in users:
            
#"id":users.index(user)+1
            
self.event.append({"action":"sendGift","type":"gift","gift":{"count":self.count,"user":user,"item":self.gift_id,"msg":SMS}})
            if 
user == users[0]:
                
logger.info(u'Отправляем подарок '+str(self.gift_id)+' '+str(len(self.event))+u' раз '+str(len(self.event)*self.count)+u' штук')
                
self._get_events_sender().send_game_events(self.event)                
                
object.count -= len(self.event)*self.count
                self
.event = []
            if 
len(self.event) > 19:
                
self.events_send(users[0])
                
object.count -= len(self.event)*self.count
        self
.events_send(users[0])
        print
        
raw_input('-------------   END   ---------------')
            
    
def events_send(selfconrol):
        if 
self.event != []:
            
self._get_game_state().resp False
            logger
.info(u'Отправляем подарок '+str(self.gift_id)+' '+str(len(self.event)-1)+u' раз '+str(len(self.event)*self.count)+u' штук')            
            
#self.event.append({"type":"players","action":"getInfo","players":[conrol]})
            
self._get_events_sender().send_game_events(self.event)
            
event_control = {"type":"players","action":"getInfo","players":[conrol]}
            
self._get_events_sender().send_game_events([event_control])
            
self.response_wait()
            
self.event = []

    
def response_wait(self):
        
#self._get_game().handle_all_events()
        
print 'resp'self._get_game_state().resp
        
while not self._get_game_state().resp:
            
#print u'\b.',
            
if 'SERVER_TOO_MANY_GIFTS_LIMIT' in self._get_game().alerts:
                print 
u'Лимит...'
                
self._get_game_state().resp True
                time
.sleep(1)
                
self.limit True
            
else:
                print 
u'\b.',
                
#self._get_events_sender().send_game_events([])
                
self._get_game().handle_all_events()
                
time.sleep(0.2)
        print 
'resp'self._get_game_state().resp
        time
.sleep(1)

    
# {"gift":{"msg":"","user":"8997900496038913535","count":1,"item":"@CR_16"},"id":14,"type":"gift","action":"sendGift"},
    # {"gift":{"msg":"","user":"8036052199871747874","count":1,"item":"@CR_16"},"id":15,"type":"gift","action":"sendGift"},
    # {"gift":{"msg":"","user":"17845066894669387658","count":1,"item":"@CR_16"},"id":16,"type":"gift","action":"sendGift"} 
Все подключено ведь...

А если не делать отступы в gifts.py (4 пробела), self.remove_gift_from_game_state(gift)
То вот так


Последний раз редактировалось Warrior94; 12.03.2018 в 11:59.
  Ответить с цитированием
Старый 12.03.2018, 11:57   #6053
 Разведчик
Аватар для alser2
 
alser2 никому не известный тип
Регистрация: 03.12.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

в сеттинге цифру 53 активировал?
  Ответить с цитированием
Старый 12.03.2018, 12:10   #6054
 Разведчик
Аватар для Warrior94
 
Warrior94 никому не известный тип
Регистрация: 11.01.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от alser2Посмотреть сообщение
в сеттинге цифру 53 активировал?

ага, теперь

  Ответить с цитированием
Старый 12.03.2018, 12:27   #6055
 Разведчик
Аватар для alser2
 
alser2 никому не известный тип
Регистрация: 03.12.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

ну указал цифру больше чем у тебя актеров. значит 52 у тебя по счету он. кинь модуль триплант еще, чего то фриспэйс не вижу у тебя в гэймэнжине.
  Ответить с цитированием
Старый 12.03.2018, 13:11   #6056
 Разведчик
Аватар для Warrior94
 
Warrior94 никому не известный тип
Регистрация: 11.01.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от alser2Посмотреть сообщение
ну указал цифру больше чем у тебя актеров. значит 52 у тебя по счету он. кинь модуль триплант еще, чего то фриспэйс не вижу у тебя в гэймэнжине.

С этим кое как разобрался, теперь следующая проблема



tree_plant.py

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

logger 
logging.getLogger(__name__)

class 
TreePlant(BaseActor):

    
def perform_action(self):
        
min_money 10  # оставляем денег    тупит просто
        # Что где сажаем   u'FT_CHERRY', u'FT_APPLE', u'FT_MANDARINE', u'FT_SKULL' , u'FT_EYE' 
        
plant_tree = {
                
#u'main':u'D_TRACK_3_1',            # Домашний
                #'main':u'FT_APPLE',            # Домашний
                #u'isle_03':u'GROUND',             # Любви
                #u'isle_02':u'FT_CHERRY',          # Майя
                #u'isle_x':u'GROUND',               # X
                #u'isle_faith':u'FT_MANDARINE',    # Веры
                #u'isle_hope':u'GROUND',            # Надежды
                #u'isle_scary':u'FT_CHERRY',       # Страшный
                #u'isle_alpha':u'FT_CHERRY',       # Альфа
                #u'isle_omega':u'FT_CHERRY',       # Омега
                #u'isle_sand':u'GROUND',           # Песочный
                
u'isle_polar':u'GROUND',       # Полярной ночи
                #u'isle_wild':u'GROUND',           # Дремучий
                #'isle_mobile':u'GROUND',       # Мобильный
                #u'isle_ufo':u'FT_CHERRY',         # НЛО
                #u'isle_dream':u'GROUND',          # Мечты
                #u'isle_scarecrow':u'FT_CHERRY',   # Пик Админа
                #u'isle_elephant':u'FT_SKULL',     # Ужасный
                #u'isle_emerald':u'GROUND',        # Город Призрак
                #u'isle_monster':u'FT_SKULL',      # Чудовища
                #u'isle_halloween':u'FT_SKULL',    # Лысая гора
                #u'isle_light':u'FT_EYE', # Вишневый
                #u'un_09':u'UN_FLOWER_01'          # Склад Хакера      UN_FLOWER_01 букет с любовью, UN_FERN куст с миром ,
                #
                ###############     Платные     ###############
                #
                #u'isle_01':u'FT_MANDARINE',          # Секретный
                #u'isle_small':u'FT_CHERRY',          # Маленькой ёлочки
                #u'isle_star':u'FT_APPLE',            # Звездный
                #u'isle_large':u'FT_MANDARINE',       # Большой ёлки
                #u'isle_moon':u'FT_MANDARINE',        # Лунный
                #u'isle_giant':u'FT_MANDARINE',       # Гигантов
                #u'isle_xxl':u'FT_MANDARINE',         # Огромной ёлки
                #u'isle_desert':u'FT_EYE'             # Необитаемый
                #
                
}
        
current_loc self._get_game_state().get_location_id()
        if 
not current_loc in plant_tree:return 1
        need 
plant_tree [current_loc]
        
need self._get_item_reader().get(need)
        
space_crd self.space(current_locneed)
        if 
space_crd == []: return 1
        build_cost 
self._get_item_reader().get(need.id).buyCoins
        next_id 
max([_i.maxGameObjectId for _i in self._get_game_state().get_state().locationInfos] +[_m.id for _m in self._get_game_location().get_game_objects()]) + 1
        num 
0
        buy 
= []        
        if 
space_crd:
            for 
k in space_crd:
                if 
len(k) == 5:
                    
int(k[:3])
                    
int(k[3:])
                
elif len(k) == 4:
                    if 
current_loc == u'main' and int(k[:2])<13:
                        
int(k[:3])
                        
int(k[3:])
                    else:                           
                        
int(k[:2])
                        
int(k[2:])
                
elif len(k) == 2:
                    
int(k[:1])
                    
int(k[1:])
                else:
                    if 
current_loc != u'main' and (k[0] == '8' or k[0] == '9'):
                        
int(k[:1])
                        
int(k[1:])
                    else:
                        
int(k[:2])
                        
int(k[2:])
                if 
self._get_game_state().get_state().gameMoney min_money and self._get_game_state().get_state().gameMoney>=build_cost:
                    
                    
num += 1                
                    buy_event 
= {"x":x,"y":y,"action":"buy","itemId":need.id,"type":"item","objId":next_id}                    
                    
buy.append(buy_event)
                    
self._get_game_state().get_state().gameMoney -= build_cost
                    jobFinishTime
=None
                    fruitingCount
=None
                    obj_type
=str(need.type)
                    if 
hasattr(need,'fruitingTime'):jobFinishTime=int(need.fruitingTime)*1000
                    
if hasattr(need,'fruitingCount'):fruitingCount=int(need.fruitingCount)
                    
newObject=dict2obj({u'rotate'0u'fruitingCount'fruitingCountu'fertilized'False,
                                        
u'item'u'@'+need.idu'jobFinishTime'jobFinishTimeu'jobStartTime'0,
                                        
u'y'str(y), u'x'str(x), u'type'obj_typeu'id'next_id})
                    
self._get_game_state().get_state().gameObjects.append(newObject)
                    
next_id += 1
        
if num 0
            
self._get_events_sender().send_game_events(buy)
            
logger.info(u' Посадил %d "%s"' %(num,need.name.upper()))

    
def space(selflocationneed,submap=[]):
        for 
obj in self._get_game_state().get_state().rectsObjects:
            if 
str(need.objAnim[0])== str(obj.objAnim):
                
need.int(obj.rects.rectW)
                
need.int(obj.rects.rectH)
        
crdbad_crd self.get_coords(locationsubmap)
        
obj_cache = {}
        
space_crd = []
        
#перебор объектов на острове
        
objects self._get_game_location().get_game_objects()
        for 
object in list(objects):
            if 
not hasattr(object'x') or not hasattr(object'item'):continue
            
reader_object=self._get_item_reader().get(object.item)
            
object.x
            y 
object.y
            
if object.rotate==0:ob_anim=reader_object.objAnim[0]
            else:
ob_anim=reader_object.objAnim[1]
            if 
not object.item in obj_cache:
                
object_item self._get_item_reader().get(object.item)
                
obj_cache[object.item] = object_item
            
else:object_item obj_cache[object.item]
            for 
rect in self._get_game_state().get_state().rectsObjects:
                if 
ob_anim== rect.objAnim:
                    
h=int(rect.rects.rectH)
                    if 
int(rect.rects.rectX) < 0:
                        
int(x) + int(rect.rects.rectX)
                        
int(rect.rects.rectW) + int(rect.rects.rectX)*-1
                    
else:int(rect.rects.rectW) + int(rect.rects.rectX)
                    if 
int(rect.rects.rectY) < 0:
                        
int(y) + int(rect.rects.rectY)
                        
int(rect.rects.rectH) + int(rect.rects.rectY)*-1
                    
else:int(rect.rects.rectH) + int(rect.rects.rectY)
                    for 
ix in range(w):
                        for 
iy in range(h):
                            
str(int(x) + ix)+''+str(int(y) + iy)
                            if 
not k in bad_crd:bad_crd.append(k)
        
crd['x2'] - crd['x1'] - need.2
        H 
crd['y2'] - crd['y1'] - need.2
        
for iw in range(W):
            
iw += crd['x1']
            for 
ih in range(H):
                
ih += crd['y1']
                if (
str(iw)+''+str(ih)) in bad_crd:continue
                
good 1
                add 
= []
                for 
ix in range(need.w):
                    for 
iy in range(need.h):
                        
str(iw+ix)+''+str(ih+iy)
                        if 
k in bad_crd#занято
                            
good 0
                            
break
                        else:
add.append(k)
                    if 
good == 0:break
                if 
good == 1:
                    
space_crd.append(str(iw)+''+str(ih))
                    
bad_crd.extend(add)
        return 
space_crd

    def get_coords
(selfostrovsubmap=[]):
        
submap = [
                
#u'снизу от дороги',
                
u'сверху от дороги',
                
#u'за забором',
                #u'на горе'
                
]
        
# Map world   Домашний
        
if(ostrov in ['main']): 
            
map = [ str(i)+''+str(j) for i in range(48,62) for j in range(12,48)]
            
add = [ str(i)+''+str(j) for i in range(54,60) for j in range(48,100)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(62,112) for j in range(30,48)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(14,62) for j in range(0,12)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(112,128) for j in range(30,112)]
            
map.extend(add)
            if 
submap != []:        
                if 
not u'снизу от дороги' in submap:
                    
add = [ str(i)+''+str(j) for i in range(14,54) for j in range(48,100)]
                    
map.extend(add)           
                if 
not u'сверху от дороги' in submap:
                    
add = [ str(i)+''+str(j) for i in range(60,112) for j in range(48,100)]
                    
map.extend(add)  
                if 
not u'за забором' in submap:
                    
add = [ str(i)+''+str(j) for i in range(14,48) for j in range(12,48)]
                    
map.extend(add
                if 
not u'на горе' in submap:
                    
add = [ str(i)+''+str(j) for i in range(62,128) for j in range(0,30)]
                    
map.extend(add)                        
            return {
'x1':14'x2':127'y1':0'y2':99}, map

        
# Map isle_01   Веры, Мечты
        
if(ostrov in ['isle_dream''isle_faith']):
            
map = [ str(i)+''+str(j) for i in range(14,16) for j in range(14,16)]
            
add = [ str(i)+''+str(j) for i in range(12,14) for j in range(14,64)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(12,18) for j in range(74,76)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(40,82) for j in range(74,76)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(82,84) for j in range(72,76)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(82,84) for j in range(14,22)]
            
map.extend(add)
            return {
'x1':12'x2':83'y1':14'y2':75}, map

        
# Map isle_02   Альфа, Омега, Пик Админа, Ужасный, Чудовища, Майя, звёздный, гигантов
        
if(ostrov in ['isle_alpha''isle_omega''isle_scarecrow''isle_elephant''isle_monster''isle_02''isle_star''isle_giant']):
            
map = [ str(i)+''+str(j) for i in range(10,12) for j in range(10,12)]
            
add = [ str(i)+''+str(j) for i in range(10,12) for j in range(42,44)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(42,44) for j in range(42,44)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(42,44) for j in range(10,12)]
            
map.extend(add)
            return {
'x1':10'x2':43'y1':10'y2':43}, map

        
# Map isle_03   Любви, X, Песочный, Необитаемый
        
if(ostrov in ['isle_03''isle_x''isle_sand''isle_desert']):
            
map = []
            return {
'x1':16'x2':65'y1':14'y2':71}, map

        
# Map isle_04   Надежды, Страшный
        
if(ostrov in ['isle_hope''isle_scary']):
            
map = [ str(i)+''+str(j) for i in range(12,14) for j in range(12,14)]
            
add = [ str(i)+''+str(j) for i in range(46,50) for j in range(12,14)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(48,50) for j in range(34,42)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(48,50) for j in range(72,74)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(12,20) for j in range(72,74)]
            
map.extend(add)
            return {
'x1':12'x2':49'y1':12'y2':73}, map

        
# Map isle_05   Город-призрак, Секретный
        
if(ostrov in ['isle_emerald''isle_01']):
            
map = [ str(i)+''+str(j) for i in range(16,20) for j in range(12,16)]
            
add = [ str(i)+''+str(j) for i in range(70,72) for j in range(30,38)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(70,72) for j in range(70,72)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(16,18) for j in range(64,72)]
            
map.extend(add)
            return {
'x1':16'x2':71'y1':12'y2':71}, map

        
# Map isle_snow1   Дремучий, Мобильный, Маленькой ёлочки, Огромной ёлки
        
if(ostrov in ['isle_wild''isle_mobile''isle_small''isle_xxl']):
            
map = [ str(i)+''+str(j) for i in range(8,12) for j in range(6,8)]
            
add = [ str(i)+''+str(j) for i in range(8,10) for j in range(8,10)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(42,46) for j in range(6,8)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(44,46) for j in range(8,10)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(44,46) for j in range(42,46)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(42,44) for j in range(44,46)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(8,10) for j in range(44,46)]
            
map.extend(add)
            return {
'x1':8'x2':45'y1':6'y2':45}, map

        
# Map isle_snow2   Полярной ночи, НЛО, Лысая гора, Большой ёлки, Лунный, Вишнёвый
        
if(ostrov in ['isle_polar''isle_ufo''isle_halloween''isle_large''isle_moon''isle_light']):
            
map = [ str(i)+''+str(j) for i in range(8,12) for j in range(6,10)]
            
add = [ str(i)+''+str(j) for i in range(8,10) for j in range(44,46)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(42,46) for j in range(44,46)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(44,46) for j in range(42,44)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(42,46) for j in range(6,8)]
            
map.extend(add)
            
add = [ str(i)+''+str(j) for i in range(44,46) for j in range(8,10)]
            
map.extend(add)
            return {
'x1':8'x2':45'y1':6'y2':45}, map
            
        
# Map un_09 Склад Хакера
        
if(ostrov in ['un_09']):
            
map = [ str(i)+''+str(j) for i in range(14,38) for j in range(14,16)]     
            
add = [ str(i)+''+str(j) for i in range(46,52) for j in range(14,16)]     
            
map.extend(add
            
add = [ str(i)+''+str(j) for i in range(12,14) for j in range(14,18)]     
            
map.extend(add
            
add = [ str(i)+''+str(j) for i in range(50,52) for j in range(16,28)]     
            
map.extend(add
            
add = [ str(i)+''+str(j) for i in range(50,52) for j in range(42,74)]     
            
map.extend(add
            
add = [ str(i)+''+str(j) for i in range(12,14) for j in range(64,74)]     
            
map.extend(add)             
            return {
'x1':12'x2':51'y1':14'y2':73}, map 
P.S. в общем получилось запустить PremiumGifts, там все работает.

Последний раз редактировалось Warrior94; 12.03.2018 в 18:27.
  Ответить с цитированием
Старый 12.03.2018, 19:50   #6057
 Разведчик
Аватар для alser2
 
alser2 никому не известный тип
Регистрация: 03.12.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от Warrior94Посмотреть сообщение
С этим кое как разобрался, теперь следующая проблема

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

А мой вопрос снова проигнорили(( Что никого из Украины здесь нет?
  Ответить с цитированием
Старый 12.03.2018, 21:25   #6059
 Разведчик
Аватар для ABBAtjaga
 
ABBAtjaga никому не известный тип
Регистрация: 28.05.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от Gill.VПосмотреть сообщение
А мой вопрос снова проигнорили(( Что никого из Украины здесь нет?

Я не специалист, попробуйте зайти в вк через браузер файрфокс, а потом скопируйте нужные куки в сеттингс.ини. Возможно это поможет в качестве временной меры
Есть вероятность, что вк просит ввести капчу, а как бот взаимодействует с ней, я не имею ни малейшего понятия.

session_cookies=h=1;l=;p=;s=1;remixlang=0;remixlhk=;remixsid=;remixstid=;

  Ответить с цитированием
Старый 14.03.2018, 17:32   #6060
 Разведчик
Аватар для Gill.V
 
Gill.V никому не известный тип
Регистрация: 30.12.2017
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Вставила куки с браузера, все равно не работает бот.
  Ответить с цитированием
Ответ


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

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

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

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

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

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

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