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

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

-

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

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

Ответ
 
Опции темы
Старый 10.03.2014, 23:18   #1291
 Разведчик
Аватар для Fin-2014
 
Fin-2014 никому не известный тип
Регистрация: 11.01.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

что за прикол с посадкой деревьев??)))
розы/лилии уже не моде?
просветите)
  Ответить с цитированием
Старый 11.03.2014, 00:08   #1292
 Разведчик
Аватар для HotBlood
 
HotBlood никому не известный тип
Регистрация: 19.07.2012
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от Fin-2014Посмотреть сообщение
что за прикол с посадкой деревьев??)))
розы/лилии уже не моде?
просветите)

Просто уже для очень ленивых, тем кому лень заюзать кликер для деревьев который уже давно пошел по рукам, решили зафигачить бота на посадку деревьев
  Ответить с цитированием
Старый 11.03.2014, 09:22   #1293
 Разведчик
Аватар для lokanaft
 
lokanaft никому не известный тип
Регистрация: 03.12.2010
Сообщений: 22
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 5 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от vintetsПосмотреть сообщение
Карты островов были созданы правильно.

Надо на больших деревьях просто тестить.
  Ответить с цитированием
Старый 11.03.2014, 09:23   #1294
 Пехотинец
Аватар для vintets
 
vintets скоро будет известенvintets скоро будет известенvintets скоро будет известен
Регистрация: 01.08.2012
Сообщений: 95
Популярность: 255
Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от Fin-2014Посмотреть сообщение
что за прикол с посадкой деревьев??)))
розы/лилии уже не моде?
просветите)

Просто интересно.
+ в фоне подсаживает взорвавшиеся, с ботом о них уже забываешь.
Параллельно решается задача поиска свободного места для выставления. Чтобы не забивать координаты вручную.
  Ответить с цитированием
Старый 11.03.2014, 10:07   #1295
 Разведчик
Аватар для lokanaft
 
lokanaft никому не известный тип
Регистрация: 03.12.2010
Сообщений: 22
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 5 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

GirlKris, спасибо! С большими деревьями тоже всё ок - пустых краёв не остаётся!
  Ответить с цитированием
Старый 11.03.2014, 10:15   #1296
 Пехотинец
Аватар для vintets
 
vintets скоро будет известенvintets скоро будет известенvintets скоро будет известен
Регистрация: 01.08.2012
Сообщений: 95
Популярность: 255
Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от lokanaftПосмотреть сообщение
Надо на больших деревьях просто тестить.

Я почти и не тестил. И не на деревьях, а на декоре, чтобы удалить если что.
  Ответить с цитированием
Старый 11.03.2014, 10:49   #1297
 Разведчик
Аватар для eTorres
 
eTorres никому не известный тип
Регистрация: 20.04.2012
Сообщений: 4
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 5 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от dark-dragonПосмотреть сообщение
PHP код:
next_id 0            
for object in self._get_game_location().get_game_objects():
    if 
object.id next_idnext_id object.id
next_id 
+= 
И что? Опять берете максимальный id объектов с текущего острова, а не всех объектов игрока. В случае дубляжа имеем геморрой и головную боль. Я же давал нормальный код получения максимального id из ВСЕХ объектов. Да, немногим дольше определяет, зато исключает проблемы. Учишь, учишь - одни двойки.

Добавлено через 30 минут
Вместо этого куска кода ставьте такой вот красивый строчка
PHP код:
next_id max([_i.maxGameObjectId for _i in self._get_game_state().get_state().locationInfos]) + 
и

Если нужен уникальный ID объекта по всем островам, то код предложенный Темным Драконом будет неверным. Так как в locationInfos нет текущего острова, с которого грузится бот. Там лишь легкая статистика по всем другим островам, кроме текущего. И чтобы получить уникальный ID нужно совмещать код по поиску максимального ID на острове с тем что предложил Темный Дракон )

