 |
Zombot (Клиент для игры Зомби ферма) [Обсуждение] - Свободное обсуждение - Ваши идеи, вопросы и ответы на тему браузерных игр и социальных сетей |
09.05.2014, 22:10
|
#2206
|
|
|
|
Разведчик
|
 Регистрация: 16.03.2010
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Доброго времени суток) Помогите с файлом на рубку зимнего острова, пожалуйста)
|
|
|
09.05.2014, 22:33
|
#2207
|
|
|
|
Разведчик
|
 Регистрация: 04.02.2013
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Последний раз редактировалось Shurup240; 09.05.2014 в 22:42.
|
|
|
09.05.2014, 23:16
|
#2208
|
|
|
|
Разведчик
|
 Регистрация: 17.02.2014
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Новый подход к активации супер-поиск, супер-урожай и минутки.
Сначала активируется на 3 дня, если такого нет на складе, то на 2 дня, далее на 1 день...
Файл назвала "buffs.py"
Код:
# coding=utf-8
import logging
from game_state.game_event import dict2obj
from game_actors_and_handlers.base import BaseActor
logger = logging.getLogger(__name__)
class GameBuffFixHarvest(BaseActor):
def perform_action(self):
day_count = 10 # Предупреждает, что через "day_count" дней закончится супер-урожай на складе
time_activation = 30 # Активировать за "time_activation" секунд до окончания
day_1 = day_2 = day_3 = exp_time = 0
for materials in self._get_game_state().get_state().storageItems:
if hasattr(materials, 'item'):
if "BUFF_FIX_HARVEST_1" in materials.item:
day_1 = materials.count
if "BUFF_FIX_HARVEST_2" in materials.item:
day_2 = materials.count
if "BUFF_FIX_HARVEST_3" in materials.item:
day_3 = materials.count
day = day_1 + day_2*2 + day_3*3
if int(str(day)[-1:]) == 0 or 9 < int(str(day)[-2:]) < 21 or 4 < int(str(day)[-1:]) < 10:
days = u'дней'
elif 1 < int(str(day)[-1:]) < 5:
days = u'дня'
else:
days = u'день'
if day < day_count:
logger.info(u'Внимание!!! Супер-урожая на складе осталось на %d %s' % (day, days))
buff_list = self._get_game_state().get_state().buffs.list
for l in buff_list:
if "BUFF_FIX_HARVEST" in l.item:
exp_time = int((float(l.expire.endDate)-self._get_timer()._get_current_client_time())/1000)
if exp_time < 0:
exp_time = 0
d = exp_time/86400
h = (exp_time - 86400*d)/3600
m = (exp_time - 86400*d - 3600*h)/60
s = exp_time - 86400*d - 3600*h - 60*m
if d == 0:
logger.info(u'Осталось супер-урожай: %d:%d:%d' % (h,m,s))
elif d == 1:
logger.info(u'Осталось супер-урожай: 1 день %d:%d:%d' % (h,m,s))
elif d == 2:
logger.info(u'Осталось супер-урожай: 2 дня %d:%d:%d' % (h,m,s))
if exp_time < time_activation:
if day_3 > 0:
event = {"x":20,"type":"item","y":7,"action":"useStorageItem","itemId":"BS_BUFF_FIX_HARVEST_3"}
self._get_events_sender().send_game_events([event])
self._get_game_state().remove_from_storage("@BS_BUFF_FIX_HARVEST_3", 1)
buff_list.append(dict2obj({"item":"@BS_BUFF_FIX_HARVEST_3", "expire": dict2obj({"type":"time", "endDate": str(int(self._get_timer()._get_current_client_time())+259200000)})}))
logger.info(u'Активирован супер-урожай на 3 дня')
elif day_2 > 0:
event = {"x":20,"type":"item","y":7,"action":"useStorageItem","itemId":"BS_BUFF_FIX_HARVEST_2"}
self._get_events_sender().send_game_events([event])
self._get_game_state().remove_from_storage("@BS_BUFF_FIX_HARVEST_2", 1)
buff_list.append(dict2obj({"item":"@BS_BUFF_FIX_HARVEST_2", "expire": dict2obj({"type":"time", "endDate": str(int(self._get_timer()._get_current_client_time())+172800000)})}))
logger.info(u'Активирован супер-урожай на 2 дня')
elif day_1 > 0:
event = {"x":20,"type":"item","y":7,"action":"useStorageItem","itemId":"BS_BUFF_FIX_HARVEST_1"}
self._get_events_sender().send_game_events([event])
self._get_game_state().remove_from_storage("@BS_BUFF_FIX_HARVEST_1", 1)
buff_list.append(dict2obj({"item":"@BS_BUFF_FIX_HARVEST_1", "expire": dict2obj({"type":"time", "endDate": str(int(self._get_timer()._get_current_client_time())+86400000)})}))
logger.info(u'Активирован супер-урожай на 1 день')
else:
logger.info(u'На складе нет супер-урожая!!!')
class GameBuffDigger(BaseActor):
def perform_action(self):
day_count = 10 # Предупреждает, что через "day_count" дней закончится супер-поиск на складе
time_activation = 30 # Активировать за "time_activation" секунд до окончания
day_1 = day_2 = day_3 = exp_time = 0
for materials in self._get_game_state().get_state().storageItems:
if hasattr(materials, 'item'):
if "BUFF_FIX_DIGGER1" in materials.item:
day_1 = materials.count
if "BUFF_FIX_DIGGER2" in materials.item:
day_2 = materials.count
if "BUFF_FIX_DIGGER3" in materials.item:
day_3 = materials.count
day = day_1 + day_2*2 + day_3*3
if int(str(day)[-1:]) == 0 or 9 < int(str(day)[-2:]) < 21 or 4 < int(str(day)[-1:]) < 10:
days = u'дней'
elif 1 < int(str(day)[-1:]) < 5:
days = u'дня'
else:
days = u'день'
if day < day_count:
logger.info(u'Внимание!!! Супер-поиск на складе осталось на %d %s' % (day, days))
buff_list = self._get_game_state().get_state().buffs.list
for l in buff_list:
if "BUFF_FIX_DIGGER" in l.item:
exp_time = int((float(l.expire.endDate)-self._get_timer()._get_current_client_time())/1000)
if exp_time < 0:
exp_time = 0
d = exp_time/86400
h = (exp_time - 86400*d)/3600
m = (exp_time - 86400*d - 3600*h)/60
s = exp_time - 86400*d - 3600*h - 60*m
if d == 0:
logger.info(u'Осталось супер-поиск: %d:%d:%d' % (h,m,s))
elif d == 1:
logger.info(u'Осталось супер-поиск: 1 день %d:%d:%d' % (h,m,s))
elif d == 2:
logger.info(u'Осталось супер-поиск: 2 дня %d:%d:%d' % (h,m,s))
if exp_time < time_activation:
if day_3 > 0:
event = {"x":20,"type":"item","y":7,"action":"useStorageItem","itemId":"BS_BUFF_FIX_DIGGER3"}
self._get_events_sender().send_game_events([event])
self._get_game_state().remove_from_storage("@BS_BUFF_FIX_DIGGER3", 1)
buff_list.append(dict2obj({"item":"@BS_BUFF_FIX_DIGGER3", "expire": dict2obj({"type":"time", "endDate": str(int(self._get_timer()._get_current_client_time())+259200000)})}))
logger.info(u'Активирован супер-поиск на 3 дня')
elif day_2 > 0:
event = {"x":20,"type":"item","y":7,"action":"useStorageItem","itemId":"BS_BUFF_FIX_DIGGER2"}
self._get_events_sender().send_game_events([event])
self._get_game_state().remove_from_storage("@BS_BUFF_FIX_DIGGER2", 1)
buff_list.append(dict2obj({"item":"@BS_BUFF_FIX_DIGGER2", "expire": dict2obj({"type":"time", "endDate": str(int(self._get_timer()._get_current_client_time())+172800000)})}))
logger.info(u'Активирован супер-поиск на 2 дня')
elif day_1 > 0:
event = {"x":20,"type":"item","y":7,"action":"useStorageItem","itemId":"BS_BUFF_FIX_DIGGER1"}
self._get_events_sender().send_game_events([event])
self._get_game_state().remove_from_storage("@BS_BUFF_FIX_DIGGER1", 1)
buff_list.append(dict2obj({"item":"@BS_BUFF_FIX_DIGGER1", "expire": dict2obj({"type":"time", "endDate": str(int(self._get_timer()._get_current_client_time())+86400000)})}))
logger.info(u'Активирован супер-поиск на 1 день')
else:
logger.info(u'На складе нет супер-поиск!!!')
class GameBuffFixCook(BaseActor):
def perform_action(self):
day_count = 10 # Предупреждает, что через "day_count" дней закончится минутка на складе
time_activation = 30 # Активировать за "time_activation" секунд до окончания
day_1 = day_2 = day_3 = exp_time = 0
for materials in self._get_game_state().get_state().storageItems:
if hasattr(materials, 'item'):
if "BUFF_FIX_COOK_1" in materials.item:
day_1 = materials.count
if "BUFF_FIX_COOK_2" in materials.item:
day_2 = materials.count
if "BUFF_FIX_COOK_3" in materials.item:
day_3 = materials.count
day = day_1 + day_2*2 + day_3*3
if int(str(day)[-1:]) == 0 or 9 < int(str(day)[-2:]) < 21 or 4 < int(str(day)[-1:]) < 10:
days = u'дней'
elif 1 < int(str(day)[-1:]) < 5:
days = u'дня'
else:
days = u'день'
if day < day_count:
logger.info(u'Внимание!!! Минутки на складе осталось на %d %s' % (day, days))
buff_list = self._get_game_state().get_state().buffs.list
for l in buff_list:
if "BUFF_FIX_COOK" in l.item:
exp_time = int((float(l.expire.endDate)-self._get_timer()._get_current_client_time())/1000)
if exp_time < 0:
exp_time = 0
d = exp_time/86400
h = (exp_time - 86400*d)/3600
m = (exp_time - 86400*d - 3600*h)/60
s = exp_time - 86400*d - 3600*h - 60*m
if d == 0:
logger.info(u'Осталось минутки: %d:%d:%d' % (h,m,s))
elif d == 1:
logger.info(u'Осталось минутки: 1 день %d:%d:%d' % (h,m,s))
elif d == 2:
logger.info(u'Осталось минутки: 2 дня %d:%d:%d' % (h,m,s))
if exp_time < time_activation:
if day_3 > 0:
event = {"x":20,"type":"item","y":7,"action":"useStorageItem","itemId":"BS_BUFF_FIX_COOK_3"}
self._get_events_sender().send_game_events([event])
self._get_game_state().remove_from_storage("@BS_BUFF_FIX_COOK_3", 1)
buff_list.append(dict2obj({"item":"@BS_BUFF_FIX_COOK_3", "expire": dict2obj({"type":"time", "endDate": str(int(self._get_timer()._get_current_client_time())+259200000)})}))
logger.info(u'Активирована минутка на 3 дня')
elif day_2 > 0:
event = {"x":20,"type":"item","y":7,"action":"useStorageItem","itemId":"BS_BUFF_FIX_COOK_2"}
self._get_events_sender().send_game_events([event])
self._get_game_state().remove_from_storage("@BS_BUFF_FIX_COOK_2", 1)
buff_list.append(dict2obj({"item":"@BS_BUFF_FIX_COOK_2", "expire": dict2obj({"type":"time", "endDate": str(int(self._get_timer()._get_current_client_time())+172800000)})}))
logger.info(u'Активирована минутка на 2 дня')
elif day_1 > 0:
event = {"x":20,"type":"item","y":7,"action":"useStorageItem","itemId":"BS_BUFF_FIX_COOK_1"}
self._get_events_sender().send_game_events([event])
self._get_game_state().remove_from_storage("@BS_BUFF_FIX_COOK_1", 1)
buff_list.append(dict2obj({"item":"@BS_BUFF_FIX_COOK_1", "expire": dict2obj({"type":"time", "endDate": str(int(self._get_timer()._get_current_client_time())+86400000)})}))
logger.info(u'Активирована минутка на 1 день')
else:
logger.info(u'На складе нет минутки!!!')
Подключение в game_engine:
Код:
from game_actors_and_handlers.buffs import GameBuffFixHarvest, GameBuffDigger, GameBuffFixCook
actor_classes = [
GameBuffFixHarvest, # Активировать супер-урожай
GameBuffDigger, # Активировать супер-поиск
GameBuffFixCook, # Активировать повара-минутки
]
|
|
|
09.05.2014, 23:20
|
#2209
|
|
|
|
Разведчик
|
 Регистрация: 16.03.2010
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
большое спасибо)
Добавлено через 2 минуты
 |
