 |
Zombot (Клиент для игры Зомби ферма) [Обсуждение] - Свободное обсуждение - Ваши идеи, вопросы и ответы на тему браузерных игр и социальных сетей |
23.01.2015, 19:25
|
#3961
|
|
|
|
Разведчик
|
 Регистрация: 22.03.2012
 Сообщений: 3
 Популярность: 12
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Последний раз редактировалось ruslanische; 23.01.2015 в 19:31.
Причина: Добавлено сообщение
|
|
|
23.01.2015, 19:39
|
#3962
|
|
|
|
Разведчик
|
 Регистрация: 30.04.2013
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
В основном интересует посадка, сбор растений, хождение по островам, повара, ну и пиратские острова, если вообще реализовано и все это для ВК, буду надеяться кто нибудь поделится, давно не маялся ничем таким =)
|
|
|
23.01.2015, 19:41
|
#3963
|
|
|
|
Разведчик
|
 Регистрация: 22.03.2012
 Сообщений: 3
 Популярность: 12
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
|
|
23.01.2015, 19:45
|
#3964
|
|
|
|
Разведчик
|
 Регистрация: 30.04.2013
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
|
|
23.01.2015, 22:38
|
#3965
|
|
|
|
Разведчик
|
 Регистрация: 22.03.2014
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 6 раз(а) в 5 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Друзья!) всем привет) подскажите как сделать задержку и что поправить, коллекции создает, но пытается повторно сделать и выпадает с ошибкой...
PHP код:
# coding=utf-8
import logging
from math import ceil
from game_state.game_types import GameBuilding
from game_actors_and_handlers.base import BaseActor
from game_state.game_event import dict2obj, obj2dict
logger = logging.getLogger(__name__)
class ExhangeCollEmerald(BaseActor):
#функция создания чего-либо
def create_items (self, _obj_id,_item_id):
create_items_event = {"type": "item",
"action": "craft",
"objId": _obj_id,
"itemId":_item_id}
self.events_append(create_items_event)
def events_append(self, event):
self._events.append(event)
if len(self._events) > 100:
self.events_free()
def events_free(self):
if self._events != []: self._get_events_sender().send_game_events(self._events)
self._events = []
def perform_action(self):
min_coll = 500 # Оставляем Японской коллекции
_loc = self._get_game_state().get_game_loc().get_location_id()
if not (_loc == u'isle_02' or _loc == u'isle_elephant'):
return 1
self._events = []
if _loc == u'isle_02':
obj_id_observatory = ''
#получаем id
bozon=self._get_game_state().count_in_storage('@CR_666')
buildings = self._get_game_location().get_all_objects_by_type(GameBuilding.type)
jap_1=jap_2=jap_3=jap_4=jap_5=0
for building in list(buildings):
if building.item == '@B_OBSERVATORY':
obj_id_observatory = building.id
if obj_id_observatory != '' :
cl_items = obj2dict(self._get_game_state().get_state().collectionItems)
if 'C_36_1' in cl_items.keys():jap_1 = cl_items['C_36_1'] # Японская
if 'C_36_2' in cl_items.keys():jap_2 = cl_items['C_36_2'] # Японская
if 'C_36_3' in cl_items.keys():jap_3 = cl_items['C_36_3'] # Японская
if 'C_36_4' in cl_items.keys():jap_4 = cl_items['C_36_4'] # Японская
if 'C_36_5' in cl_items.keys():jap_5 = cl_items['C_36_5'] # Японская
##### Изумрудка #####
if obj_id_observatory != '':
minreal=min(jap_1,jap_2,jap_3,jap_4,jap_5)
countcol=minreal-min_coll
needcountbozon=int(round(countcol/10))
if bozon>needcountbozon:
if needcountbozon>0:
for i in range(needcountbozon):
self._get_game_state().remove_from_storage('@CR_666',5)
self.create_items(obj_id_observatory, "11")
self.create_items(obj_id_observatory, "12")
self.create_items(obj_id_observatory, "13")
self.create_items(obj_id_observatory, "14")
self.create_items(obj_id_observatory, "15")
firstcount=(i + 1)*10
endcount=(i + 1)*5
logger.info(u"Создали %d шт. 'Четвертак"%(endcount))
logger.info(u"Создали %d шт. 'Золотой орех"%(endcount))
logger.info(u"Создали %d шт. 'Изумруд"%(endcount))
logger.info(u"Создали %d шт. 'Кленовый листок"%(endcount))
logger.info(u"Создали %d шт. 'Соломинка"%(endcount))
cl_items['C_36_1']-=firstcount
cl_items['C_36_2']-=firstcount
cl_items['C_36_3']-=firstcount
cl_items['C_36_4']-=firstcount
cl_items['C_36_5']-=firstcount
bozon-=needcountbozon
if 'C_42_1' in cl_items.keys():cl_items['C_42_1']+= endcount
else:cl_items['C_42_1']= endcount
if 'C_42_2' in cl_items.keys(): cl_items['C_42_2']+= endcount
else:cl_items['C_42_2']= endcount
if 'C_42_3' in cl_items.keys():cl_items['C_42_3']+= endcount
else:cl_items['C_42_3']= endcount
if 'C_42_4' in cl_items.keys():
cl_items['C_42_4']+= endcount
else:cl_items['C_42_4']= endcount
if 'C_42_5' in cl_items.keys():
cl_items['C_42_5']+= endcount
else:cl_items['C_42_5']= endcount
#else:print u'Не хватает БОЗОНА'
self.events_free()
self._get_game_state().get_state().collectionItems=dict2obj(cl_items)
return 1
|
|
|
23.01.2015, 22:52
|
#3966
|
|
|
|
Разведчик
|
 Регистрация: 17.02.2014
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Писали много про крафт, предложу и я свой вариант
Код:
# coding=utf-8
import logging
import math
from game_state.game_types import GameBuilding
from game_actors_and_handlers.base import BaseActor
from game_state.game_event import dict2obj, obj2dict
logger = logging.getLogger(__name__)
class GameCraft(BaseActor):
def perform_action(self):
crafts = {
#u'Сфинкс':{1:500},
#u'АЭС':{1:[5000,100],2:10000},
#u'Бизнес-Центр':{3:1500000000},
u'Останкино за монеты':{1:70},
'B_MILL_EMERALD2':{
1:[900,900],
2:[900,900],
3:[900,900],
4:[900,900],
5:[900,900],
}
}
if not crafts: return
self.coll = obj2dict(self._get_game_state().get_state().collectionItems)
for building in self._get_game_location().get_all_objects_by_type('building'):
reader_buil = self._get_item_reader().get(building.item)
if not reader_buil.crafts: continue
if reader_buil.name in crafts: craft_buil = crafts[reader_buil.name]
elif reader_buil.id in crafts: craft_buil = crafts[reader_buil.id]
else: continue
for itemId in craft_buil:
if type(craft_buil[itemId]) == list:
min_material0_count = craft_buil[itemId][0]
min_material1_count = craft_buil[itemId][1]
max_result_count = None
else:
min_material0_count = 0
min_material1_count = 0
max_result_count = craft_buil[itemId]
for craft in reader_buil.crafts:
if craft.level > building.level: continue
if reader_buil.crafts[itemId-1] != craft: continue
craft_0 = (self.count_item(craft.materials[0].item) - min_material0_count)/craft.materials[0].count
craft_1 = (self.count_item(craft.materials[1].item) - min_material1_count)/craft.materials[1].count
if not max_result_count:
max_result_count = (min(craft_0,craft_1))*craft.resultCount
result_count = int(math.ceil(1.0*max_result_count/craft.resultCount))
else: result_count = int(math.ceil(1.0*(max_result_count - self.count_item(craft.result))/craft.resultCount))
craft_count = min([craft_0,craft_1,result_count])
events = []
for i in range(craft_count):
event = {"type":"item","action":"craft",
"objId":building.id,"itemId":str(itemId)}
events.append(event)
self.rem(craft.materials[0].item, craft.materials[0].count)
self.rem(craft.materials[1].item, craft.materials[1].count)
self.add(craft.result, craft.resultCount)
if len(events) == 500:
if craft_count > 5000:
print u'\rСоздаю "%s": %d/%d' %(
self._get_item_reader().get(craft.result).name,
(i+1)*craft.resultCount,
craft_count*craft.resultCount),
self._get_events_sender().send_game_events(events)
events = []
if events:
if craft_count > 5000:
print u'\rСоздаю "%s": %d/%d' %(
self._get_item_reader().get(craft.result).name,
craft_count*craft.resultCount,
craft_count*craft.resultCount),
self._get_events_sender().send_game_events(events)
if craft_count > 0:
if craft_count > 5000: print ''
logger.info(u'Создал %d "%s" в постройке "%s"' %(craft_count,
self._get_item_reader().get(craft.result).name,
reader_buil.name))
self._get_game_state().get_state().collectionItems=dict2obj(self.coll)
def rem(self,item, count):
typ = self._get_item_reader().get(item).type
if typ == 'collectionItem':
self.coll[item[1:]] -= count
elif item == "@COINS":
self._get_game_state().get_state().gameMoney -= count
else: self._get_game_state().remove_from_storage(item, count)
def add(self,item, count):
typ = self._get_item_reader().get(item).type
if typ == 'collectionItem':
if item[1:] in self.coll: self.coll[item[1:]] += count
else: self.coll[item[1:]] = count
elif typ == 'brains':
self._get_game_state().get_state().buyedBrains.append(
dict2obj({u'count': 1L, u'endTime': u'86400000'}))
elif item == "@COINS":
self._get_game_state().get_state().gameMoney += count
else: self._get_game_state().add_from_storage(item, count)
def count_item(self,item):
typ = self._get_item_reader().get(item).type
if typ == 'collectionItem':
if item[1:] in self.coll: return self.coll[item[1:]]
return 0
elif typ == 'brains':
count = 0
for brain in self._get_game_state().get_state().buyedBrains:
if int(brain.endTime) < 180000: continue
count += int(brain.count)
return count
elif item == "@COINS":
return self._get_game_state().get_state().gameMoney
return self._get_game_state().count_in_storage(item)
для "блондинок", таких же как и я. Настраивается словарём. Можно прописывать итем, можно название. Типа того...
Код:
crafts = {'item постройки':{№крафта:сколько делать}}
или
Код:
crafts = {u'имя постройки':{№крафта:[сколько оставлять 1, сколько оставлять 2]}}
Оставлять - имеется ввиду материал из которого делается. Все значения в словаре должны быть типа int
P.S. Не подходит для построек с временными задержками, типа планетарий.
Последний раз редактировалось GirlKris; 23.01.2015 в 22:54.
|
|
|
24.01.2015, 23:27
|
#3967
|
|
|
|
Разведчик
|
 Регистрация: 29.07.2014
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 8 раз(а) в 5 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
подскажите как сделать задержку
|
|
 |
