Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от Cheater-84
Ребят, подмогните пожалуйста, к окам не могу подключиться...
Вообще-то Одноклассники уже почти год как убили параметр "tkn". Поэтому эту строчку вообще нужно убрать (закомментарить), а в следующей строке убрать "+tkn".
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Помогите с чтением ответов.
запрос
Код:
self._get_events_sender().send_game_events(eventdig1)
В чарлике выглядит
{"user":"71600495","type":"EVT","id":1408633772640,"sig":"c1d87b5eab5afe41d1cbe02c2db41a7f","events":[{"action":"remoteDig","x":96,"type":"item","objId":-5,"y":218},{"action":"remoteDig","x":96,"type":"item","objId":-5,"y":218}]}
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от NBKua
Помогите с чтением ответов.
запрос
Код:
self._get_events_sender().send_game_events(eventdig1)
В чарлике выглядит
{"user":"71600495","type":"EVT","id":1408633772640,"sig":"c1d87b5eab5afe41d1cbe02c2db41a7f","events":[{"action":"remoteDig","x":96,"type":"item","objId":-5,"y":218},{"action":"remoteDig","x":96,"type":"item","objId":-5,"y":218}]}
Нормальный ответ - нашел клад. Нужно продолжать долбить этот объект пока не перестанут приходить "алёрты".
Цитата:
Или как узнать количество/наличие бесплатных лопат?
перерыл ответы но так и не нашел ничего подобного.
Бесплатные лопаты нужно считать. Для этого в game_state смотрится RemoteTreasure, ищется "друг", к которому зашел, у друга смотрится параметр .count. Если он равен 5, то бесплатных лопат не осталось. Если друга в этом списке нет, то вы его не копали, и есть 5 бесплатных лопат.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от Shurup240
Ребят, привет! А есть у кого-нибудь модуль для закапывания друзей?
Компилятивка с подстройкой
PHP код:
class DigBot(BaseActor):
def perform_action(self): friends = self._get_options() if friends == [] or friends == None: return #print 'friends ', friends
i=0 freeslots=[] #open('burySlots.txt', 'w').write(str(obj2dict(self._get_game_state().get_state().burySlots))) for burySlot in self._get_game_state().get_state().burySlots: if not hasattr(burySlot, 'user'): #print str(i) + " " + 'Free' freeslots.append(i) i+=1 #else: #print str(i) + " " + burySlot.user
if freeslots == []: return #если все слоты заняты выходим из функции
friendsslot=[] for slot in freeslots: print u'Слот свободен: ' + str(slot+1) friendsslot.append(friends[slot])
#обратный счетчик раскопки if hasattr(self._get_game_state(), 'digOut'): self._get_game_state().digOut -= 1 #print self._get_game_state().digOut if self._get_game_state().digOut < 0: del self._get_game_state().digOut else: return
if hasattr(self._get_game_state(), 'playersInfo'): #players_info = self._get_game_state().evinf players_info = self._get_game_state().playersInfo print 'playersInfo:', len(players_info) else: self._get_events_sender().send_game_events([{"type":"players","action":"getInfo","players":friendsslot}]) print u'Запрашиваем инфу о друзьях' return
for slot in freeslots: #print u'обрабатываем слот', slot+1 #self._get_events_sender().send_game_events([{"type":"players","action":"getInfo","players":friends[slot]}]) #print u'Запрашиваем/обновляем инфу о друге' load = False for info in players_info: if friends[slot] == str(info.id): load = True break if load: if hasattr(info, 'buried'): print u'Раскапываем: ', str(info.id) cook_event = {"user":str(info.id),"type":"bury","action":"digOut"} self._get_events_sender().send_game_events([cook_event]) del info.buried if not hasattr(self._get_game_state(), 'digOut'): self._get_game_state().digOut = 2 continue
text = u'Закапываем: '+str(info.id) if hasattr(info, 'name') and info.name: text += u' '+str(info.name) text += u' в слот '+str(slot+1) print text cook_event = {"action":"bury","type":"bury","user":str(info.id),"slot":slot} self._get_events_sender().send_game_events([cook_event]) self._get_game_state().get_state().burySlots[slot].user = friends[slot]
Можно было ещё покрутить, но так работает нормально. Пользуюсь очень давно.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось vintets; 22.08.2014 в 09:53.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от mike4kz
Нормальный ответ - нашел клад. Нужно продолжать долбить этот объект пока не перестанут приходить "алёрты".
Это ответ ошибка, "нет лопат" может не весь ответ показал.
Цитата:
Бесплатные лопаты нужно считать. Для этого в game_state смотрится RemoteTreasure, ищется "друг", к которому зашел, у друга смотрится параметр .count. Если он равен 5, то бесплатных лопат не осталось. Если друга в этом списке нет, то вы его не копали, и есть 5 бесплатных лопат.
Во спасибо!!! Нарыл где и когда оно появляется.
Будем учитывать при копании. Есть хоть что-то от чего оттолкнуться можно, Цикл(5 раз копнул, глянул в дроп, если есть еще бесплатные копнул еще сколько есть.) потом уже к платным лезешь.
Хотя в принципе, сервер и 300 копков скушает только зачем его нагружать лишний раз... уж серв сказал нельзя то бот должен адекватно понимать нельзя...
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Давайте я немного развею тишину. )
Начал делать бота с начала. Бот будет в формате: бинарник + веб-интерфейс на PHP(+Apache+MySQL). В бинарнике необходимый минимум для работы бота, в PHP все управление и интерфейс. Проект называется "Zombie Nest" и взглянуть со стороны можно по адресу: [Ссылки могут видеть только зарегистрированные пользователи. ] Сейчас там пусто, ибо написана только первая часть логики.
Идея проекта: создать бота для размещения на виртуальном сервере и постоянной работы.
Если интересно, расскажу как работает бот, протокол взаимодействия и структуру базы данных. И вполне себе могу показать PHP скрипты. Я бы пообщался на тему безопасности и того, как правильно писать код. Так же стоит вопрос самого интерфейса и управления ботами.
В итоге должен получиться: работающий бот и интерфейс управления.
Из интересных возможностей: полный лог - что посадил/собрал/сделал за день/неделю/месяц. скрипты автоматической рассадки деревьев.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от NBKua
Во спасибо!!! Нарыл где и когда оно появляется.
Будем учитывать при копании. Есть хоть что-то от чего оттолкнуться можно, Цикл(5 раз копнул, глянул в дроп, если есть еще бесплатные копнул еще сколько есть.) потом уже к платным лезешь.
Хотя в принципе, сервер и 300 копков скушает только зачем его нагружать лишний раз... уж серв сказал нельзя то бот должен адекватно понимать нельзя...
Честно говоря, после того, как я сделал создание лопат в Глазе-Алмазе, я вообще не забочусь, сколько у меня лопат... Генерю их 10 тысяч, редко когда заканчиваются. А когда уменьшается количество бамбука, начинаю автоматически сеять его. Гораздо более важно определить, если у друга уже все выкопано...
А вообще я давно сделал "приоритетное" копание - создал три приоритета - "очень нужно", "просто хорошая вещь" и "лишь бы что-нибудь копнуть". На каждый приоритет задаю количество "дополнительных лопат" (например, если нужно накопать кафель, то добавляю на "приоритетную постройку" еще 50 лопат. По идее можно еще сделать, чтобы если вообще ничего не нашло из списка, то копать произвольную вещь, но руки не дошли. У Ботов копаю все "декорации" по 10 раз (если лопаты остались).
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от mike4kz
Честно говоря, после того, как я сделал создание лопат в Глазе-Алмазе, я вообще не забочусь, сколько у меня лопат... Генерю их 10 тысяч, редко когда заканчиваются. А когда уменьшается количество бамбука, начинаю автоматически сеять его. Гораздо более важно определить, если у друга уже все выкопано...
А вообще я давно сделал "приоритетное" копание - создал три приоритета - "очень нужно", "просто хорошая вещь" и "лишь бы что-нибудь копнуть". На каждый приоритет задаю количество "дополнительных лопат" (например, если нужно накопать кафель, то добавляю на "приоритетную постройку" еще 50 лопат. По идее можно еще сделать, чтобы если вообще ничего не нашло из списка, то копать произвольную вещь, но руки не дошли. У Ботов копаю все "декорации" по 10 раз (если лопаты остались).
Создание лопат сделать не напряг.
Исправить сеяльщика дабы он считывал из конфига "Необходимый минимум" и если на складе меньше то засадить остров этим буду делать.
Определить выкопано или нет перед походом не напряг, для меня пока еще напряг прочитать ответ сервера об ошибке(ты наверно об этом и говорил), (вчера не добил этот момент, пришли други и напоили гады ) Да и при "пакетной" копке по 48 копков за раз никак не определить ошибка приходит в процессе, а самому клиенту количество оставшихся "копков" ни в каком виде никогда не передается, только ответ-ошибка.
В целом твой бот достаточно удачно реализован.
Как раз подобное и делаю, на текущий момент все еще сырое.
Но основная задача при писании все настройки->settings.ini дабы был хоть как-то юзерфрендли
Ну и для каждого бота делаю подобное (пример на сеялке)
Код:
#Гейм енджини
self.__is_seed = settings.getUserIsSeed()
options = {'SeederBot':{'seed_item':self.__selected_seed,'is_seed':self.__is_seed,}}
# в модуле в самом начале
if (self._get_options()['is_seed'] == 't') or (self._get_options()['is_seed'] == 'T'):
Достаточно просто но этого хватает дабы бот не работал если не включен в сетингах. Да и логика "что не разрешено запретить" так же удачная, пока пилишь новый модуль для нужного бота включил остальные сидят тихонько и не рыпаются.
Еще нужно разделить рабочие папки ботов дабы все кроме items.txt хранилось в папке своего твинка.
Добавлено через 10 минут
У кого подвисает adl избавляемся
перед запуском adl добавьте
taskkill /IM adl.exe /F
Работает на win7/8
При этом не забудьте что вызов adl для каждого из ботов должен быть в разное время я своих каждого отдельным батником пускаю с разницей 10 сек в set Timer=30
Код:
:begin
python main.py 0 -c
set Timer=30
ping -n %Timer% 127.0.0.1>nul
goto begin
Последний раз редактировалось NBKua; 23.08.2014 в 18:30.
Причина: Добавлено сообщение
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
есть кто трудящиеся над парсером SWF sig или какими другими методами на функционале питона. готов присоединиться к разработке. напишите какой метод планируете осуществить. обращайтесь в [vk]39245930
vhyrix, ты сделал сервис генерации sig для питоновского бота? я бы не прочь протестировать.