порися в етой теме! нашёл код для создания луксора и страшной в мельнице! куда его пихать то?
ПОмогите пожалуста)
# coding=utf-8
import logging
from math import ceil
from game_state.game_types import GameBuilding, GameSellItem, GameSendGift
from game_actors_and_handlers.base import BaseActor
from game_state.game_event import dict2obj, obj2dict
logger = logging.getLogger(__name__)
class GameBrains(BaseActor):
#функция создания чего-либо
def create_items (self, _obj_id,_item_id):
create_items_event = {"type": "item",
"action": "craft",
"objId": _obj_id,
"itemId":_item_id}
self._get_events_sender().send_game_events([create_items_event])
def perform_action(self):
_loc = self._get_game_state().get_game_loc().get_location _id()
if not _loc == u'isle_elephant': # на каком острове всё находится
return 1
brains_const = 0 # Указываем нужное постоянное количество без имеющихся у игрока бесплатных
want_helly = 100 # Сколько хотим свободных хеллий после всех операций
want_kley = 100 # Клея
want_trans = 100 # Трансформаторов
want_yekraska= 100# Краски жёлтой
min_coll = 100 # оставляем ручных и обувных коллекций
min_money = 1000000 # оставляем денег
max_need_helly = max_need_garliclily = 2 * brains_const + want_helly + want_kley*2 + want_trans + want_yekraska # Максимально необходимое кол-во хеллии и чесночных лилий
max_need_love = 10 * brains_const # Максимально необходимое кол-во любви
max_need_clevhell = 4 * max_need_garliclily # Максимально необходимое кол-во клеверхелла
max_need_clever = int(ceil(max_need_clevhell/20)*20) # Максимально необходимое кол-во клевера
max_need_squashhell = int(ceil(max_need_clevhell/10)*10) # Максимально необходимое кол-во тыквахелла
max_need_garlic = max_need_lily = int(ceil(max_need_garliclily/40)*40) # Максимально необходимое кол-во лилий и чеснока
max_need_trans = want_kley + want_trans
max_need_yekraska = want_kley + want_yekraska
max_need_kley = want_kley
obj_id_ostankino = obj_id_korabl = obj_id_elka = obj_id_pirmida = obj_id_bashnya = '' # Переменные для ID останкино и корабля
helly = love = clevhell = garliclily = clever = squashhell = garlic = lily = kley = trans = yekraska = steklo = 0
#получаем id останкино и летучего корабля
buildings = self._get_game_location().get_all_objects_by_type( GameBuilding.type)
for building in list(buildings):
building_item = self._get_item_reader().get(building.item)
if building_item.name == u'Останкино за монеты': # или if building_item.id == 'B_OSTANKINO'
obj_id_ostankino = building.id
if building_item.name == u'Летучий корабль': # или if building_item.id == 'D_SHIP'
obj_id_korabl = building.id
if building_item.id == 'B_NYTREE':
obj_id_elka = building.id
if building_item.id == 'B_PYRAMID':
obj_id_pirmida = building.id
if building_item.id == 'B_PISA':
obj_id_bashnya = building.id
if building_item.id == 'B_MILL_EMERALD2':
obj_id_iz_melnica = building.id
st_items = self._get_game_state().get_state().storageItems
#with open('storage2.txt', 'w') as f:
# f.write(str(obj2dict(st_items)).encode('utf-8'))
for _item in list(st_items):
if hasattr(_item, 'item'):
#it_name = self._get_item_reader().get(_item.item)
#print 'it ', _item.item, ' name ', it_name.name
# Определяем на складе количество:
if _item.item == ('@R_12'): helly = _item.count # Хеллия
if _item.item == ('@CR_31'): love = _item.count # Любовь
if _item.item == ('@R_02'): clevhell = _item.count # Клеверхелл
if _item.item == ('@R_09'): garliclily = _item.count # Чесночная лилия
if _item.item == ('@S_14'): squashhell = _item.count # Тыквахелл
if _item.item == ('@S_03'): clever = _item.count # Клевер
if _item.item == ('@S_15'): lily = _item.count # Лилия
if _item.item == ('@S_08'): garlic = _item.count # Чеснок
if _item.item == ('@CR_25'): steklo = _item.count # Стекло
if _item.item == ('@CR_17'): kley = _item.count # Супер-клей
if _item.item == ('@CR_23'): trans = _item.count # Трансформатор
if _item.item == ('@CR_10'): yekraska = _item.count # Жёлтая краска
cl_items = obj2dict(self._get_game_state().get_state().collec tionItems)#self._get_game_state().get_state().coll ectionItems
for _item in cl_items.keys():
if _item == 'C_5_1': hand_1 = cl_items[_item] # Ручная
if _item == 'C_5_2': hand_2 = cl_items[_item] # Ручная
if _item == 'C_5_3': hand_3 = cl_items[_item] # Ручная
if _item == 'C_5_4': hand_4 = cl_items[_item] # Ручная
if _item == 'C_5_5': hand_5 = cl_items[_item] # Ручная
if _item == 'C_6_1': shoe_1 = cl_items[_item] # Обувная
if _item == 'C_6_2': shoe_2 = cl_items[_item] # Обувная
if _item == 'C_6_3': shoe_3 = cl_items[_item] # Обувная
if _item == 'C_6_4': shoe_4 = cl_items[_item] # Обувная
if _item == 'C_6_5': shoe_5 = cl_items[_item] # Обувная
if helly < max_need_helly:
if(obj_id_korabl == ''):
logger.info(u'Не хватает хеллий, сварите еще %d шт.',max_need_helly-helly)
return
else:
if clevhell < max_need_clevhell:
if clever < max_need_clever:
logger.info(u'Не хватает клевера, посадите еще %d шт.',max_need_clever-clever)
return
elif squashhell < max_need_squashhell:
logger.info(u'Не хватает тыквахелла, посадите еще %d шт.',max_need_squashhell-squashhell)
return
for i in range(int(ceil((max_need_clevhell-clevhell)/10))):
self.create_items(obj_id_korabl, "1")
if i > 0:
logger.info(u'Создали %d клеверхелла', i)
if garliclily < max_need_garliclily:
if garlic < max_need_garlic:
logger.info(u'Не хватает чеснока, посадите еще %d шт.',max_need_garlic-garlic)
return
elif lily < max_need_lily:
logger.info(u'Не хватает лилий, посадите еще %d шт.',max_need_lily-lily)
return
else:
for i in range(int(ceil((max_need_garliclily-garliclily)/10))):
self.create_items(obj_id_korabl, "2")
if i > 0:
logger.info(u'Создали %d чесночных лилий', i)
for i in range(max_need_helly - helly):
self.create_items(obj_id_korabl, "3")
if i > 0:
logger.info(u'Создали %d хеллий', i)
if yekraska < max_need_yekraska:
if(obj_id_pirmida != ''):
if (self._get_game_state().get_state().gameMoney - ((max_need_yekraska - yekraska) * 1000)) < min_money:
print u'Не хватает денег'
return
else:
for i in range(max_need_yekraska - yekraska):
self.create_items(obj_id_pirmida, "1")
if i > 0:
logger.info(u'Создали %d жёлтой краски', i)
if hand_1 > min_coll and shoe_1 > min_coll:
if(obj_id_iz_melnica != ''):
if hand_1 > shoe_1:
count = shoe_1 - min_coll
else:
count = hand_1 - min_coll
for i in range(count):
self.create_items(obj_id_iz_melnica, "1")
logger.info(u'Создаём перчатку фреди %d', i + 1)
if hand_2 > min_coll and shoe_2 > min_coll:
if(obj_id_iz_melnica != ''):
if hand_2 > shoe_2:
count = shoe_2 - min_coll
else:
count = hand_2 - min_coll
for i in range(count):
self.create_items(obj_id_iz_melnica, "2")
logger.info(u'Создаём шляпу фреди %d', i + 1)
if hand_3 > min_coll and shoe_3 > min_coll:
if(obj_id_iz_melnica != ''):
if hand_3 > shoe_3:
count = shoe_3 - min_coll
else:
count = hand_3 - min_coll
for i in range(count):
self.create_items(obj_id_iz_melnica, "3")
logger.info(u'Создаём кофту фреди %d', i + 1)
if hand_4 > min_coll and shoe_4 > min_coll:
if(obj_id_iz_melnica != ''):
if hand_4 > shoe_4:
count = shoe_4 - min_coll
else:
count = hand_4 - min_coll
for i in range(count):
self.create_items(obj_id_iz_melnica, "4")
logger.info(u'Создаём зажигалку фреди %d', i + 1)
if hand_5 > min_coll and shoe_5 > min_coll:
if(obj_id_iz_melnica != ''):
if hand_5 > shoe_5:
count = shoe_5 - min_coll
else:
count = hand_5 - min_coll
for i in range(count):
self.create_items(obj_id_iz_melnica, "5")
logger.info(u'Создаём будильник фреди %d', i + 1)
if trans < max_need_trans:
if(obj_id_bashnya != ''):
if (max_need_trans - trans) > steklo:
print u'Не хватает стекла'
return
else:
for i in range(max_need_trans - trans):
self.create_items(obj_id_bashnya, "1")
if i > 0:
logger.info(u'Создали %d трансформаторов', i)
if kley < max_need_kley:
if(obj_id_elka != ''):
if 0:
return
else:
for i in range(max_need_kley - kley):
self.create_items(obj_id_elka, "1")
if i > 0:
logger.info(u'Создали %d клея', i)
if love < max_need_love :
logger.info(u'Не хватает любви для создания мозгов, накопайте еще %d шт.',max_need_love-love)
return
brains_buy = self._get_game_state().get_state().buyedBrains # Кол-во активаций мозгов (не самих мозгов)
brains_curr = 0 # Счетчик кол-ва текущих мозгов
x=0 # Счетчик кол-ва мозгов с истечением времени < 5 мин.
if len(brains_buy)<>0:
for buyed_brain in brains_buy:
hf = buyed_brain.count
brains_curr += hf
m = ((int(buyed_brain.endTime)/1000)/60)-((((int(buyed_brain.endTime)/1000)/60)/60)*60)
h = ((int(buyed_brain.endTime)/1000)/60)/60
if h==0 and m<=6:
x+=hf
# Разница между необходимыми и текущими мозгами.
brains_lacks = 0
if brains_curr < brains_const:
brains_lacks = brains_const - brains_curr
brains_lx = x + brains_lacks
# Определяем предположительное необходимое ко-во мозгов.
brains_need = brains_curr - brains_lx
# Если меньше нужного постоянного, то создаем недостающие.
if brains_need < brains_const:
_i=0
for _i in range(brains_lx):
self.create_items(obj_id_ostankino, "1")
brains_buy.append(dict2obj({u'count': 1L, u'endTime': u'86400000'})) #Добавляем фейк в список купленных мозгов для увеличения счетчика
logger.info (u'Создано мозгов - %d шт.', brains_lx)