class PickFromFarm(BaseActor):
def perform_action(self):
#СОБИРАЕМ ПРОДУКЦИЮ C ФЕРМ(БОТАНИЧЕСКИЙ САД, ФЕРМА)
factorys = self._get_game_location().get_all_objects_by_type('farm')
for factory in factorys:
if factory.results!=[]:
for result_id in list(factory.results):
count=0
result = self._get_item_reader().get(result_id.item[1:])
name = result.name
self.cprint(u'5Подбираем _%s^6_Штук %s'%(name.upper(), result_id.count))
event_pick={"type":"item","count":result_id.count,"objId":factory.id,"action":"pick","itemId":result_id.item[1:]}
#event_pick={"type":"item","count":count,"objId":factory.id,"action":"pick","itemId":material_id.item[1:]}
self._get_events_sender().send_game_events([event_pick])
self._get_game_state().add_from_storage(result_id.item,1)
factory.results.remove(result_id)
если кто-то занимается разработкой данного бота и если кто-то допетрил как сделать вскормку животины в ферме и птицеферме поделитесь кодиком ;=)
Добавлено через 4 часа 13 минут
Цитата:
Сообщение от Triumf2016
всем привет, если конечно кто-либо здесь бывает, выкладываю код для сбора продукции из ботанического сада и фермы(скот)
прописываем класс в pickups.py и импортируем этот класс в game_engine
class PickFromFarm(BaseActor):
def perform_action(self):
#СОБИРАЕМ ПРОДУКЦИЮ C ФЕРМ(БОТАНИЧЕСКИЙ САД, ФЕРМА)
factorys = self._get_game_location().get_all_objects_by_type('farm')
for factory in factorys:
if factory.results!=[]:
for result_id in list(factory.results):
count=0
result = self._get_item_reader().get(result_id.item[1:])
name = result.name
self.cprint(u'5Подбираем _%s^6_Штук %s'%(name.upper(), result_id.count))
event_pick={"type":"item","count":result_id.count,"objId":factory.id,"action":"pick","itemId":result_id.item[1:]}
#event_pick={"type":"item","count":count,"objId":factory.id,"action":"pick","itemId":material_id.item[1:]}
self._get_events_sender().send_game_events([event_pick])
self._get_game_state().add_from_storage(result_id.item,1)
factory.results.remove(result_id)
если кто-то занимается разработкой данного бота и если кто-то допетрил как сделать вскормку животины в ферме и птицеферме поделитесь кодиком ;=)
сделал сбор золотых памятников животных из ферм, заепся делать велосипеды, так как у типа "drove" нет атрибута item, id и так далее,в общем сделал прямо ; -)
Народ, кто-нибудь знает, что на ОК происходит?Ошибки те же, что и выше.Разве что до этого кое-как удавалось с ними справляться.
Может кто-то придумал рабочий okutils ?
Народ, кто-нибудь знает, что на ОК происходит?Ошибки те же, что и выше.Разве что до этого кое-как удавалось с ними справляться.
Может кто-то придумал рабочий okutils ?
def str2dict(self, val):
if not type(val) is str:return val
res=dict((tmp.split('=')[0],tmp.split('=')[1]) for tmp in val.replace(' ','').split(';') if tmp)
return res
def _validateSessionCookies(self, session_cookies):
if session_cookies is None:return False
if not self.getAppParams(session_cookies):return False
return True
def _encode(self,s):
if isinstance(s, (dict, list, tuple)):
s = json.dumps(s, ensure_ascii=False, encoding='utf8')
if isinstance(s, unicode):s = s.encode('utf8')
return s
def _post_update_sig(self,post):
post_keys = sorted(post.keys())
param_str = "".join(["%s=%s" % (str(key), self._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})
return post
def getAppParams(self, session_cookies=None):
if session_cookies is None:session_cookies = self._getSessionCookies()
session_cookies=self.str2dict(session_cookies)
self.__session_cookies=session_cookies
html = requests.get('https://ok.ru', cookies=session_cookies).text
requested = str(re.findall(r'gwtHash:"(.*?)"', html)[0])
post={'gwt.requested':requested}
get_params={'gwt.requested':requested,'st.cmd':'appMain','st.appId':self._app_id()}
request_url='https://ok.ru/game/'+self._game_id()
html = requests.post(request_url, data=post,cookies=session_cookies,params=get_params)
params = None
if not html:return False
matcher = re.compile('.*klone.html\?(.*?)"')
for line in html.text.split('\n'):
match = matcher.match(line)
if match is not None:
params = match.group(1)
break
if params is None:return False
pairs = params.split('&')
params = dict((pair.split('=')[0],pair.split('=')[1]) for pair in pairs)
return params
# рулетка лас вегаса
if hasattr(self._get_game_state().get_state(),'carriagePlaces'):
lasVegas=obj2dict(self._get_game_state().get_state().carriagePlaces)
if len(lasVegas)>0:
for las in lasVegas:
vegas=lasVegas[las]
rulette = self._get_item_reader().get(vegas['item']).roulette
self.cprint(u"2 Кручу рулетку^6_'Лас-Вегас'^2_")
las_Vegas={"type":"item","extraId":las,"action":"roulette","itemId":vegas['item'][1:],"id":None}
self._get_events_sender().send_game_events([las_Vegas])
self._get_game_state().get_state().carriagePlaces=dict2obj({})
#print obj2dict(lasVegas)
buildings = self._get_game_location().get_all_objects_by_type('playBuilding')
for building in list(buildings):
building_item = self._get_item_reader().get(building.item)
for game in building_item.games:
game_id = game.id
#print game_id
if game_id in next_play_times:
next_play = int(next_play_times[game_id])
#Крутить рулетку Поймай удачу за одну монетку))
item_count=self._get_game_state().count_in_storage ('@CR_LUCKY_COIN')
if game_id == 'B_EASTER_2015_ROULETTE' and item_count>=1:
#raw_input(game_id)
#item_count=self._get_game_state().count_in_storage ('@CR_LUCKY_COIN')
self._get_game_state().remove_from_storage('@CR_LUCKY_COIN' ,1)
play_cost = None
#Крутить рулетку за 4 энергии)
energy = self._get_game_state().get_state().energy
if game_id == 'B_KLONE_BIRTH_2016_ROULETTE_01_1' and energy>=4:
self._get_game_state().get_state().energy-=4
play_cost = None
#Крутить рулетку Кукольный театр за одну землянику
item_count=self._get_game_state().count_in_storage ('@S_STRAWBERRY')
if game_id == 'B_EASTER_2016_BUILDING_ROULETTE' and item_count>=1:
#raw_input(game_id)
#item_count=self._get_game_state().count_in_storage ('@CR_LUCKY_COIN')
self._get_game_state().remove_from_storage('@S_STRAWBERRY' ,1)
play_cost = None
if next_play is None: get_next_play = False
else: get_next_play = self._get_timer().has_elapsed(next_play)
if ((play_cost is None) and ((next_play and get_next_play) or ((not next_play) and (game.level == building.level)))):
self.cprint(u"7 Кручу рулетку^6_'%s'^2_"%building_item.name)
roll = GamePlayGame(building.id, game_id)
self._get_events_sender().send_game_events([roll])
##############################
from ctypes import windll
import sys