Всем Спасибо )))))
  Ответить с цитированием
Старый 11.03.2014, 11:01   #1298
 Пехотинец
Аватар для vintets
 
vintets скоро будет известенvintets скоро будет известенvintets скоро будет известен
Регистрация: 01.08.2012
Сообщений: 95
Популярность: 255
Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от eTorresПосмотреть сообщение
Если нужен уникальный ID объекта по всем островам, то код предложенный Темным Драконом будет неверным. Так как в locationInfos нет текущего острова, с которого грузится бот. Там лишь легкая статистика по всем другим островам, кроме текущего. И чтобы получить уникальный ID нужно совмещать код по поиску максимального ID на острове с тем что предложил Темный Дракон )

Всем Спасибо )))))

Вот так будет правильно? Или есть ещё подводные камни?
PHP код:
next_id max([_i.maxGameObjectId for _i in self._get_game_state().get_state().locationInfos]) + 1            
for object in self._get_game_location().get_game_objects():
    if 
object.id next_idnext_id object.id
next_id 
+= 
  Ответить с цитированием
Старый 11.03.2014, 11:04   #1299
 Разведчик
Аватар для dark-dragon
 
dark-dragon никому не известный тип
Регистрация: 30.08.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 26 раз(а) в 21 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от eTorresПосмотреть сообщение
Если нужен уникальный ID объекта по всем островам, то код предложенный Темным Драконом будет неверным. Так как в locationInfos нет текущего острова, с которого грузится бот. Там лишь легкая статистика по всем другим островам, кроме текущего. И чтобы получить уникальный ID нужно совмещать код по поиску максимального ID на острове с тем что предложил Темный Дракон )

Всем Спасибо )))))

Спасибо за внимательность и замечание. Ошибочно считал, что тут стата по всем островам идет. Ну коли такая петрушка, тогда исправляем код.
PHP код:
objId max([_i.maxGameObjectId for _i in self._get_game_state().get_state().locationInfos] +[_m.id for _m in self._get_game_location().get_game_objects()]) + 
  Ответить с цитированием
Старый 11.03.2014, 11:16   #1300
 Пехотинец
Аватар для vintets
 
vintets скоро будет известенvintets скоро будет известенvintets скоро будет известен
Регистрация: 01.08.2012
Сообщений: 95
Популярность: 255
Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от dark-dragonПосмотреть сообщение
Спасибо за внимательность и замечание. Ошибочно считал, что тут стата по всем островам идет. Ну коли такая петрушка, тогда исправляем код.
PHP код:
objId max([_i.maxGameObjectId for _i in self._get_game_state().get_state().locationInfos] +[_m.id for _m in self._get_game_location().get_game_objects()]) + 

В этом варианте он точно не сложит два id?
  Ответить с цитированием
Старый 11.03.2014, 11:21   #1301
 Разведчик
Аватар для dark-dragon
 
dark-dragon никому не известный тип
Регистрация: 30.08.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 26 раз(а) в 21 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от vintetsПосмотреть сообщение
В этом варианте он точно не сложит два id?

Нет. Он складывает два списка (1-й максимальные id на всех островах, кроме текущего; 2-й все id объектов на текущем острове), потом из получившегося списка выбирает максимальное значение и добавляет 1.
  Ответить с цитированием
Старый 11.03.2014, 11:51   #1302
 Разведчик
Аватар для lokanaft
 
lokanaft никому не известный тип
Регистрация: 03.12.2010
Сообщений: 22
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 5 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от dark-dragonПосмотреть сообщение
Немного позже я выкладывал правленый файл.

В нём тоже:
Код:
        for _i in range(max_need_clevhell-clevhell):
            self.create_items(obj_id_2, "3")
3 - это хеллии

Вот мой исправленный и дополненный краской, клеем и трансформаторами вариант:
Код:
# coding=utf-8
import logging
from math import ceil
from game_state.game_types import GameBuilding
from game_actors_and_handlers.base import BaseActor
from game_state.game_event import dict2obj, obj2dict