|
 |
|
Учитывая {"type":"building","item":"@B_BABEL","id":,"x":,"y ":,"rotate":0,"level":9,"nextPlayTimes":{"BABEL_1" :"-116854010"},"playsCounts":{}}
Пишется что-то типа
Код:
if any(hasattr(building.nextPlayTimes,str(i)) and not self._get_timer().has_elapsed( long(getattr( building.nextPlayTimes,str(i) )) ) for i in xrange(11,16)):continue
и ставится перед строчкой
Код:
obj_id_observatory = building.id
с тем же отступом. Это позволит крафтить не в одной обсерватории, пропуская те, в которых нельзя.
Дальше, убивается for i in range(needcountbozon): , а 6 строчек под ним сдвигаются на 1 отступ влево, соответственно правится весь вывод сколько скрафчено.
P.S. Я не тестил.
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
как у белых людей
|
|
 |
|
 |
|
Я поясню моё видение того, что же произошло. Я предложил метод отладки времени. Он был попользован, в итоге
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
Получилась такая же разница между jobStartTime и временем перед отправкой на работы как и в родном клиенте.
|
|
 |
|
 |
|
То есть 30мс. Имхо, это превосходный результат. Но он не выложен. По причине
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
Буду тестировать.
|
|
 |
|
 |
