************if*(monster[0].state*==*'READY_FOR_DIG'):
****************monster_event*=*{
********************'objId':*str(monster[0].id),
********************'type':*'item',
********************'action':*'startDig'
********************}
****************logger.info(u'Зкапываем*монстра... ')
****************self._get_events_sender().send_gam e_events([monster_event])*
у меня все работает....
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
перекочевряжил бот для копки...переписал все под logger.info.....вот кусок лога
PHP код:
2014-02-28 00:41:24,701 Выбираем пользователя...
2014-02-28 00:41:27,381 Логинимся...
2014-02-28 00:41:27,390 Загружаем словарь объектов...
2014-02-28 00:41:29,372 Словарь объектов загружен
2014-02-28 00:41:29,374 Загружаем остров...
2014-02-28 00:41:32,372 Остров загружен!
2014-02-28 00:41:32,664 Идем к другу
2014-02-28 00:41:32,664 6745101591662640459
2014-02-28 00:41:32,664 1/2
2014-02-28 00:41:36,898 Получаем объекты у друга на острове
2014-02-28 00:41:40,783 Кладем пряники под ёлки
2014-02-28 00:41:42,592 Найдены объекты для копки
2014-02-28 00:41:42,592 D_SAKURASMALL
2014-02-28 00:41:43,177 Кладем пряники под ёлки
2014-02-28 00:41:43,177 Кладем пряники под ёлки
2014-02-28 00:41:43,398 Кладем пряники под ёлки
2014-02-28 00:41:43,398 Кладем пряники под ёлки
2014-02-28 00:42:17,717 Кладем пряники под ёлки
2014-02-28 00:43:05,440 Использовал:
2014-02-28 00:43:05,441 5
2014-02-28 00:43:05,441 лопат
2014-02-28 00:43:05,443 Вскрыли сундуков:
2014-02-28 00:43:05,443 3
2014-02-28 00:43:05,466 ingame error
2014-02-28 00:43:05,471 Connection : {'crc': 'f9683ce786208b1e03db925537acfe2e', 'data': '{"user":"436231466475891839","type":"EVT","id":1393533675218,"sig":"1a55bf06a6925dfcb7d6f825a970b9a5","events":[{"itemId":"CAKE_PACK_FREE1","action":"remoteNewYear","type":"item","objId":-916}]}'}
2014-02-28 00:43:05,471 Response : {u'msg': u'ingame error', u'cmd': u'ERR', u'id': u'1393533675218'}
2014-02-28 00:43:05,473 Загружаем остров...
2014-02-28 00:43:08,492 Остров загружен!
2014-02-28 00:43:09,125 Идем к другу
2014-02-28 00:43:09,128 18318155742226352457
2014-02-28 00:43:09,128 2/2
2014-02-28 00:43:09,154 Возвращаемся домой ОБНОВИТЕ COUNTTFNYT.TXT!!!!!!
но нужно еще до ума довести....не понимаю в чем ошибка ....(((
а это кусок кода friends.py
PHP код:
# coding=utf-8
import sys
import logging
import random as random_number
from game_state.game_types import GameWoodGrave, GameWoodGraveDouble,\
GamePickItem, GameWoodTree, GameGainItem, GamePickup, GameDigItem
from game_state.game_event import dict2obj, obj2dict
from game_actors_and_handlers.base import BaseActor
logger = logging.getLogger(__name__)
class VisitingUsers(BaseActor):
def perform_action(self):
#logger.info(u"######### Идем к другу ###########")
#go_to_friend = {"action":"gameState","locationId":"main","user":'201018303',"objId":None,"type":"gameState"}#{"id":8,"action":"gameState","objId":null,"locationId":"main","user":"144371056","type":"gameState"} #,"id":46667
#friends = ['8477452','22656865','27505179','107183826','68030140','163206097']#'476111',
friends = self._get_options()
# Юдо Чудо
#friends = ['[BOT]friend1','[BOT]friend2'] + friends
friends = ['6745101591662640459','18318155742226352457']
objtypes = ['woodTree','stone','decoration','building']
myid = '0'
#self._get_game_state().fdend = 1
self._get_game_state().shovel = 0
if not hasattr(self._get_game_state(),'countfnyt'):
try:
self._get_game_state().countfnyt = int(open('countfnyt.txt').read())
except:
self._get_game_state().countfnyt = 0
open('countfnyt.txt', 'w').write('')
if not hasattr(self._get_game_state(), 'countnyt'):self._get_game_state().countnyt = 0
if not hasattr(self._get_game_state(), 'sendNewYearGift'):self._get_game_state().sendNewYearGift = 0
if not hasattr(self._get_game_state(), 'gameObjects') and self._get_game_state().countfnyt < len(friends):
user = friends[self._get_game_state().countfnyt]
logger.info(u" Идем к другу "),
logger.info(str(user)+" "),
logger.info(str(self._get_game_state().countfnyt+1)+"/"+str(len(friends))),
print " #########"
self._get_events_sender().send_game_events([{"action":"gameState","locationId":"main","user":str(user),"objId":None,"type":"gameState"},{"type":"players","action":"getInfo","players":[str(user)]}])
self._get_game_state().countfnyt += 1
open('countfnyt.txt', 'w').write(str(self._get_game_state().countfnyt))
if hasattr(self._get_game_state(), 'gameObjects'):# and
#open('objects.txt', 'a').write(str(friends[self._get_game_state().countfnyt])+"\n")
logger.info(u"Получаем объекты у друга на острове")
countnyt = 0
countmyg = 0
countpickup = 0
objssvl = []
objssvl2 = []
newyeartree = []
if hasattr(self._get_game_state(),'alldigged'):alldigged = 1
else: alldigged = 0
for object in self._get_game_state().gameObjects:
if self._get_game_state().countnyt + countnyt < 148:
if hasattr(object, 'type'):
tf = 0
if object.type == 'newYearTree':
tf = 1
usrs = len(object.users)
#object.users = usrs
#open('newyeartree.txt', 'a').write(str(obj2dict(object))+"\n")
if tf == 1 and not hasattr(self._get_game_state(), 'nytend'):
logger.info(u'Кладем пряники под ёлки')
#open('gameObjects.txt', 'a').write(str(obj2dict(object))+"\n")
#open('newyeartree.txt', 'a').write(object.item + " UsersGift:" + str(len(object.users)) + "\n")
tf = 1
f = 0
#Ёлки разной ёмкости. указано не точно.
if object.item == u'@B_SPRUCE_SMOLL' and len(object.users) < 3: f = 1
if object.item == u'@B_SPRUCE_MIDDLE' and len(object.users) < 6: f = 1
if object.item == u'@B_SPRUCE_BIG' and len(object.users) < 15: f = 1
#if object.item == u'@B_BASKETS_EASTER_1' and len(object.users) < 15: f = 1
#if object.item == u'@B_BASKETS_EASTER_2' and len(object.users) < 7: f = 1
#if object.item == u'@B_BASKETS_EASTER_3' and len(object.users) < 3: f = 1
for user in object.users:
if 0 == myid:
countmyg+=1#print "MyGift"
f = 0
break
#if not check_no_my_gift(object.users): f = 1
if self._get_game_state().countnyt + countnyt > 151 or hasattr(self._get_game_state(),'nyna'):
self._get_game_state().nytend = 1
print "################## END ####################"
if f == 1:
# Ложим пряник
newyeartree.append(object)
#open('newyeartree.txt', 'a').write(str(obj2dict(object)) + "\n")
self._get_events_sender().send_game_events([{"itemId":"CAKE_PACK_FREE1","action":"remoteNewYear","type":"item","objId":object.id}])
countnyt+=1
#pass
#else: print "NO"
# Вскрываем сундук
if tf == 0 and object.type == 'pickup':
open('sunduki.txt', 'a').write(str(obj2dict(object)) + "\n")
self._get_events_sender().send_game_events([{"action":"pick","type":"item","objId":object.id}])
countpickup+=1
tf = 2
# Добавляем в список объекты для копания клада
if tf == 0 and alldigged == 0:
favdecors = ['D_SAKURASMALL','D_REDTREE','D_CONIFER','D_GATE','D_STATUETTE']
for fdec in favdecors:
if object.item[0-len(fdec):] == fdec:
logger.info(u'Найдены объекты для копки'),
logger.info(fdec)
objssvl.insert(0, object)
break
else:
for objtype in objtypes:
#if self._get_game_state().shovel < 5 and object.type == objtype:
self._get_events_sender().send_game_events([{"objId":object.id,"x":object.x,"action":"remoteDig","y":object.y,"type":"item"}])
# self._get_game_state().shovel += 1
if object.type == objtype:
objssvl2.append(object)
break
if tf == 0 and object.type == 'monsterPit' and object.state == 'DIGGING':
object.users = len(object.users)
#open('monster.txt', 'a').write(str(obj2dict(object))+"\n")
logger.info(u'Закапываем чудика ####')
self._get_events_sender().send_game_events([{"itemId":"MONSTER_PIT_1_INSTRUMENT_PACK_DEFAULT","action":"remoteMonsterPit","type":"item","objId":object.id}])
mt = 3
if tf == 0:
pass#open('objects.txt', 'a').write(str(obj2dict(object))+"\n")
#if hasattr(self._get_game_state(),'playersInfo'):
#open('objects.txt', 'a').write('-------------------------------------' + "\n")
#open('objects.txt', 'a').write(str(obj2dict(self._get_game_state().playersInfo))+"\n")
try: mt
except NameError: mt = 0
#if mt == 3:open('monster.txt', 'a').write(str(friends[self._get_game_state().countfnyt-1])+"\n"+'-------------------------------------' + "\n")
countlop = 0
if len(objssvl) > 0:
if objssvl == []: objssvl = objssvl2
for i in range(5):
objdig = random_number.choice(objssvl)
self._get_events_sender().send_game_events([{"objId":objdig.id,"x":objdig.x,"action":"remoteDig","y":objdig.y,"type":"item"}])
countlop+=1
logger.info(u"Использовал: "),
logger.info(str(countlop)),
logger.info(u" лопат")
elif alldigged == 1:
logger.info(u'Всё уже выкопано!')
else:
logger.info(u'Нечего копать!')
logger.info(u"Вскрыли сундуков: "),
logger.info(str(countpickup))
if hasattr(self._get_game_state(),'alldigged'): del self._get_game_state().alldigged
del self._get_game_state().gameObjects
self._get_game_state().countnyt += countnyt
if not hasattr(self._get_game_state(), 'nytend'):
for nyt in newyeartree:
self._get_events_sender().send_game_events([{"itemId":"CAKE_PACK_FREE1","action":"remoteNewYear","type":"item","objId":nyt.id}])
logger.info(u"поЛожил пряник(ов): "),
logger.info(str(self._get_game_state().sendNewYearGift)+":"+str(self._get_game_state().countnyt)+"/"+str(countnyt)+" dub: "+str(countmyg))
self._get_game_state().shovel = 0
#if self._get_game_state().countfnyt + 1 > len(friends):sys.exit(0)
if self._get_game_state().countfnyt < len(friends):
logger.info(u"######### Идем к другу "),
#logger.info(str(user)+" "),
logger.info(str(self._get_game_state().countfnyt+1)+"/"+str(len(friends))),
logger.info(" #########")
self._get_events_sender().send_game_events([{"action":"gameState","locationId":"main","user":str(user),"objId":None,"type":"gameState"},{"type":"players","action":"getInfo","players":[str('user')]}])
self._get_game_state().countfnyt += 1
open('countfnyt.txt', 'w').write(str(self._get_game_state().countfnyt))
if self._get_game_state().countfnyt >= len(friends):
#print '######## END #########'
if not hasattr(self._get_game_state(), 'fdend'):
logger.info( u"Возвращаемся домой ОБНОВИТЕ COUNTTFNYT.TXT!!!!!!" )
self._get_events_sender().send_game_events([{"action":"gameState","locationId":"main","type":"gameState"}])
если кто захочет заморочиться этим файликом пишите.
ошибку выдает при повторном закапывании чуда и повторном стуке в елки......нужно как это исправить...
PHP код:
2014-02-28 01:47:38,907 Идем к другу
2014-02-28 01:47:38,908 [BOT]friend1
2014-02-28 01:47:38,908 3/4
2014-02-28 01:47:43,105 Получаем объекты у друга на острове
2014-02-28 01:49:24,532 Нечего копать!
2014-02-28 01:49:24,533 Вскрыли сундуков:
2014-02-28 01:49:24,533 5
2014-02-28 01:49:24,535 поЛожил пряник(ов):
2014-02-28 01:49:24,535 0:0/0 dub: 0
2014-02-28 01:49:24,536 ######### Идем к другу
2014-02-28 01:49:24,536 4/4
2014-02-28 01:49:24,536 #########
Последний раз редактировалось Cheater84; 28.02.2014 в 01:50.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от Cheater84
ошибку выдает при повторном закапывании чуда и повторном стуке в елки......нужно как это исправить...
Ну так правильно... Нужно же отслеживать, кому и куда положил пряник. Это хранится в "твоем" статусе, если не ошибаюсь, то список тех, у кого ты уже закопал монстра, лежит в:
Код:
self._game_state()._get_state().remoteMonsterPit
а елки (под какой елкой и у кого ты оставил пряники) в:
Код:
self._game_state()._get_state().remoteNewYear
Введи проверку при посещении, и будет тебе щастье.
PS. Кстати, это касается ВСЕХ посещений, будь то тыква, столик на День Благодарения или еще что.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Помогите пожалуйста,не могу поставить варить мармелад,варит гарбузики и хоть убей,id по суте должно быть 9,т.к варка гарбузиков на 9-ом рецепте,искал по всем файлам не знаю как изменить,в каком файле что изменять?и как отключить 5-ти минутный урожай,а то надо экономить..)где и как изменить варку рецепта?пишите в скайп плиз,или в личку )
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Хмм.. начал выдавать фразу " Повара отдыхают запустим работать №32617" и после этого бот останавливается. Закончились ресурсы для варки, но почему останавливается вся работа бота? Кто сталкивался с таким?
Последний раз редактировалось wilddodik; 28.02.2014 в 22:08.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от dark-dragon
Секс по телефону, но удовлетворен?
Не пишите бред, надоело читать уже.
Ну извините по другому обьяснить не могу.
У меня бот собирает и задаёт рецепты переходит на др остров... ка вернётся где повара солит и идёт дальше (Не собрав) опять проходит по островам... До ходит до острова с поварами собирает кладет и дальше по островам . И так постоянно! Я хотел узнать можно ли сделать чтоб он ?
1) задавал рецепты
2)солил
3) собирал
за один раз)
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от Kipari40
Ну извините по другому обьяснить не могу.
У меня бот собирает и задаёт рецепты переходит на др остров... ка вернётся где повара солит и идёт дальше (Не собрав) опять проходит по островам... До ходит до острова с поварами собирает кладет и дальше по островам . И так постоянно! Я хотел узнать можно ли сделать чтоб он ?
1) задавал рецепты
2)солил
3) собирал
за один раз)
В game_engine.py настрой. Оставь только варить, солить и собирать.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
[Ссылки могут видеть только зарегистрированные пользователи. ][Ссылки могут видеть только зарегистрированные пользователи. ]
Открытие зомби летто. Помогите)
Последний раз редактировалось Kipari40; 02.03.2014 в 12:57.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
снова Здравствуйте)хотел спросить по поводу одноклассников...скачал библиотеку requests ,установил ....короче покопался не мало и все же я подключился к одноклассникам)))ошибка была в этом
Цитата:
gender=info['gender'],
в 105 строке okutils....кстати еще привязал заодно API для одноклассников...теперь okutils выглядит так:
PHP код:
# encoding=utf-8 from connection import Connection from settings import Settings from odnoklassniki import api import requests import pdb import re import json from game_state.game_types import GameSTART, GameInfo from hashlib import md5
def str2dict(self, val): # Convert "string" cookies to "dict" if type(val) is str: res = {} for tmp in val.replace(' ','').split(';'): k = tmp.split('=')[0] v = tmp.split('=')[1] res[k] = v # print k,v return res else: return val
def getAppParams(self, session_cookies=None): # Called from: local-> # print 'FLOW[okutils.py]: OK():getAppParams()' if session_cookies is None: session_cookies = self._getSessionCookies() # OK cookies # Step 4 - get App Params html = requests.get('http://www.odnoklassniki.ru/games/zm', cookies=self.str2dict(session_cookies)).text params = None if html: matcher = re.compile('.*zombiefarm.html\?(.*?)"') for line in html.split('\n'): match = matcher.match(line) if match is not None: params = match.group(1) break if params is not None: orig_params = params # Save unparsed params pairs = params.split('&') params = {} for pair in pairs: key = pair.split('=')[0] value = pair.split('=')[1] params[key] = value # print key, value return params # Return Dict of params
def get_time_key(self): # Called from game_engine.py->get_time() # print 'FLOW[okutils.py]: OK():get_time_key()' # print self.__params del self.__params['sig'] # return '&'.join([k + '=' + v for k, v in self.__params.iteritems()]) return self.__params['session_key']
def _getFriendsList(self): post = { 'new_sig': 1, 'session_key': self.__params['session_key'], 'application_key': self.__params['application_key'], 'format': 'Json' } post_keys = sorted(post.keys()) param_str = "".join(["%s=%s" % (str(key), api._encode(post[key])) for key in post_keys]) param_str += self.__params['session_secret_key'] sign = md5(param_str).hexdigest().lower() post.update({'sig': sign}) info = requests.post('http://api.odnoklassniki.ru/api/friends/getAppUsers', data=post, cookies=self.str2dict(self._credentials.getSessionCookies())).json()['uids'] # print(info) return info
def _validateSessionCookies(self, session_cookies): # Check if cookies are still valid # print 'FLOW[okutils.py]: OK():_validateSessionCookies()' valid = False if session_cookies is not None: # If cookies are not empty valid = self.getAppParams(session_cookies) is not None # return valid
def _getSessionCookies(self): # Get OK session cookies (Steps 1-2-3) # print 'FLOW[okutils.py]: OK():_getSessionCookies()' session_cookies = self._credentials.getSessionCookies() # If cookies exist in settings.ini cookies_are_valid = self._validateSessionCookies(session_cookies) if not cookies_are_valid: username = self._credentials.getUserEmail() # settings.py password = self._credentials.getUserPassword() # settings.py # Step 2 - get encrypted URL post = { 'st.posted':'set', 'st.redirect': '%2Fgames%2Fzm', 'st.originalaction': u'http://www.odnoklassniki.ru/dk?cmd=AnonymLogin&st.cmd=anonymLogin', 'st.fJS': 'enabled', 'st.email': username, 'st.password': password, 'st.remember': 'on', 'button_go': 'Sign in'}
sslurl = requests.post('https://www.odnoklassniki.ru/https', data=post, allow_redirects=False, verify=True).headers['location'] # Step 3 - call encrypted URL to get cookies session_cookies = requests.get(sslurl, allow_redirects=False).cookies self.__ok_cookies = session_cookies # Convert cookies to String format session_cookies_str = 'AUTHCODE=' + session_cookies['AUTHCODE'] + ';' + \ 'JSESSIONID=' + session_cookies['JSESSIONID'] + ';' + \ 'tOFNE=true; tNotif=true; tDisc=true; BANNER_LANG=ru' # Save cookies to settings.ini self._credentials.setSessionCookies(session_cookies_str) ok_cookies = self.str2dict(session_cookies) return session_cookies # Return cookies in Dict format