logger = logging.getLogger(__name__)

class GameBrains(BaseActor):

  #функция создания чего-либо
  def create_items (self, _obj_id,_item_id):
    create_items_event = {"type": "item",
                           "action": "craft",
                           "objId": _obj_id,
                           "itemId":_item_id}        
    self._get_events_sender().send_game_events([create_items_event])    
         
    

  def perform_action(self):  

    _loc = self._get_game_state().get_game_loc().get_location_id()                                                      
    if not _loc == u'main': # на каком острове всё находится
        return 1
  
    brains_const = 15 # Указываем нужное постоянное количество без имеющихся у игрока бесплатных  
    
    want_helly = 100  # Сколько хотим свободных хеллий после всех операций
    want_kley  = 100  # Клея
    want_trans = 100  # Трансформаторов
    want_yekraska= 100# Краски жёлтой

    min_money = 1000000  # оставляем денег
     
    max_need_helly = max_need_garliclily = 2 * brains_const + want_helly + want_kley*2 + want_trans + want_yekraska # Максимально необходимое кол-во хеллии и чесночных лилий
    max_need_love = 10 * brains_const # Максимально необходимое кол-во любви
    max_need_clevhell = 4 * max_need_garliclily # Максимально необходимое кол-во клеверхелла
    max_need_clever = int(ceil(max_need_clevhell/20)*20) # Максимально необходимое кол-во клевера
    max_need_squashhell = int(ceil(max_need_clevhell/10)*10) # Максимально необходимое кол-во тыквахелла
    max_need_garlic = max_need_lily = int(ceil(max_need_garliclily/40)*40) # Максимально необходимое кол-во лилий и чеснока

    max_need_trans = want_kley + want_trans
    max_need_yekraska = want_kley + want_yekraska
    max_need_kley = want_kley

    obj_id_ostankino = obj_id_korabl = obj_id_elka = obj_id_pirmida = obj_id_bashnya = '' # Переменные для ID останкино и корабля
         
    helly = love = clevhell = garliclily = clever = squashhell = garlic = lily = kley = trans = yekraska = steklo = 0
                                                                   

    #получаем id останкино и летучего корабля
    buildings = self._get_game_location().get_all_objects_by_type(GameBuilding.type)
    
    for building in list(buildings):
        building_item = self._get_item_reader().get(building.item)
        if building_item.name == u'Останкино за монеты': # или if building_item.id == 'B_OSTANKINO'
            obj_id_ostankino = building.id
        if building_item.name == u'Летучий корабль': # или if building_item.id == 'D_SHIP'
            obj_id_korabl = building.id
        if building_item.id == 'B_NYTREE':
            obj_id_elka = building.id
        if building_item.id == 'B_PYRAMID':
            obj_id_pirmida = building.id
        if building_item.id == 'B_PISA':
            obj_id_bashnya = building.id
        
    st_items = self._get_game_state().get_state().storageItems
    #with open('storage2.txt', 'w') as f:
    #    f.write(str(obj2dict(st_items)).encode('utf-8'))
    for _item in list(st_items):
        if hasattr(_item, 'item'):                             
            #it_name = self._get_item_reader().get(_item.item)
            #print 'it ', _item.item, ' name  ', it_name.name
            # Определяем на складе количество:
            if _item.item == ('@R_12'):   helly = _item.count       # Хеллия               
            if _item.item == ('@CR_31'):  love = _item.count        # Любовь 
            
            if _item.item == ('@R_02'):   clevhell = _item.count    # Клеверхелл 
            if _item.item == ('@R_09'):   garliclily = _item.count  # Чесночная лилия 
            
            if _item.item == ('@S_14'):   squashhell = _item.count  # Тыквахелл
            if _item.item == ('@S_03'):   clever = _item.count      # Клевер
            if _item.item == ('@S_15'):   lily = _item.count        # Лилия
            if _item.item == ('@S_08'):   garlic = _item.count      # Чеснок
            
            if _item.item == ('@CR_25'):   steklo = _item.count     # Стекло
            if _item.item == ('@CR_17'):   kley = _item.count       # Супер-клей
            if _item.item == ('@CR_23'):   trans = _item.count      # Трансформатор
            if _item.item == ('@CR_10'):   yekraska = _item.count   # Жёлтая краска



    if helly < max_need_helly:
        if(obj_id_korabl == ''):
            logger.info(u'Не хватает хеллий, сварите еще %d шт.',max_need_helly-helly)
            return
        else:
            if clevhell < max_need_clevhell:
                if clever < max_need_clever:
                    logger.info(u'Не хватает клевера, посадите еще %d шт.',max_need_clever-clever)
                    return
                elif squashhell < max_need_squashhell:
                    logger.info(u'Не хватает тыквахелла, посадите еще %d шт.',max_need_squashhell-squashhell)
                    return
                for i in range(int(ceil((max_need_clevhell-clevhell)/10))):
                    self.create_items(obj_id_korabl, "1") 
                if i > 0:
                        logger.info(u'Создали %d клеверхелла', i) 

            if garliclily < max_need_garliclily:
                if garlic < max_need_garlic:
                    logger.info(u'Не хватает чеснока, посадите еще %d шт.',max_need_garlic-garlic)
                    return
                elif lily < max_need_lily:
                    logger.info(u'Не хватает лилий, посадите еще %d шт.',max_need_lily-lily)
                    return
                else:
                    for i in range(int(ceil((max_need_garliclily-garliclily)/10))):
                        f.create_items(obj_id_korabl, "2") 
                    if i > 0:
                        logger.info(u'Создали %d чесночных лилий', i) 

            for i in range(max_need_helly - helly):
                self.create_items(obj_id_korabl, "3")   
            if i > 0:
                logger.info(u'Создали %d хеллий', i) 
        
    if yekraska < max_need_yekraska:
        if(obj_id_pirmida != ''):
            if (self._get_game_state().get_state().gameMoney - ((max_need_yekraska - yekraska) * 1000)) < min_money:
                print u'Не хватает денег'
                return
            else:
                for i in range(max_need_yekraska - yekraska):
                    self.create_items(obj_id_pirmida, "1")   
                if i > 0:
                    logger.info(u'Создали %d жёлтой краски', i)
                    
    if trans < max_need_trans:
        if(obj_id_bashnya != ''):
            if (max_need_trans - trans) > steklo:
                print u'Не хватает стекла'
                return
            else:
                for i in range(max_need_trans - trans):
                    self.create_items(obj_id_bashnya, "1")   
                if i > 0:
                    logger.info(u'Создали %d трансформаторов', i)
                    
    if kley < max_need_kley:
        if(obj_id_elka != ''):
            if 0:
                return
            else:
                for i in range(max_need_kley - kley):
                    self.create_items(obj_id_elka, "1")   
                if i > 0:
                    logger.info(u'Создали %d клея', i)

    if love < max_need_love : 
        logger.info(u'Не хватает любви для создания мозгов, накопайте еще %d шт.',max_need_love-love)      
        return
    
    brains_buy = self._get_game_state().get_state().buyedBrains # Кол-во активаций мозгов (не самих мозгов)
    brains_curr = 0 # Счетчик кол-ва текущих мозгов      
    x=0 # Счетчик кол-ва мозгов с истечением времени < 5 мин.            

    if len(brains_buy)<>0:        
        for buyed_brain in brains_buy: 
            hf = buyed_brain.count
            brains_curr += hf 
            m = ((int(buyed_brain.endTime)/1000)/60)-((((int(buyed_brain.endTime)/1000)/60)/60)*60)
            h = ((int(buyed_brain.endTime)/1000)/60)/60                                            
            if h==0 and m<=6:
                x+=hf
                        
    # Разница между необходимыми и текущими мозгами. 
    brains_lacks = 0                                       
    if brains_curr < brains_const:            
        brains_lacks = brains_const - brains_curr  
                                                     
    brains_lx = x + brains_lacks 
         
    # Определяем предположительное необходимое ко-во мозгов.           
    brains_need = brains_curr - brains_lx   

    # Если меньше нужного постоянного, то создаем недостающие.
    if brains_need < brains_const:
        _i=0
        for _i in range(brains_lx):          
            self.create_items(obj_id_ostankino, "1")                                       
            brains_buy.append(dict2obj({u'count': 1L, u'endTime': u'86400000'})) #Добавляем фейк в список купленных мозгов для увеличения счетчика
        logger.info (u'Создано мозгов - %d шт.', brains_lx)

