Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Zombot (Клиент для игры Зомби ферма) [Обсуждение]

-

Свободное обсуждение

- Ваши идеи, вопросы и ответы на тему браузерных игр и социальных сетей

Ответ
 
Опции темы
Старый 17.01.2015, 16:01   #3871
 Разведчик
Аватар для Xmaxudigun
 
Xmaxudigun никому не известный тип
Регистрация: 13.08.2013
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

File "c:\bot\pirate\kuz\src\game_actors_and_handlers\wo rkers.py", line 110, in
handle
gameObject.target = dict2obj({'id': event_to_handle.targetId})
AttributeError: 'NoneType' object has no attribute 'target'
Периодически обваливается бот, подскажите куда глядеть? с таймером связано?
  Ответить с цитированием
Старый 17.01.2015, 16:05   #3872
 Разведчик
Аватар для polkowoy
 
polkowoy никому не известный тип
Регистрация: 03.11.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Уважаемые гуру!

Помогите пож с возникающей ошибкой при работе бота
[Ссылки могут видеть только зарегистрированные пользователи. ]

файлы прилагаются
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]

Последний раз редактировалось polkowoy; 17.01.2015 в 16:17.
  Ответить с цитированием
Старый 17.01.2015, 16:40   #3873
 Разведчик
Аватар для ruslanische
 
ruslanische никому не известный тип
Регистрация: 22.03.2012
Сообщений: 3
Популярность: 12
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
File "c:\bot\pirate\kuz\src\game_actors_and_handlers\wo rkers.py", line 110, in
handle
gameObject.target = dict2obj({'id': event_to_handle.targetId})
AttributeError: 'NoneType' object has no attribute 'target'
Периодически обваливается бот, подскажите куда глядеть? с таймером связано?

Похоже я сталкнулся с похожей проблемой. Первый раз запустил бота на ночь рубить дрова. Утром обнаружил, что после вырубки дерева бот остановился. Я думаю, что обработка евента gainMaterial неправильная.
Что происходит:
- отравляется евент на рубку
- приходит евент gainMaterial с target
- после добычи ресурса опять приходит евент gainMaterial с target
...
- кончается ресурс, приходит евент gainMaterial без таргет:
{"type":"gainMaterial","action":"stop","objId":87, "startCounter":85,"doneCounter":85}
- бот не понимает, что ресурс кончился и нужно рубить другое дерево

Что могло произойти (и что у меня во время отладки до этого было):

- отравляется евент на рубку
- приходит евент gainMaterial с target
- после добычи ресурса опять приходит евент gainMaterial с target
...
- кончается ресурс, приходит евент gainMaterial с target
- бот понимает, что дерево кончилось и отправляется рубить другое дерево
приходит евент gainMaterial без таргет:
{"type":"gainMaterial","action":"stop","objId":87, "startCounter":85,"doneCounter":85}
- бот понимает, что ресурс кончился и нужно рубить другое дерево

Я думаю, что надо сделать так:
если приходит {"type":"gainMaterial","action":"stop","objId":87, "startCounter":85,"doneCounter":85},
то надо смотреть на параметры startCounter и doneCounter, если они равны, то ресурс закончился. Видимо не нужно обрабатывать jobEndTime, нужно тестировать.

Последний раз редактировалось ruslanische; 17.01.2015 в 16:42.
  Ответить с цитированием
Старый 17.01.2015, 16:53   #3874
 Разведчик
Аватар для greyzza
 
greyzza никому не известный тип
Регистрация: 25.02.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от XmaxudigunПосмотреть сообщение
File "c:\bot\pirate\kuz\src\game_actors_and_handlers\wo rkers.py", line 110, in
handle
gameObject.target = dict2obj({'id': event_to_handle.targetId})
AttributeError: 'NoneType' object has no attribute 'target'
Периодически обваливается бот, подскажите куда глядеть? с таймером связано?

в данном случае когда пришел ответ от сервера то бот на локе не обнаружил работника , то есть скорее всего уже перешел на другой остров
из ошибки же видно AttributeError: 'NoneType' object has no attribute 'target', а gameObject мы обьявили: gameObject = self.__game_location.get_object_by_id(event_to_han dle.objId) нужно либо через try,except ,либо если gameObject is None return ну и проверку на атрибут 'target'