|
Понятно, что настолько точный тайминг слететь не может в принципе. Особенно, когда те же 30мс уже вычтены.
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
2. время, затраченное на START надо было не прибавлять к времени бота, а отнимать
|
|
 |
|
 |
|
То он будет забыт скорее, чем выложен, без этой провокации.
Но, есть "зацепки", как сделать разницу в реальном_времени посылки TIME и START более предсказуемой.
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
1. мешал вызов vkutils.getUserInfo() между TIME и START, он как раз занимал 300-400 мс
|
|
 |
|
 |
|
То есть вызов, как и в "родном" клиенте, надо вынести по timeline перед TIME. Слабо верится, конечно, что скачивание salt.swf и swf2functions выполняются настолько быстро, что совершенно не мешают между TIME и START. Но, по крайней мере, их время выполнения более-менее предсказуемо.
Понятно, что раз код только у одного участника, который дал путь проверки корректности времени, по которому вот мне лично влом идти, то back-портирован в исходный бот код не будет, потому что некому, а автор делать для исходного бота что-либо, по моему мнению, не заинтересован.
Последний раз редактировалось megabyte0; 25.01.2015 в 05:00.
|
|
|
25.01.2015, 04:22
|
#3968
|
|
|
|
Разведчик
|
 Регистрация: 15.01.2015
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
|
|
25.01.2015, 08:47
|
#3969
|
|
|
|
Разведчик
|
 Регистрация: 29.07.2014
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
народ, подскажите, в чем может быть ошибка
 |