Цитата: |
 |
|
|
|
|
|
Большрое Спасибо)
Последний раз редактировалось 0лег; 09.05.2014 в 23:22.
Причина: Добавлено сообщение
|
|
|
10.05.2014, 11:30
|
#2210
|
|
|
|
Разведчик
|
 Регистрация: 27.06.2009
 Сообщений: 18
 Популярность: -107
 Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
всем привет!долгое время не пользовался ботом,недавно решил возобновить так сказать,но вот беда,выдает ошибку,подскажите как исправить?!
проблема решилась,в пароле присутствовали русские буквы
Последний раз редактировалось darkdespot; 10.05.2014 в 15:46.
|
|
|
10.05.2014, 12:57
|
#2211
|
|
|
|
Разведчик
|
 Регистрация: 20.04.2014
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Ходилка со стучанием в самолеты. С учетом замечания greyzza и учетом лимита стуков в день.
ВСЕХ ПОЗДРАВЛЯЮ С ДНЕМ ПОБЕДЫ!!!!
friends.zip
|
|
|
10.05.2014, 13:03
|
#2212
|
|
|
|
Разведчик
|
 Регистрация: 17.02.2014
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Сажаем деревья за секунду.
Процедуру:
Код:
num = 0
if space_crd:
...
...
...
self._get_game_state().get_state().gameObjects.append(dict2obj({u'rotate': u'0L', u'fruitingCount': u'25L', u'fertilized': False, u'item': u'@'+need.id, u'jobFinishTime': u'79200000', u'jobStartTime': u'0', u'y': str(y), u'x': str(x), u'type': u'fruitTree', u'id': next_id}))
next_id += 1
Меняем на:
Код:
num = 0
buy = []
if space_crd:
for k in space_crd:
if len(k) == 5:
x = int(k[:3])
y = int(k[3:])
elif len(k) == 4:
if current_loc == u'main' and int(k[:2])<13:
x = int(k[:3])
y = int(k[3:])
else:
x = int(k[:2])
y = int(k[2:])
elif len(k) == 2:
x = int(k[:1])
y = int(k[1:])
else:
#if k[0] == '8' or k[0] == '9':
if current_loc != u'main' and (k[0] == '8' or k[0] == '9'):
x = int(k[:1])
y = int(k[1:])
else:
x = int(k[:2])
y = int(k[2:])
if self._get_game_state().get_state().gameMoney > min_money:
num += 1
buy_event = {"x":x,"y":y,"action":"buy","itemId":need.id,"type":"item","objId":next_id}
buy.append(buy_event)
#self._get_events_sender().send_game_events([buy])
self._get_game_state().get_state().gameMoney -= build_cost
#logger.info(u''+str(num)+u" Сажаем "+need.id+u" на X: "+str(x)+u", Y: "+str(y))
self._get_game_state().get_state().gameObjects.append(dict2obj({u'rotate': u'0L', u'fruitingCount': u'25L', u'fertilized': False, u'item': u'@'+need.id, u'jobFinishTime': u'79200000', u'jobStartTime': u'0', u'y': str(y), u'x': str(x), u'type': u'fruitTree', u'id': next_id}))
next_id += 1
if num > 0:
self._get_events_sender().send_game_events(buy)
logger.info(u'Посадили %d %s' %(num,need.id))
|
|
|
10.05.2014, 13:25
|
#2213
|
|
|
|
Разведчик
|
 Регистрация: 25.02.2013
 Сообщений: 1
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
|
|
10.05.2014, 16:09
|
#2214
|
|
|
|
Разведчик
|
 Регистрация: 25.02.2013
 Сообщений: 1
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
если еще кому то актуально вот сбор билетов и обновление самолета,
подключаем в энжине:
PHP код:
from game_actors_and_handlers.airplane_sell import TiketReceiverBot
и соответственно:
PHP код:
TiketReceiverBot, # Собираем билеты, обновляем самолет
|
|
|
Пользователь сказал cпасибо:
|
|
10.05.2014, 21:42
|
#2215
|
|
|
|
Разведчик
|
 Регистрация: 04.02.2013
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
|
|
|
10.05.2014, 23:03
|
#2216
|
|
|
|
Пехотинец
|
 Регистрация: 01.08.2012
 Сообщений: 95
 Популярность: 255
 Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