Добавлено через 2 минуты
Цитата:
Сообщение от ruslanischeПосмотреть сообщение
Похоже я сталкнулся с похожей проблемой. Первый раз запустил бота на ночь рубить дрова. Утром обнаружил, что после вырубки дерева бот остановился. Я думаю, что обработка евента gainMaterial неправильная.
Что происходит:
- отравляется евент на рубку
- приходит евент gainMaterial с target
- после добычи ресурса опять приходит евент gainMaterial с target
...
- кончается ресурс, приходит евент gainMaterial без таргет:
{"type":"gainMaterial","action":"stop","objId":87, "startCounter":85,"doneCounter":85}
- бот не понимает, что ресурс кончился и нужно рубить другое дерево

Что могло произойти (и что у меня во время отладки до этого было):

- отравляется евент на рубку
- приходит евент gainMaterial с target
- после добычи ресурса опять приходит евент gainMaterial с target
...
- кончается ресурс, приходит евент gainMaterial с target
- бот понимает, что дерево кончилось и отправляется рубить другое дерево
приходит евент gainMaterial без таргет:
{"type":"gainMaterial","action":"stop","objId":87, "startCounter":85,"doneCounter":85}
- бот понимает, что ресурс кончился и нужно рубить другое дерево

Я думаю, что надо сделать так:
если приходит {"type":"gainMaterial","action":"stop","objId":87, "startCounter":85,"doneCounter":85},
то надо смотреть на параметры startCounter и doneCounter, если они равны, то ресурс закончился. Видимо не нужно обрабатывать jobEndTime, нужно тестировать.

смотреть надо action, если start то там будет таргет ,если стоп то таргета соответственно нет

Последний раз редактировалось greyzza; 17.01.2015 в 17:02. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 17.01.2015, 16:57   #3875
 Разведчик
Аватар для ruslanische
 
ruslanische никому не известный тип
Регистрация: 22.03.2012
Сообщений: 3
Популярность: 12
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Щас поставил рубить дерево с 1 ресурсом, оно вырубилось и бот пошел рубить следущее
Код:
request:
{"action": "gain", "type": "item", "objId": -183, "extraId": 87}
response:
{"type":"gainMaterial","action":"start","objId":87,"startCounter":97,"doneCounter":96,"jobStartTime":"49695","jobEndTime":"349695","targetId":-183}

request:
[]
response: 
{"type":"gainMaterial","action":"stop","objId":87,"startCounter":97,"doneCounter":97}

request:
{"action": "pick", "itemId": "S_19", "type": "item", "objId": 87}
response: []

request:
 {"action": "gain", "type": "item", "objId": -263, "extraId": 87}
response:
{"type":"gainMaterial","action":"start","objId":87,"startCounter":98,"doneCounter":97,"jobStartTime":"359462","jobEndTime":"659462","targetId":-263}
Чет я не догоняю, чую, что ошибка в алгоритме все же...
  Ответить с цитированием
Старый 17.01.2015, 17:13   #3876
 Разведчик
Аватар для greyzza
 
greyzza никому не известный тип
Регистрация: 25.02.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

в общем у меня вот таким образом сделано, ни одной проблемы не возникает
PHP код:
class GainMaterialEventHandler(object):

    
def __init__(selfitem_readergame_location,timer):
        
self.__item_reader item_reader
        self
.__game_location game_location
        self
.__timer timer

    def _get_timer
(self):
        return 
self.__timer

    def get_game_loc
(self):
        return 
self.__game_location

    def handle
(selfevent_to_handle):
        
gameObject self.__game_location.get_object_by_id(event_to_handle.objId)
        if 
not gameObject:return
        
self.updateJobDone(gameObject)
        if 
event_to_handle.action == 'start':
            
gameObject.target dict2obj({'id'event_to_handle.targetId})
            
gameObject.jobStartTime event_to_handle.jobStartTime
            gameObject
.jobEndTime event_to_handle.jobEndTime
        elif event_to_handle
.action == 'stop':
            
delattr(gameObject,'target')
            
delattr(gameObject,'jobStartTime')
            
delattr(gameObject,'jobEndTime')

    
def updateJobDone(selfwood_grave):
        if 
not hasattr(wood_grave'jobEndTime'):return
        if 
not hasattr(wood_grave'target'):return
        
target_id wood_grave.target.id
        target 
self.get_game_loc().get_object_by_id(target_id)
        
target.materialCount -= 1
        target_item 
self.__item_reader.get(target.item)
        
wood_grave.materials.append(target_item.material)
        if 
target.materialCount == 0:
            
box_item self.__item_reader.get(target_item.box)
            
new_obj dict2obj({'item''@' box_item.id,'type'GamePickup.type,'id'target_id})
            
