Zombot (Клиент для игры Зомби ферма) [Обсуждение] - Свободное обсуждение - Ваши идеи, вопросы и ответы на тему браузерных игр и социальных сетей
21.09.2013, 13:05
#61
Разведчик
Регистрация: 13.07.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Подскажите как включит в боте что бы он рулетки крутил
21.09.2013, 13:16
#62
Разведчик
Регистрация: 17.06.2013
Сообщений: 49
Популярность: -106
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Stels25 , по стандарту крутит рулетки.
kutc58 , если я заменю у себя game_engine.py на этот, то так же перестанет запускаться бот. Я же говорил, у всех game_engine.py разный, почти все используют разные версии ботов.
________________
Помогите исправить репу
Пользователь сказал cпасибо:
21.09.2013, 13:19
#63
Разведчик
Регистрация: 22.11.2010
Сообщений: 14
Популярность: 2
Сказал(а) спасибо: 7
Поблагодарили 2 раз(а) в 1 сообщении
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Reydan-46 понятненько а можеш скинуть свого бота
скачал последнего замнил запускатеца но с тойже ошибкой
21.09.2013, 14:49
#64
Разведчик
Регистрация: 05.09.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
спс робит!!!!!!!!!!
21.09.2013, 15:28
#65
Разведчик
Регистрация: 19.07.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
проблема была в куках! не знаю почему, но они сначала создались не правильными.....
21.09.2013, 17:46
#66
Разведчик
Регистрация: 12.06.2011
Сообщений: 22
Популярность: 12
Сказал(а) спасибо: 13
Поблагодарили 1 раз в 1 сообщении
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Download items...
Items downloaded!
Exception in thread Thread-1:
Traceback (most recent call last):
File "c:\Python27\lib\threading.py", line 808, in __bootstrap_inner
self.run()
File "c:\bots\app.py", line 35, in run
self.run_function(self)
File "main.py", line 79, in run_game
Game(site, settings, UserPrompt(gui_input), gui_input=gui_input).start(
File "c:\bots\game_engine.py", line 453, in start
self.save_game_state(start_response)
File "c:\bots\game_engine.py", line 487, in save_game_state
self.__game_state_ = GameState(start_response, self.__itemReader)
File "c:\bots\game_engine.py", line 233, in __init__
occupied_brain_count = self.__player_brains.get_occupied_brains_count()
File "c:\bots\game_state\brains.py", line 39, in get_occupied_brains_coun
zombie_types)
File "c:\bots\game_engine.py", line 58, in get_all_objects_by_types
for game_object in self.get_game_objects():
File "c:\bots\game_engine.py", line 51, in get_game_objects
return self.get_game_location().gameObjects
AttributeError: 'GameLocation' object has no attribute 'gameObjects'
в чем косяк? что изменить ?
21.09.2013, 18:33
#67
Разведчик
Регистрация: 03.11.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Люди добрые не оставьте без ответа
Помогите как правильно и где прописать чтобы рецепты для варки закидывались, если не жалко поделитесь файликом(ами).
21.09.2013, 18:36
#68
Разведчик
Регистрация: 19.07.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
А с тем, чтобы бот копал у друзей, кто-нибудь разобрался?
Как получилось?
21.09.2013, 19:03
#69
Разведчик
Регистрация: 30.04.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
maxmydjer ,
Цитата:
Мой костыль =)
В файле game_engine.py изменяем:
Класс GameLocation() процедуру __init__() на эту
Код:
def __init__(self, item_reader, game_location, game_objects):
self.__item_reader = item_reader
self.__game_location = game_location
self.__game_objects = game_objects
self.__pickups = []
Процедуру get_game_objects() на эту
Код:
def get_game_objects(self):
return self.__game_objects
Класс GameState() процедуру set_game_loc() на эту
Код:
def set_game_loc(self, game_state_event):
self.__game_loc = GameLocation(self.__item_reader,
game_state_event.location,game_state_event.gameObjects)
for attr, val in game_state_event.__dict__.iteritems():
self.__game_state.__setattr__(attr, val)
Пользователь сказал cпасибо:
21.09.2013, 19:15
#70
Разведчик
Регистрация: 17.06.2013
Сообщений: 49
Популярность: -106
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Ammoni , удобрять кое как, с косяками сделали, а вот копать никто не пробывал.
polkowoy , в settings.ini есть настройка selected_recipe_id
________________
Помогите исправить репу
21.09.2013, 20:09
#71
Разведчик
Регистрация: 19.07.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
21.09.2013, 20:25
#72
Разведчик
Регистрация: 30.04.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
21.09.2013, 20:28
#73
Разведчик
Регистрация: 03.11.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
В settings.ini прописал:
selected_recipe_id = [u'RECIPE_08']
правильно?
Добавлено через 2 минуты
Выглядит все так:
[global_settings]
ignore_errors = true
log_all = false
[001]
selected_recipe_id = [u'RECIPE_08']
user_email = ******
user_password = *******
site = mr
Добавлено через 8 минут
Ammoni ,
LLlAKAJI , научите как варево сделать!!!
Последний раз редактировалось polkowoy; 21.09.2013 в 20:36 .
Причина: Добавлено сообщение
21.09.2013, 20:48
#74
Разведчик
Регистрация: 19.09.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Reydan-46 , спс за помощь. я поторопился с проблемой. я нашел версию бота к которой подошли исправления это zombot-1-patch-1
всем советую заглядывать [Ссылки могут видеть только зарегистрированные пользователи. ] и выкладывать свои версии.
И пожалуйста, указывайте для какой версии код пишите.
21.09.2013, 22:16
#75
Разведчик
Регистрация: 22.11.2010
Сообщений: 14
Популярность: 2
Сказал(а) спасибо: 7
Поблагодарили 2 раз(а) в 1 сообщении
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
народ выложите кто небудь готового бота ато нехрена не получаетца уже все перепробовал
Добавлено через 1 час 43 минуты
Цитата:
# coding=utf-8
import random
import ssl
import message_factory
from message_factory import Session
import vkontakte
from settings import Settings
import vkutils
import logging
import time
from game_state.item_reader import GameItemReader
from game_state.game_event import dict2obj, obj2dict
from game_state.game_types import GameEVT, GameTIME, GameSTART, \
GameInfo, \
GameFertilizePlant, GamePlayGame, \
GameStartGainMaterial, GameStartTimeGainEvent
import pprint
from game_actors_and_handlers.gifts import GiftReceiverBot, AddGiftEventHandler
from game_actors_and_handlers.plants import HarvesterBot, SeederBot, \
PlantEventHandler, GameSeedReader
from game_actors_and_handlers.roulettes import RouletteRoller, \
GameResultHandler
from game_actors_and_handlers.wood_graves import WoodPicker, \
WoodTargetSelecter
from game_actors_and_handlers.cook_graves import BrewPicker
from game_actors_and_handlers.digger_graves import BagsPicker, \
TimeGainEventHandler
from game_actors_and_handlers.stone_graves import StonePicker, \
StoneTargetSelecter
from game_actors_and_handlers.workers import GainMaterialEventHandler
from game_actors_and_handlers.pickups import Pickuper, AddPickupHandler,\
BoxPickuper
from game_actors_and_handlers.location import ChangeLocationBot, GameStateEventHandler
from game_state.brains import PlayerBrains
import socket
import urllib2
logger = logging.getLogger(__name__)
class GameLocation():
def __init__(self, item_reader, game_location, game_objects):
self.__item_reader = item_reader
self.__game_location = game_location
self.__game_objects = game_objects
self.__pickups = []
def append_object(self, obj):
self.get_game_objects().append(obj)
def get_game_location(self):
return self.__game_location
def get_game_objects(self):
return self.__game_objects
def get_location_id(self):
return self.__game_location.id
def get_all_objects_by_types(self, object_types):
objects = []
for game_object in self.get_game_objects():
item = self.__item_reader.get(game_object.item)
if game_object.type in object_types or item.type in object_types:
objects.append(game_object)
return objects
def get_all_objects_by_type(self, object_type):
return self.get_all_objects_by_types([object_type])
def get_object_by_id(self, obj_id):
for game_object in self.get_game_objects():
if game_object.id == obj_id:
return game_object
return None
def log_game_objects(self):
for gameObject in self.get_game_objects():
# if gameObject.type != 'base':
logger.info(obj2dict(gameObject))
def remove_object_by_id(self, obj_id):
for game_object in list(self.get_game_objects()):
if game_object.id == obj_id:
self.get_game_objects().remove(game_object)
def get_pickups(self):
return tuple(self.__pickups)
def add_pickups(self, pickups):
self.__pickups += pickups
def remove_pickup(self, pickup):
self.__pickups.remove(pickup)
class GameTimer(object):
def __init__(self):
self._client_time = 0
self._start_time = 0
def _get_client_time(self):
random.seed()
self._client_time = long(random.randrange(2800, 4000))
self._start_time = time.time()
return self._client_time
def _get_current_client_time(self):
'''
returns the current in-game time (in milliseconds)
'''
currentTime = self._client_time
currentTime += (time.time() - self._start_time) * 1000
return currentTime
def _add_sending_time(self, sending_time):
self._client_time += sending_time
def has_elapsed(self, time):
return int(time) <= self._get_current_client_time()
class GameEventsSender(object):
def __init__(self, request_sender):
self.__events_to_handle = []
self.__request_sender = request_sender
def print_game_events(self):
if len(self.__events_to_handle) > 0:
logger.debug("received events: %s" % self.__events_to_handle)
def get_game_events(self):
return list(self.__events_to_handle)
def send_game_events(self, events=[]):
'''
Returns key (string) and time (int)
'''
if len(events) > 0:
logger.debug("events to send: %s" % events)
command = GameEVT(events=events)
game_response = self.__request_sender.send(command)
self.__events_to_handle += game_response.events
def remove_game_event(self, event):
self.__events_to_handle.remove(event)
class GameInitializer():
def __init__(self, timer, site):
self.__timer = timer
self.__site = site
def create_events_sender(self):
return GameEventsSender(self.__request_sender)
def start(self):
logger.info('Загружаем остров...')
# send TIME request ([Ссылки могут видеть только зарегистрированные пользователи. ])
# handle redirect (save new url: [Ссылки могут видеть только зарегистрированные пользователи. ])
# parse auth key and time id
session_key, server_time = self.get_time()
# send START
start_response = self.start_game(server_time, session_key)
return start_response
def get_time(self):
'''
Returns key (string) and time (int)
'''
self.__request_sender = self.__create_request_sender()
key = self.__site.get_time_key()
command = GameTIME(key=key)
response = self.__request_sender.send(command)
return response.key, response.time
def __create_request_sender(self):
api_user_id, game_auth_key, api_access_token, connection = self.__site.get_game_params()
self.__api_access_token = api_access_token
self.__connection = connection
self.__session = Session(api_user_id, game_auth_key,
client_version=Game.CLIENT_VERSION)
factory = message_factory.Factory(self.__session, None)
request_sender = RequestSender(factory,
self.__connection)
self.__factory = factory
return request_sender
def start_game(self, server_time, session_key):
self.__factory.setRequestId(server_time)
self.__factory.setSessionKey(session_key)
client_time = self.__timer._get_client_time()
start_time = time.time()
command = self.__site.create_start_command(server_time, client_time)
sending_time = (time.time() - start_time) * 1000
self.__timer._add_sending_time(sending_time)
return self.__request_sender.send(command)
def _getUserInfo(self):
'''
returns user info using vk api
'''
# get vk user info
api = vkontakte.api.API(token=self.__api_access_token)
info = api.getProfiles(
uids=self.__session.getUserId(), format='json',
fields='bdate,sex,first_name,last_name,city,countr y')
info = info[0]
if 'bdate' in info:
bdate = info['bdate']
else:
bdate = None
my_country = api.places.getCountryById(cids=int(info['country']))[0]
info['country'] = my_country['name']
my_city = api.places.getCityById(cids=int(info['city']))[0]
info['city'] = my_city['name']
game_info = GameInfo(city=info['city'], first_name=info['first_name'],
last_name=info['last_name'],
uid=long(info['uid']), country=info['country'],
sex=long(info['sex']), bdate=bdate)
return game_info
class GameState():
def __init__(self, start_response, item_reader):
self.__item_reader = item_reader
self.__game_state = start_response.state
game_state_event = start_response.params.event
self.set_game_loc(game_state_event)
self.__player_brains = PlayerBrains(self.__game_state,
self.get_game_loc(),
item_reader)
total_brain_count = self.__player_brains.get_total_brains_count()
occupied_brain_count = self.__player_brains.get_occupied_brains_count()
logger.info("РњРѕР·РіРё: %d/%d" % (occupied_brain_count, total_brain_count))
def set_game_loc(self, game_state_event):
self.__game_loc = GameLocation(self.__item_reader,
game_state_event.location,game_state_event.gameObj ects)
for attr, val in game_state_event.__dict__.iteritems():
self.__game_state.__setattr__(attr, val)
def get_location_id(self):
return self.get_state().locationId
def get_game_loc(self):
return self.__game_loc
def get_state(self):
return self.__game_state
def get_brains(self):
return self.__player_brains
class Game():
CLIENT_VERSION = long(1362084734)
def __init__(self, site,
user_prompt, game_item_reader=None, gui_input=None):
logger.info('Логинимся...')
self.__timer = GameTimer()
self.__game_initializer = GameInitializer(self.__timer, site)
settings = Settings()
self.__ignore_errors = settings.get_ignore_errors()
# load items dictionary
if game_item_reader is None:
self.__itemReader = GameItemReader()
self.__itemReader.download('items.txt')
self.__itemReader.read('items.txt')
else:
self.__itemReader = game_item_reader
self.__user_prompt = user_prompt
self.__selected_seed = None
self.__selected_location = None
self.__receive_gifts_with_messages = False
self.__receive_non_free_gifts = False
self.__gui_input = gui_input
def select_plant_seed(self):
seed_reader = GameSeedReader(self.__itemReader)
available_seeds = seed_reader.get_avail_seed_names(self.__game_state _)
if self.__selected_seed is None:
seed_name = self.__user_prompt.prompt_user(u'Семена для грядок:',
available_seeds)
self.__selected_seed = seed_reader.get_seed_item(seed_name)
def select_location(self):
locations = {}
for location in self.get_game_state().locationInfos:
name = self.__itemReader.get(location.locationId).name
locations[name] = location
if locations:
location_name = self.__user_prompt.prompt_user(u'Выберите остров:',
locations.keys())
if location_name in locations:
self.__selected_location = locations[location_name].locationId
def running(self):
if self.__gui_input:
running = self.__gui_input.running
else:
running = lambda: True
return running()
def start(self):
while(self.running()):
try:
start_response = self.__game_initializer.start()
self.__game_events_sender = self.__game_initializer.create_events_sender()
self.save_game_state(start_response)
# self.select_location()
self.select_plant_seed()
self.create_all_actors()
# TODO send getMissions
# TODO handle getMissions response
self.eventLoop()
except urllib2.HTTPError, e:
raise e
except (socket.timeout, urllib2.HTTPError, urllib2.URLError):
seconds = 3
logger.error('Timeout occurred, retrying in %s seconds...'
% seconds)
time.sleep(seconds)
except (socket.error, ssl.SSLError) as e:
seconds = 10
logger.error('Socket error occurred, retrying in %s seconds...'
% seconds)
time.sleep(seconds)
except message_factory.GameError, e:
if not self.__ignore_errors:
raise e
def save_game_state(self, start_response):
# parse game state
self.__game_state_ = GameState(start_response, self.__itemReader)
def get_game_loc(self):
return self.__game_state_.get_game_loc()
def get_game_state(self):
return self.__game_state_.get_state()
def eventLoop(self):
'''
in a loop, every 30 seconds
send EVT request
handle EVT response
'''
interval = 30
seconds = interval
while(self.running()):
if seconds >= interval:
self.perform_all_actions()
seconds = 0
time.sleep(0.1)
seconds += 0.1
def create_all_actors(self):
receive_options = {'with_messages': self.__receive_gifts_with_messages,
'non_free': self.__receive_non_free_gifts}
options = {'GiftReceiverBot': receive_options,
'SeederBot': self.__selected_seed,
'ChangeLocationBot': self.__selected_location,
}
events_sender = self.__game_events_sender
timer = self._get_timer()
item_reader = self.__itemReader
game_state = self.__game_state_
actor_classes = [
#ChangeLocationBot,
Pickuper,
BoxPickuper,
GiftReceiverBot,
HarvesterBot,
SeederBot,
RouletteRoller,
WoodPicker,
BrewPicker,
BagsPicker,
WoodTargetSelecter,
StonePicker,
StoneTargetSelecter,
]
self.__actors = []
for actor_class in actor_classes:
self.__actors.append(
actor_class(item_reader, game_state, events_sender, timer,
options))
def perform_all_actions(self):
'''
Assumes that create_all_actors is called before
'''
for actor in self.__actors:
actor.perform_action()
self.handle_all_events()
self.__game_events_sender.send_game_events()
self.handle_all_events()
def handle_all_events(self):
self.__game_events_sender.print_game_events()
for event in self.__game_events_sender.get_game_events():
self.handleEvent(event)
def handleEvent(self, event_to_handle):
if event_to_handle.action == 'addGift':
AddGiftEventHandler(self.get_game_state()).handle( event_to_handle)
elif event_to_handle.action == 'add':
if event_to_handle.type == 'pickup':
AddPickupHandler(self.get_game_loc()).handle(event _to_handle)
elif event_to_handle.type == GameFertilizePlant.type:
PlantEventHandler(self.get_game_loc()).handle(even t_to_handle)
elif event_to_handle.type == GamePlayGame.type:
GameResultHandler(self.__itemReader,
self.get_game_loc()).handle(event_to_handle)
elif event_to_handle.type == GameStartGainMaterial.type:
GainMaterialEventHandler(self.__itemReader, self.get_game_loc(),
self.__timer).handle(event_to_handle)
elif event_to_handle.type == GameStartTimeGainEvent.type:
TimeGainEventHandler(self.__itemReader, self.get_game_loc(),
self.__timer).handle(event_to_handle)
elif event_to_handle.type == 'gameState':
GameStateEventHandler(self.__game_state_).handle(e vent_to_handle)
else:
self.logUnknownEvent(event_to_handle)
self.__game_events_sender.remove_game_event(event_ to_handle)
def logUnknownEvent(self, event_to_handle):
logger = logging.getLogger('unknownEventLogger')
logger.info(pprint.pformat(obj2dict(event_to_handl e)))
def _get_timer(self):
return self.__timer
def get_request_sender(self):
return self.__request_sender
class RequestSender(object):
def __init__(self, message_factory, connection):
self.__factory = message_factory
self.__connection = connection
def send(self, data):
data = obj2dict(data)
assert 'type' in data
request = self.__factory.createRequest(data)
return dict2obj(request.send(self.__connection))
def set_url(self, url):
self.__connection.setUrl(url)
def clear_session(self):
self.__factory.setSessionKey(None)
def reset_request_id(self):
request_id = message_factory._getInitialId()
self.__factory.setRequestId(request_id)
def set_auth_key(self, auth_key):
self.__factory.set_auth_key(auth_key)
переделал перестал ходить по островам
Последний раз редактировалось kutc58; 22.09.2013 в 00:00 .
Причина: Добавлено сообщение
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 22:38 .