если еще кому то актуально вот сбор билетов и обновление самолета,
подключаем в энжине:
PHP код:
from game_actors_and_handlers.airplane_sell import TiketReceiverBot
и соответственно:
PHP код:
TiketReceiverBot, # Собираем билеты, обновляем самолет
|
|
 |
|
 |
|
Валится при наличии других туковых остатков. Нужно проверять на самолёт (в этом не уверен, проскакивала ошибка, решил что это).
И, кстати, написано для 1 самолёта иначе остальные не обновляет.
Не плохо бы реализовать стук в ответ. Хотя бы выгрузкой в файл для начала, потом подберём.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось vintets; 11.05.2014 в 06:12.
|
|
|
10.05.2014, 23:04
|
#2217
|
|
|
|
Разведчик
|
 Регистрация: 25.05.2013
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
РЕБЯТ!!
Скиньте ссылку на целый бот для копания)
у меня он есть ,но похоже не той версии
ОШИБКИ вылетают
|
|
|
11.05.2014, 07:25
|
#2218
|
|
|
|
Разведчик
|
 Регистрация: 25.02.2013
 Сообщений: 1
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
написано для 1 самолёта
|
|
 |
|
 |
|
вынеси за цикл или в конец модуля
PHP код:
self._get_game_state().airplaneReload = False
все самолеты обновит
вернее лучше будет вот так:
PHP код:
удалил потому что ниже положил подправленный код
а по поводу выгрузки в файл, я чет не заморачивался т.к. билеты все равно раскладываю при походе в гости раз в сутки, хотя кому надо - проблемы то нет выгрузить во внешний файл
Последний раз редактировалось greyzza; 11.05.2014 в 14:43.
|
|
|
11.05.2014, 09:09
|
#2219
|
|
|
|
Разведчик
|
 Регистрация: 18.03.2014
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Последний раз редактировалось trollolo5; 11.05.2014 в 09:25.
|
|
|
11.05.2014, 09:29
|
#2220
|
|
|
|
Разведчик
|
 Регистрация: 25.02.2013
 Сообщений: 1
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
желательно выставить полный модуль
|
|
 |