self.get_game_loc().remove_object_by_id(target_id)
            
self.get_game_loc().append_object(new_obj)
            print 
u' "%s" превращён в "%s"' %(target_item.name.upper(), box_item.name
  Ответить с цитированием
Старый 17.01.2015, 17:22   #3877
 Разведчик
Аватар для ruslanische
 
ruslanische никому не известный тип
Регистрация: 22.03.2012
Сообщений: 3
Популярность: 12
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
в общем у меня вот таким образом сделано, ни одной проблемы не возникает

Возможно проблема в том, что я после отправки евента жду результат в цикле. Т.е. после отправки "action": "gain" жду ответ "type":"gainMaterial". И вот ночью бот его почему-то не получил и завис в цикле, надо разбираться.

Добавлено через 8 минут
Как убедиться, что после отправки рубить лес на сервере зомби будет рубить лес? Я пока вижу, что никак. Да, сервер отправляет в ответ "type":"gainMaterial","action":"start", но тогда мы должны ждать этот ответ и не отправлять/обрабатывать другие евенты, т.к. иначе дерево придется заочно пометить занятым.

Последний раз редактировалось ruslanische; 17.01.2015 в 17:31. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 17.01.2015, 17:32   #3878
 Разведчик
Аватар для megabyte0
 
megabyte0 никому не известный тип
Регистрация: 29.07.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 8 раз(а) в 5 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

У меня подобным образом сделано , но выкладывать после уважаемого greyzza уже стыдно. Я не переписывал, а только закомментил и поправил баги, и, когда начало работать, забыл.
Цитата:
Сообщение от ruslanischeПосмотреть сообщение
ошибка в алгоритме все же...

Хуже того, она закрыта try: except: pass . Как же меня это бесило, когда я это наконец-то заметил
Цитата:
Сообщение от ruslanischeПосмотреть сообщение
жду результат

Ну, я хотел это откритиковать выше, что так почему-то нельзя делать, а теперь Вы видите, почему. Надо ждать - повешайте обработчик на ответ и забейте.
Цитата:
Сообщение от ruslanischeПосмотреть сообщение
что-то не понял...

Начиная с 30.12.2014 или раньше, клиент отдаёт "time": время_с_начала_zombiferma_swf в запросе EVT, мы это пропустили. Кто не отдаёт, тот бот. Скоро обновление с окончанием продажи выкупа (он до 14.01 обещали)...

Последний раз редактировалось megabyte0; 17.01.2015 в 17:44.
  Ответить с цитированием
Старый 17.01.2015, 17:38   #3879
 Разведчик
Аватар для greyzza
 
greyzza никому не известный тип
Регистрация: 25.02.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
иначе дерево придется заочно пометить занятым

дак так в воркере и сделано, помечается ресурс занятым, согласен что неправильно, что если переход отключен то так и будет занят ресурс до перезагрузки бота но если переход включен то естественно что при заходе на остров он правильно видит ресурсы которые можно рубить и какие работники свободны. все острова вырублены этим воркером , ну вот не заморачивался я сидеть на одном острове и вырубать его в ноль когда активен супер урожай и прочее))
  Ответить с цитированием
Старый 17.01.2015, 17:48   #3880
 Разведчик
Аватар для ruslanische
 
ruslanische никому не известный тип
Регистрация: 22.03.2012
Сообщений: 3
Популярность: 12
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Как делать скрытый текст? [spoiler][/spoiler] не работает...
  Ответить с цитированием
Старый 17.01.2015, 17:49   #3881
 Разведчик
Аватар для megabyte0
 
megabyte0 никому не известный тип
Регистрация: 29.07.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 8 раз(а) в 5 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от greyzzaПосмотреть сообщение
ну вот не заморачивался я сидеть на одном острове и вырубать его в ноль

Я заморачивался, помнится за золотую фемиду. Не в ноль, но гдет 1.5 суток убил. Всё было ок с моими обработчиками, может у меня сам вырубщик тоже поменян?
Цитата:
Сообщение от ruslanischeПосмотреть сообщение
Как делать скрытый текст? [spoiler][/spoiler] не работает...

[ MORE = "текст спойлера" ] под спойлером [ /MORE ] без пробелов внутри тэгов.

Последний раз редактировалось megabyte0; 17.01.2015 в 17:51.
  Ответить с цитированием
Старый 17.01.2015, 18:03   #3882
 Разведчик
Аватар для ruslanische
 