Цитата: |
 |
|
|
|
|
|
|
|
Крутим Маяк(91) крутим первый раз
0 ingame error
{u'rotate': 0L, u'level': 4L, u'nextPlayTimes': {u'B_LIGHTHOUSE_ROULETTE_1': u'-
293133132'}, u'playsCounts': {}, u'item': u'@B_LIGHTHOUSE', u'y': 32L, u'x': 50L
, u'type': u'building', u'id': 91L}
-------------------------------------------------------------------------------
{'action': 'play', 'type': 'game', 'objId': 91L, 'extraId': u'B_LIGHTHOUSE_ROULE
TTE_1'}
__________________________________________________ ______________________________
Крутим Склеп(87) крутим первый раз
1 sig is not valid
{u'rotate': 0L, u'level': 4L, u'nextPlayTimes': {u'B_SKLEP_ROULETTE_1': u'-29313
3075'}, u'playsCounts': {}, u'item': u'@B_SKLEP', u'y': 36L, u'x': 49L, u'type':
u'building', u'id': 87L}
-------------------------------------------------------------------------------
{'action': 'play', 'type': 'game', 'objId': 87L, 'extraId': u'B_SKLEP_ROULETTE_1
'} |
|
 |
|
 |
|
|
|
|
25.01.2015, 13:02
|
#3970
|
|
|
|
Разведчик
|
 Регистрация: 17.02.2014
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
может знаешь что надо изменить в коде, чтобы для жемчужины стал вариант рабочим?
|
|
 |
|
 |
|
Нужно всё изменить))) Крафт и вскрытие совершенно разные вещи, тем более нельзя вскрывать по индексу, как это сделано в крафте. Вариант, который выкладывал vintets, чем не подходит? Медленно?
Попробуйте так.
Код:
# coding=utf-8
import logging
from game_actors_and_handlers.base import BaseActor
logger = logging.getLogger(__name__)
class EggOpen(BaseActor):
def perform_action(self):
#Открывать за один раз
count_event = 500
# Что вскрываем:сколько оставляем.
eggs = {
#'EGG_06_ADMIN':100, #Зомби-сюрприз
#'EGG_02':100, #Простое
#'EGG_21':100, #Арбузное
#'EGG_01':100, #Бэйби-сюрприз
#'EGG_03':100, #Непростое
#'EGG_04':100, #Русское
#'EGG_05':100, #Пингвин-яйцо
#'EGG_07':100, #Ромашковое
#'EGG_08':100, #Сердешное
#'EGG_09':100, #Глазное
#'EGG_10':100, #Медовое
#'EGG_11':100, #Цитрусовое
#'EGG_12':100, #Цветное
#'EGG_13':100, #Детское
#'EGG_15':100, #Звёздное
#'EGG_16':100, #Расписное
#'EGG_17':100, #Васильковое
#'EGG_18':100, #Строгое
#'EGG_19':100, #Ананасное
#'EGG_20':100, #Клубничное
#'EGG_22':100, #Вейдер-сюрприз
#'EGG_23':100, #Бендер-сюрприз
#'EGG_24':100, #Картман-сюрприз
#'EGG_25':100, #Дизайнерское
#'EGG_26':100, #Термо-яйцо
#'EGG_27':100, #Губка-сюрприз
#'EGG_28':100, #Сюрприз бригады
#'EGG_29':100, #Грозное
#'EGG_30':100, #Умное
#'EGG_31':100, #Рогатое
#'EGG_32':100, #Мохнатое
#'EGG_33':100, #Полосатое
#'EGG_34':100, #Сюрприз повара
#'WIZARD_BOX_1':100, #Коллекционер
#'WIZARD_BOX_2':100, #Чёртов сундук
#'WIZARD_BOX_3':100, #Подарок строителю
#'WIZARD_BOX_4':100, #Хеллоуинский набор
#'WIZARD_BOX_5':100, #Опыт Волшебника
#'WIZARD_BOX_6':100, #Любовь Волшебника
#'WIZARD_BOX_7':100, #Коллекционер 2
#'SANTA_BOX_1':100, #Опыт
#'SANTA_BOX_2':100, #Урожайная корзина
#'SANTA_BOX_3':100, #Свет и Тепло
#'SANTA_BOX_4':100, #Бочка повара
#'SANTA_BOX_7':100, #Любовь Санты
#'SOCK_NY_BIG_BOX':100, #Носок изобилия
#'SOCK_NY_MIDDLE_BOX':100, #Полярный носок
#'SOCK_NY_SMALL_BOX':100, #Носок зомби
#'BLACK_BOX':100, #Чёрный ящик
#'FREE_NY_BOX':100, #Сюрприз
#'FREE_23FEB_BOX':100, #Презент
#'BULB_BOX_1':100, #Сюрприз
#'MONSTER_BOX_0':100, #Сундук Чудовища
#'MONSTER_BOX_1':100, #Сундук Чудовища
#'MONSTER_BOX_2':100, #Сундук Чудовища
#'MONSTER_BOX_3':100, #Сундук Чудовища
#'MONSTER_BOX_4':100, #Сундук Чудовища
#'REAL_CHEST_1':100, #Древний сундук
#'REAL_CHEST_2':100, #Сказочный сундук
#'REAL_CHEST_3':100, #Крутой сундук
#'REAL_CHEST_4':100, #Фантастический сундук
#'REAL_CHEST_5':100, #Желанный сундук
#'TABLET_BOX':100, #Планшеты
#'SMARTPHONE_BOX':100, #Смартфоны
#'ACHIV_BOX1':100, #Подарок Любви
#'ACHIV_BOX2':100, #Гламурный подарок
#'ACHIV_BOX3':100, #Подарок Зомби
#'HELMET':100, #Каска
#'HELMET2014':100, #Каска
#'FRIENDSHIP_DAY_GIFT_2014':100, #Дружеский подарок
#'JUNE_BOX':100, #Сюрприз
#'PARCEL_BOX_1':100, #Посылочка
#'PARCEL_BOX_2':100, #Минеральная бандероль
#'PARCEL_BOX_3':100, #Коллекционная посылка
#'PARCEL_BOX_4':100, #Бандероль
#'PARCEL_BOX_5':100, #Фруктовая посылка
#'PARCEL_BOX_6':100, #Бандероль с юга
#'PARCEL_BOX_7':100, #Посылки от Админа
#'LIGHT_BOX':100, #Упаковка света
#'LIGHT_BOX1':100, #Упаковка света 3 шт.
#'MAY_GIFT_BOX1':100, #Мистический
#'MAY_GIFT_BOX2':100, #Коллекционный
#'MAY_GIFT_BOX3':100, #Поисковый
#'MAY_GIFT_BOX4':100, #Урожайный
#'MAY_GIFT_BOX5':100, #Фруктовый
#'MAY_GIFT_BOX6':100, #Пиратский
#'VALENT_BOX':100, #Валентинка
#'CHOCOLATE_HEART':100, #Шоколадное сердце
#'CAT_BOX':100, #Кот в мешке
'WEALTH_CASKET':100, #Шкатулка
'WEALTH_BOTTLE':100, #Бутылка
'WEALTH_ROLL':100, #Свиток
'WEALTH_SKULL':100, #Череп
'WEALTH_VASE':100, #Ваза
'WEALTH_BOWL':100, #Чаша
'WEALTH_FLAG':100, #Флаг
'WEALTH_SEQ':100, #Связка брёвен секвойи
'WEALTH_WOODPALM':100, #Связка брёвен пальмы
'WEALTH_WHITEM':100, #Груда белого мрамора
'WEALTH_MARBLE':100, #Груда зелёного мрамора
'WEALTH_BLACKM':100, #Груда чёрного мрамора
'WEALTH_DIAMOND':100, #Северный бриллиант
'WEALTH_AMETIST':100, #Северный аметист
'WEALTH_AQUAMARINE':100, #Северный аквамарин
'WEALTH_EMERALD':100, #Северный изумруд
'WEALTH_CONE':100, #Шишка
'WEALTH_MITTENS':100, #Варежки
'WEALTH_PITCHER':100, #Кувшин
'WEALTH_LARGEBARREL':100, #Большая бочка
'WEALTH_POISON':100, #Зелье
'WEALTH_SWORD':100, #Сабля пирата
'WEALTH_SHELL_3':100, #Ракушка розовая
'WEALTH_SHELL_2':100, #Ракушка оранжевая
'WEALTH_SHELL_1':100, #Ракушка фиолетовая
'WEALTH_ECHINUS':100, #Морской ёжик
'WEALTH_HIPPOCAMPUS':100, #Морской конёк
#'SOUVENIR_BOX1':100, #Скромный презент
#'SOUVENIR_BOX2':100, #Смелый презент
#'SOUVENIR_BOX3':100, #Богатырский презент
#'SOUVENIR_BOX4':100, #Праздничный презент
#'SOUVENIR_BOX5':100, #Праздничный презент
#'SOUVENIR_BOX6':100, #Праздничный презент
#'BOUQUET_MIMOSA':100, #Букет мимоз
#'BOUQUET_TULIPS':100, #Букет тюльпанов
#'BOUQUET_ROSE':100, #Букет роз
#'CANDY_BOX1':100, #Карамелька
#'CANDY_BOX2':100, #Шоколадная
#'CANDY_BOX3':100, #Грильяж
#'SNOW_APPLE_PACK':100, #Яблочный сюрприз
#'SNOW_CHERRY_PACK':100, #Вишнёвый сюрприз
#'SNOW_MANDARIN_PACK':100, #Мандариновый сюрприз
#'SNOW_KNOCK_PACK':100, #Зимний сюрприз
#'GNOME_SOS_CHEST':100, #Сундук с берега
#'TURKEY_BOX':100, #Пернатый подарок
}
if not eggs: return
buildings = ['@B_PEARL_TOWER_CASH','@B_PEARL_TOWER']
for building in self._get_game_location().get_all_objects_by_type('pickupStorageBuilding'):
if not building.item in buildings: continue
for egg in eggs:
count = self._get_game_state().count_in_storage('@'+egg) - eggs[egg]
if count < 1: continue
for i in range(count/count_event):
events = [{"x":0,"y":0,"type":"item","action":"useStoragePickups",
"objId":building.id,"itemId":egg} for a in range(count_event)]
self._get_events_sender().send_game_events(events)
self._get_game_state().remove_from_storage('@'+egg, count_event)
logger.info(u'Открыл %d "%s"'%(count_event,self._get_item_reader().get(egg).name))
if count%count_event:
events = [{"x":0,"y":0,"type":"item","action":"useStoragePickups",
"objId":building.id,"itemId":egg} for a in range(count%count_event)]
self._get_events_sender().send_game_events(events)
self._get_game_state().remove_from_storage('@'+egg, count%count_event)
logger.info(u'Открыл %d "%s"'%(count%count_event,self._get_item_reader().get(egg).name))
Проверить негде, постройки нет. event взяла отсюда
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
{"x":0,"y":0,"type":"item","action":"useStoragePic kups","objId":id_башенки,"id":28,"itemId":"EGG_04" }
|
|
 |
|
 |
|
P.S. Дали аккаунт потестировать. Открывает также долго, как в браузере, после вскрытия почти 5000 пернатых, бот завис, подождала минут пять и отключила.
Последний раз редактировалось GirlKris; 25.01.2015 в 13:39.
|
|
|
25.01.2015, 15:00
|
#3971
|
|
|
|
Разведчик
|
 Регистрация: 25.02.2013
 Сообщений: 1
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
тоже нет постройки, но со склада бьет достаточно быстро, попробовал переделать под жемчужину проверить не на чем , и еще кто то может почарлить жемчужину ,там нет чтоли в эвенте атрибута "count" когда больше одного бьешь
получилось как то так
PHP код:
# coding=utf-8 import logging from game_actors_and_handlers.base import BaseActor
logger = logging.getLogger(__name__)
class EggOpen(BaseActor):
def perform_action(self):
#Открывать за один раз count_event = 500 # Что вскрываем:сколько оставляем. eggs = { #'EGG_06_ADMIN':100, #Зомби-сюрприз #'EGG_02':100, #Простое #'EGG_21':100, #Арбузное #'EGG_01':100, #Бэйби-сюрприз #'EGG_03':100, #Непростое #'EGG_04':100, #Русское #'EGG_05':100, #Пингвин-яйцо #'EGG_07':100, #Ромашковое #'EGG_08':100, #Сердешное #'EGG_09':100, #Глазное #'EGG_10':100, #Медовое #'EGG_11':100, #Цитрусовое #'EGG_12':100, #Цветное #'EGG_13':100, #Детское #'EGG_15':100, #Звёздное #'EGG_16':100, #Расписное #'EGG_17':100, #Васильковое #'EGG_18':100, #Строгое #'EGG_19':100, #Ананасное #'EGG_20':100, #Клубничное #'EGG_22':100, #Вейдер-сюрприз #'EGG_23':100, #Бендер-сюрприз #'EGG_24':100, #Картман-сюрприз #'EGG_25':100, #Дизайнерское #'EGG_26':100, #Термо-яйцо #'EGG_27':100, #Губка-сюрприз #'EGG_28':100, #Сюрприз бригады #'EGG_29':100, #Грозное #'EGG_30':100, #Умное #'EGG_31':100, #Рогатое #'EGG_32':100, #Мохнатое #'EGG_33':100, #Полосатое #'EGG_34':100, #Сюрприз повара #'WIZARD_BOX_1':100, #Коллекционер #'WIZARD_BOX_2':100, #Чёртов сундук #'WIZARD_BOX_3':100, #Подарок строителю #'WIZARD_BOX_4':100, #Хеллоуинский набор #'WIZARD_BOX_5':100, #Опыт Волшебника #'WIZARD_BOX_6':100, #Любовь Волшебника #'WIZARD_BOX_7':100, #Коллекционер 2 #'SANTA_BOX_1':100, #Опыт #'SANTA_BOX_2':100, #Урожайная корзина #'SANTA_BOX_3':100, #Свет и Тепло #'SANTA_BOX_4':100, #Бочка повара #'SANTA_BOX_7':100, #Любовь Санты #'SOCK_NY_BIG_BOX':100, #Носок изобилия #'SOCK_NY_MIDDLE_BOX':100, #Полярный носок #'SOCK_NY_SMALL_BOX':100, #Носок зомби #'BLACK_BOX':100, #Чёрный ящик #'FREE_NY_BOX':100, #Сюрприз #'FREE_23FEB_BOX':100, #Презент #'BULB_BOX_1':100, #Сюрприз #'MONSTER_BOX_0':100, #Сундук Чудовища #'MONSTER_BOX_1':100, #Сундук Чудовища #'MONSTER_BOX_2':100, #Сундук Чудовища #'MONSTER_BOX_3':100, #Сундук Чудовища #'MONSTER_BOX_4':100, #Сундук Чудовища #'REAL_CHEST_1':100, #Древний сундук #'REAL_CHEST_2':100, #Сказочный сундук #'REAL_CHEST_3':100, #Крутой сундук #'REAL_CHEST_4':100, #Фантастический сундук #'REAL_CHEST_5':100, #Желанный сундук #'TABLET_BOX':100, #Планшеты #'SMARTPHONE_BOX':100, #Смартфоны #'ACHIV_BOX1':100, #Подарок Любви #'ACHIV_BOX2':100, #Гламурный подарок #'ACHIV_BOX3':100, #Подарок Зомби #'HELMET':100, #Каска #'HELMET2014':100, #Каска #'FRIENDSHIP_DAY_GIFT_2014':100, #Дружеский подарок #'JUNE_BOX':100, #Сюрприз #'PARCEL_BOX_1':100, #Посылочка #'PARCEL_BOX_2':100, #Минеральная бандероль #'PARCEL_BOX_3':100, #Коллекционная посылка #'PARCEL_BOX_4':100, #Бандероль #'PARCEL_BOX_5':100, #Фруктовая посылка #'PARCEL_BOX_6':100, #Бандероль с юга #'PARCEL_BOX_7':100, #Посылки от Админа #'LIGHT_BOX':100, #Упаковка света #'LIGHT_BOX1':100, #Упаковка света 3 шт. #'MAY_GIFT_BOX1':100, #Мистический #'MAY_GIFT_BOX2':100, #Коллекционный #'MAY_GIFT_BOX3':100, #Поисковый #'MAY_GIFT_BOX4':100, #Урожайный #'MAY_GIFT_BOX5':100, #Фруктовый #'MAY_GIFT_BOX6':100, #Пиратский #'VALENT_BOX':100, #Валентинка #'CHOCOLATE_HEART':100, #Шоколадное сердце #'CAT_BOX':100, #Кот в мешке 'WEALTH_CASKET':100, #Шкатулка 'WEALTH_BOTTLE':100, #Бутылка 'WEALTH_ROLL':100, #Свиток 'WEALTH_SKULL':100, #Череп 'WEALTH_VASE':100, #Ваза 'WEALTH_BOWL':100, #Чаша 'WEALTH_FLAG':100, #Флаг 'WEALTH_SEQ':100, #Связка брёвен секвойи 'WEALTH_WOODPALM':100, #Связка брёвен пальмы 'WEALTH_WHITEM':100, #Груда белого мрамора 'WEALTH_MARBLE':100, #Груда зелёного мрамора 'WEALTH_BLACKM':100, #Груда чёрного мрамора 'WEALTH_DIAMOND':100, #Северный бриллиант 'WEALTH_AMETIST':100, #Северный аметист 'WEALTH_AQUAMARINE':100, #Северный аквамарин 'WEALTH_EMERALD':100, #Северный изумруд 'WEALTH_CONE':100, #Шишка 'WEALTH_MITTENS':100, #Варежки 'WEALTH_PITCHER':100, #Кувшин 'WEALTH_LARGEBARREL':100, #Большая бочка 'WEALTH_POISON':100, #Зелье 'WEALTH_SWORD':100, #Сабля пирата 'WEALTH_SHELL_3':100, #Ракушка розовая 'WEALTH_SHELL_2':100, #Ракушка оранжевая 'WEALTH_SHELL_1':100, #Ракушка фиолетовая 'WEALTH_ECHINUS':100, #Морской ёжик 'WEALTH_HIPPOCAMPUS':100, #Морской конёк #'SOUVENIR_BOX1':100, #Скромный презент #'SOUVENIR_BOX2':100, #Смелый презент #'SOUVENIR_BOX3':100, #Богатырский презент #'SOUVENIR_BOX4':100, #Праздничный презент #'SOUVENIR_BOX5':100, #Праздничный презент #'SOUVENIR_BOX6':100, #Праздничный презент #'BOUQUET_MIMOSA':100, #Букет мимоз #'BOUQUET_TULIPS':100, #Букет тюльпанов #'BOUQUET_ROSE':100, #Букет роз #'CANDY_BOX1':100, #Карамелька #'CANDY_BOX2':100, #Шоколадная #'CANDY_BOX3':100, #Грильяж #'SNOW_APPLE_PACK':100, #Яблочный сюрприз #'SNOW_CHERRY_PACK':100, #Вишнёвый сюрприз #'SNOW_MANDARIN_PACK':100, #Мандариновый сюрприз #'SNOW_KNOCK_PACK':100, #Зимний сюрприз #'GNOME_SOS_CHEST':100, #Сундук с берега #'TURKEY_BOX':100, #Пернатый подарок } if not eggs: return buildings = ['@B_PEARL_TOWER_CASH','@B_PEARL_TOWER'] for building in self._get_game_location().get_all_objects_by_type('pickupStorageBuilding'): if not building.item in buildings: continue for egg in eggs: useEvent=[] got_items=self._get_game_state().count_in_storage(egg) saveCount=eggs[egg] if got_items<=saveCount:continue endCount=got_items-saveCount if endCount<=0:continue name=self._get_item_reader().get(egg).name for i in range(endCount): useEvent.append({"x":10,"y":10,"type":"item","action":"useStoragePickups","objId":building.id,"itemId":egg}) if len(useEvent)==500: self._get_events_sender().send_game_events(useEvent) useEvent=[] if useEvent:self._get_events_sender().send_game_events(useEvent) logger.info(u'4 Разбил^7_%d^6_"%s"' % (endCount, name)) self._get_game_state().remove_from_storage(egg,endCount)
Последний раз редактировалось greyzza; 25.01.2015 в 15:04.
|
|
|
25.01.2015, 16:32
|
#3972
|
|
|
|
Разведчик
|
 Регистрация: 10.05.2014
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
кто может помочь з откритием зомбилето а то уже больше года валяеца а в ручну оч долго
|
|
|
25.01.2015, 16:50
|
#3973
|
|
|
|
Разведчик
|
 Регистрация: 17.02.2014
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
|
|
25.01.2015, 17:16
|
#3974
|
|
|
|
Разведчик
|
 Регистрация: 10.05.2014
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
в роде на новий год било
|
|
|
25.01.2015, 18:53
|
#3975
|
|
|
|
Разведчик
|
 Регистрация: 29.07.2014
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 8 раз(а) в 5 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 23:51.
|
 |