|
 |
|
PHP код:
# coding=utf-8
import logging
from game_state.game_types import GameWoodGrave, GameWoodGraveDouble,\
GamePickItem, GameWoodTree, GameStone, GameGainItem, GamePickup
from game_state.game_event import dict2obj
from game_actors_and_handlers.base import BaseActor
logger = logging.getLogger(__name__)
class TiketReceiverBot(BaseActor):
def perform_action(self):
# билеты на хоккей
tikets = self._get_game_location().get_all_objects_by_type('thanksgivingTable')
tiket_count = 0
if not hasattr(self._get_game_state(), 'airplaneReload'):self._get_game_state().airplaneReload = True
countitem = 0
for tiket in tikets:
if tiket.item == "@B_HOCKEY_AIRPLANE" and not tiket.users and self._get_game_state().airplaneReload == True:
if tiket.usedPlatesCount == 5 :
self._get_events_sender().send_game_events([{"objId":tiket.id,"type":"item","action":"reload"}])
logger.info(u'Обновляю САМОЛЕТ!!!')
countitem +=1
for i in tiket.users:
tiket_count += 1
apply_tiket_event = {"objId":tiket.id,"type":"thanksgivingTable","index":0,"action":"applyThanksgivingGift"}
self._get_events_sender().send_game_events([apply_tiket_event])
self._get_game_state().add_from_storage("@CR_TICKET",1)
tiket.users = []
if tiket_count > 0:
logger.info(u'Собрали %d билетов'% tiket_count)
if countitem >0:
self._get_game_state().airplaneReload = False
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 04:00.
|
 |