Последний раз редактировалось lokanaft; 11.03.2014 в 11:56.
  Ответить с цитированием
Старый 11.03.2014, 12:03   #1303
 Разведчик
Аватар для eTorres
 
eTorres никому не известный тип
Регистрация: 20.04.2012
Сообщений: 4
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 5 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от dark-dragonПосмотреть сообщение
Спасибо за внимательность и замечание. Ошибочно считал, что тут стата по всем островам идет. Ну коли такая петрушка, тогда исправляем код.
PHP код:
objId max([_i.maxGameObjectId for _i in self._get_game_state().get_state().locationInfos] +[_m.id for _m in self._get_game_location().get_game_objects()]) + 

Да, такой код будет работать верно. Но... все же, если вы ставите ботом объекты на локацию, которые не собираетесь переносить на другие острова(например, деревья), то вполне достаточно, чтобы ID устанавливаемого объекта был уникальным в пределах локации. И не вижу смысла искать уникальный ID по всей ферме!
  Ответить с цитированием
Старый 11.03.2014, 12:15   #1304
 Разведчик
Аватар для dark-dragon
 
dark-dragon никому не известный тип
Регистрация: 30.08.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 26 раз(а) в 21 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от eTorresПосмотреть сообщение
Да, такой код будет работать верно. Но... все же, если вы ставите ботом объекты на локацию, которые не собираетесь переносить на другие острова(например, деревья), то вполне достаточно, чтобы ID устанавливаемого объекта был уникальным в пределах локации. И не вижу смысла искать уникальный ID по всей ферме!