ruslanische никому не известный тип
Регистрация: 22.03.2012
Сообщений: 3
Популярность: 12
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Не смог завернуть код под кат...
После переделки, ваш код немного режет глаза, я вроде также сделал, но у меня иногда виснит...
Код:
    def perform_action(self):
        # получаем всех рабочих
        workers = self.get_state_processor().get_game_objects_by_types(
            self.get_worker_types()
        )
        # отправляем рабочих работать, если они свободны и хватает мозгов
        for worker in workers:
            self.__try_start_job(worker)
            #self.__stop_job(worker)

    def handle_events(self):
        for event in self.get_game_engine().get_game_events():
            if event[u'type'] == u'gainMaterial':
                self.__handle_gainMaterialEvent(event)

    def __try_start_job(self, worker):
        # если зомби уже работает
        is_working = self.get_player_brains().is_working_now(worker)
        # если не хватает мозгов на отправку на работу зомби
        is_not_enough_brains = not self.get_player_brains().has_sufficient_brains_count(worker)
        # если склад зомби переполнен и он сидит курит
        is_full = len(worker[u'materials']) >= 3

        if is_working or is_not_enough_brains or is_full:
            return

        # выбираем ресурсы, которые будем добывать
        resources = self.get_state_processor().get_game_objects_by_type(
            self.get_object_type()
        )
        if not resources:
            logger.info(u"Не осталось ресурсов для добычи.")
            return

        # отсеиваем ресурсы, которые добывается в данный момент
        resources = filter(lambda(x): x[u'gainStarted'] is False, resources)

        # TODO: debug
        #resources = filter(lambda(x): x[u'materialCount'] <= 1, resources)

        if not resources:
            logger.info(u"Все ресурсы уже добываются")
            return
        resource = resources[0]

        logger.info(u"Отправляем зомби на работу: " + self.get_sent_job())
        gain_event = {
            u'type': u'item',
            u'action': u'gain',
            u'objId': resource[u'id'],
            u'extraId': worker[u'id']
        }
        self.get_game_engine().send_event(gain_event)

        if self.is_emulating():
            resource[u'materialCount'] = 1
            returned_event = {u"type":u"gainMaterial",u"action":u"stop",u"objId":worker[u'id'],u"startCounter":85,u"doneCounter":85}
            self.get_game_engine().add_game_event(returned_event)

        self.get_game_engine().wait_for_event(u'gainMaterial')
        self.handle_events()

    def __stop_job(self, worker):
        stop_job_event = {
            "type":"item",
            "action":"stop",
            "objId":worker[u'id']
        }
        self.get_game_engine().send_event(stop_job_event)
        self.get_game_engine().wait_for_event(u'gainMaterial')
        self.handle_events()

    def __handle_gainMaterialEvent(self, event):
        worker = self.get_state_processor().get_game_object_by_id(
            event[u'objId']
        )

        if u'jobEndTime' in worker:
            self.__check_if_job_done(worker)

        if event[u'action'] == u'start':
            target_resource = self.get_state_processor().get_game_object_by_id(event[u'targetId'])
            target_resource[u'gainStarted'] = True
            worker[u'target'] = {'id': event[u'targetId']}
            worker[u'jobStartTime'] = event[u'jobStartTime']
            worker[u'jobEndTime'] = event[u'jobEndTime']

            timestamp = time.time() + (long(event[u'jobEndTime']) - self._get_timer().get_client_time())/1000
            time_tuple = time.localtime(timestamp)
            logger.info(u'Начата работа, время окончания: ' + time.strftime("%H:%M:%S", time_tuple))

        # зомби остановлен, нужно обновить состояние игры
        elif event[u'action'] == u'stop':
            # если зомбик что-либо добывал, то освобождаем этот ресурс
            if u'target' in worker and worker[u'target'] is not None:
                target_resource = self.get_state_processor().get_game_object_by_id(worker[u'target'][u'id'])
                target_resource[u'gainStarted'] = False
                worker[u'target'] = None
            # удаляем аттрибуты работающего зомбика
            if u'jobStartTime' in worker:
                del worker[u'jobStartTime']
            if u'jobEndTime' in worker:
                del worker[u'jobEndTime']
            logger.info(u'Окончена работа.')

        self.get_game_engine().remove_game_event(event)

    def __check_if_job_done(self, worker):
        if (self._get_timer().has_elapsed(worker[u'jobEndTime'])):
            if u'target' in worker:
                target_id = worker[u'target'][u'id']
                target_object = self.get_state_processor().get_game_object_by_id(target_id)
                assert target_object[u'materialCount'] > 0
                target_object[u'materialCount'] -= 1

                target_item = self.get_state_processor().get_item_by_id(target_object[u'item'])
                worker[u'materials'].append(target_item[u'material'])

                material_item = self.get_state_processor().get_item_by_id(target_item[u'material'])
                logger.info(u"Материал '%s' добыт и положен на могилку." % material_item[u'name'].lower())

                if target_object[u'materialCount'] == 0:
                    logger.info(u"Ресурсы исчерпаны!")
                    box_item = self.get_state_processor().get_item_by_id(target_item[u'box'])
                    new_obj = {
                        u'item': u'@' + box_item[u'id'],
                        u'type':  u'pickup',
                        u'id': target_id
                    }
                    self.get_state_processor().remove_game_object_by_id(target_id)
                    self.get_state_processor().append_game_object(new_obj)
                    logger.info(u"'%s' превращён в '%s'" %
                                (target_item[u'name'], box_item[u'name']))
                    # add free brains
                    worker[u'target'] = None
            del worker[u'jobEndTime']
Добавлено через 10 минут
Кажись я понял в чем у меня проблема:
если после вырубки дерева бот получил
Код:
{"type":"gainMaterial","action":"stop","objId":87,"startCounter":97,"doneCounter":97}
, то он должен был проверить, закончена ли работа:
Код:
if (self._get_timer().has_elapsed(worker[u'jobEndTime']))
Если условие не сработало, то дерево так и останется недобытым, хотя на сервере оно исчерпано.
Далее бот опять пытается добыть это дерево и ждет ответ от сервера, но тот мне не отвечал, т.к. дерева такого не было уже

Добавлено через 20 минут
Цитата:
Скоро обновление с окончанием продажи выкупа (он до 14.01 обещали)...

эммм... щас глянул и правда клиент отправляет
Код:
{"type":"EVT","time":5352,"user":"123","id":1421504392465,"sig":"3ad33d0fa30f664c532d7739e3f8e844","events":[{"action":"getMissions","type":"action","id":1}]}
Видимо случился рассинхрон ночью отоно че, михалыч
А что за выкуп? Где почитать? Меня что, забанят?

Последний раз редактировалось ruslanische; 17.01.2015 в 18:24. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 17.01.2015, 19:10   #3883
 Разведчик
Аватар для greyzza
 
greyzza никому не известный тип
Регистрация: 25.02.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Кажись я понял в чем у меня проблема:
если после вырубки дерева бот получил
Код:
{"type":"gainMaterial","action":"stop","objId":87, "startCounter":97,"doneCounter":97}
, то он должен был проверить, закончена ли работа:
Код:
if (self._get_timer().has_elapsed(worker[u'jobEndTime']))
Если условие не сработало, то дерево так и останется недобытым, хотя на сервере оно исчерпано.
Далее бот опять пытается добыть это дерево и ждет ответ от сервера, но тот мне не отвечал, т.к. дерева такого не было уже

да у тебя так и получилось, условие не сработало дальше: target_resource[u'gainStarted'] = False а на самом деле ресурс должен быть удалён)), так что таймер нафиг
  Ответить с цитированием
Старый 17.01.2015, 19:57   #3884
 Разведчик
Аватар для ruslanische
 
ruslanische никому не известный тип
Регистрация: 22.03.2012
Сообщений: 3
Популярность: 12
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Вот и выгода синхронной обработки событий, сразу видно рассинхрон - завис в цикле ожидания евента gainMaterial. Можно в этом цикле ждать несколько секунд и кидать исключение, после которого перезапускать бота.

Цитата:
так что таймер нафиг

а как без таймера?
  Ответить с цитированием
Старый 17.01.2015, 20:00   #3885
 Разведчик
Аватар для greyzza
 
greyzza никому не известный тип
Регистрация: 25.02.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
а как без таймера?

а на кой там таймер? если старт то время ставишь то что получил, если стоп то удаляешь jobEndTime
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Программа] Zombot (Клиент для игры Зомби ферма) AnonProger Баги игр ВКонтакте 189 26.08.2014 15:50
[Статья] Небольшие секреты игры зомби ферма haussuper Баги игр ВКонтакте 11 26.01.2013 11:54
[Информация] Зомби Ферма dekirillov Баги игр ВКонтакте 40 22.10.2011 18:25

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 00:08.

Пишите нам: forum@zhyk.ru
Copyright © 2025 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net