Я в своих экспериментах дважды сталкивался с проблемой неуникальности id, поэтому для себя решил делать так. И потом, с уникальностью айди есть порядок, нету вероятности огрести проблем, если будут внесены какие-либо кардинальные изменения со стороны разработчиков; <режим паранойи ON> хрен докажешь, что садилось ботом <режим паранойи OFF>

При желании можно привести еще доводов, но основное изложил.
  Ответить с цитированием
Пользователь сказал cпасибо:
Anch665 (11.03.2014)
Старый 11.03.2014, 12:16   #1305
 Пехотинец
Аватар для vintets
 
vintets скоро будет известенvintets скоро будет известенvintets скоро будет известен
Регистрация: 01.08.2012
Сообщений: 95
Популярность: 255
Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от eTorresПосмотреть сообщение
Да, такой код будет работать верно. Но... все же, если вы ставите ботом объекты на локацию, которые не собираетесь переносить на другие острова(например, деревья), то вполне достаточно, чтобы ID устанавливаемого объекта был уникальным в пределах локации. И не вижу смысла искать уникальный ID по всей ферме!

Ошибок и не возникало. Но, наверное, всё-таки недостаточно. Ведь мы можем переместить объект с другого острова на этот. И тогда он не переместится и закрашится и не будем знать почему. Это основной довод.
  Ответить с цитированием
Ответ


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

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

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

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

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

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

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net