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

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

-

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

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

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

Цитата:
Сообщение от PriKolist666Посмотреть сообщение
Вот часть файла фриенд! у моего друга есть фалй фриенд диг и он туда вписивает! у меня такого файла нет! только етот !

С этим понятно.
Осталось game_engine.py
скорее всего mrutils.py или vkutils.py или okutils.py
И возможно settings.py

Ты вместо красного крика дал бы то, что тебя просили.
________________

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  Ответить с цитированием
Старый 26.03.2014, 17:24   #1592
 Разведчик
Аватар для GirlKris
 
GirlKris никому не известный тип
Регистрация: 17.02.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Вот часть файла фриенд! у моего друга есть фалй фриенд диг и он туда вписивает! у меня такого файла нет! только етот !

Вместо friends = self._get_options() напиши friends = ['111111111','222222222','333333333']
Будет ходить по ID, указанных в скобках
  Ответить с цитированием
Старый 26.03.2014, 17:27   #1593
 Разведчик
Аватар для lokanaft
 
lokanaft никому не известный тип
Регистрация: 03.12.2010
Сообщений: 22
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 5 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Разделил на два острова и обкатал мозги (выловил косяки):
Код:
# 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.events_append(create_items_event)    
         
  def events_append(self, event):
    self._events.append(event)
    if len(self._events) > 9:
        self.events_free()

  def events_free(self):
    if self._events != []: self._get_events_sender().send_game_events(self._events)
    self._events = []

  def perform_action(self):

    min_coll = 1000   # Оставляем ручных и обувных коллекций 

    _loc = self._get_game_state().get_game_loc().get_location_id()                                                      
    if not (_loc == u'main' or _loc == u'isle_elephant'):
        return 1

    self._events = []
# обмен коллекций                                                    
    if _loc == u'isle_elephant':
        obj_id_iz_melnica = ''
        #получаем id
        buildings = self._get_game_location().get_all_objects_by_type(GameBuilding.type) 
        for building in list(buildings): 
            if building.item == '@B_MILL_EMERALD2': 
                obj_id_iz_melnica = building.id     
                break

        if(obj_id_iz_melnica != ''):

            cl_items = obj2dict(self._get_game_state().get_state().collectionItems)#self._get_game_state().get_state().collectionItems         
            for _item in cl_items.keys(): 
                if _item == 'C_5_1':   hand_1 = cl_items[_item]   # Ручная 
                if _item == 'C_5_2':   hand_2 = cl_items[_item]   # Ручная 
                if _item == 'C_5_3':   hand_3 = cl_items[_item]   # Ручная 
                if _item == 'C_5_4':   hand_4 = cl_items[_item]   # Ручная 
                if _item == 'C_5_5':   hand_5 = cl_items[_item]   # Ручная 
                     
                if _item == 'C_6_1':   shoe_1 = cl_items[_item]   # Обувная 
                if _item == 'C_6_2':   shoe_2 = cl_items[_item]   # Обувная 
                if _item == 'C_6_3':   shoe_3 = cl_items[_item]   # Обувная 
                if _item == 'C_6_4':   shoe_4 = cl_items[_item]   # Обувная 
                if _item == 'C_6_5':   shoe_5 = cl_items[_item]   # Обувная 
            print hand_1, ', ', hand_2, ', ', hand_3, ', ', hand_4, ', ', hand_5, '; ', shoe_1, ', ', shoe_2, ', ', shoe_3, ', ', shoe_4, ', ', shoe_5

            if hand_1 > min_coll and shoe_1 > min_coll:
                if hand_1 > shoe_1: 
                    count = shoe_1 - min_coll 
                else: 
                    count = hand_1 - min_coll      
                for i in range(count): 
                    self.create_items(obj_id_iz_melnica, "1") 
                    #logger.info(u'Создаём перчатку фреди %d', i + 1)    
                if i > 0:
                    logger.info(u'Создали %d перчаток Фредди', i) 
                
            if hand_2 > min_coll and shoe_2 > min_coll: 
                if hand_2 > shoe_2: 
                    count = shoe_2 - min_coll 
                else: 
                    count = hand_2 - min_coll      
                for i in range(count): 
                    self.create_items(obj_id_iz_melnica, "2") 
                    #logger.info(u'Создаём шляпу фреди %d', i + 1) 
                if i > 0:
                    logger.info(u'Создали %d шляп Фредди', i)                     
                
            if hand_3 > min_coll and shoe_3 > min_coll: 
                if hand_3 > shoe_3: 
                    count = shoe_3 - min_coll 
                else: 
                    count = hand_3 - min_coll      
                for i in range(count): 
                    self.create_items(obj_id_iz_melnica, "3") 
                    #logger.info(u'Создаём кофту фреди %d', i + 1)  
                if i > 0:
                    logger.info(u'Создали %d кофт Фредди', i)                     
                 
            if hand_4 > min_coll and shoe_4 > min_coll: 
                if hand_4 > shoe_4: 
                    count = shoe_4 - min_coll 
                else: 
                    count = hand_4 - min_coll      
                for i in range(count): 
                    self.create_items(obj_id_iz_melnica, "4")  
                    #logger.info(u'Создаём зажигалку фреди %d', i + 1)   
                if i > 0:
                    logger.info(u'Создали %d зажигалок Фредди', i) 
                  
            if hand_5 > min_coll and shoe_5 > min_coll: 
                if hand_5 > shoe_5: 
                    count = shoe_5 - min_coll 
                else: 
                    count = hand_5 - min_coll      
                for i in range(count): 
                    self.create_items(obj_id_iz_melnica, "5") 
                    #logger.info(u'Создаём будильник фреди %d', i + 1)  
                if i > 0:
                    logger.info(u'Создали %d будильников Фредди', i)  
        self.events_free()					
        return 1
#обмен коллекций

    brains_const = 45 # Указываем нужное постоянное количество без имеющихся у игрока бесплатных  
    
    want_helly = 100  # Сколько хотим хеллий иметь
    want_kley  = 100  # Клея
    want_trans = 100  # Трансформаторов
    want_yekraska= 100# Краски жёлтой

    min_money = 1000000  # оставляем денег

    obj_id_ostankino = obj_id_korabl = obj_id_elka = obj_id_pirmida = obj_id_bashnya = obj_id_furgon = '' # Переменные для 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
        if building_item.id == 'B_VAN_ICE_CREAM':
            obj_id_furgon = building.id

    travel_time = -1
    for l in self._get_game_state().get_state().buffs.list:
        if 'BUFF_TRAVEL_TICKET_TIME' in l.item:
            exp_time = float(l.expire.endDate) # l.expire.type  (= time)
            if travel_time < exp_time :
                travel_time = exp_time
    if travel_time < 0 and obj_id_furgon != '':
        logger.info(u'Создаём баф путешествий') 
        self.create_items(obj_id_furgon, "1") 

    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   # Жёлтая краска


    need_kley = (want_kley) - kley
    if need_kley < 0: need_kley = 0
    need_trans = (need_kley + want_trans) - kley
    if need_trans < 0: need_trans = 0
    need_yekraska = (need_kley + want_yekraska) - yekraska
    if need_yekraska < 0: need_yekraska = 0

    need_helly = (2 * brains_const + want_helly + (need_kley*2) + (need_trans) + (need_yekraska)) - helly # Максимально необходимое кол-во хеллии
    if need_helly < 0: need_helly = 0
    need_garliclily = (need_helly) - garliclily # Максимально необходимое кол-во чесночных лилий
    if need_garliclily < 0: need_garliclily = 0

    need_love = (10 * brains_const)-love # Максимально необходимое кол-во любви
    need_clevhell = (4 * need_helly) - clevhell # Максимально необходимое кол-во клеверхелла
    if need_clevhell < 0: need_clevhell = 0
    need_clever = (int(ceil(need_clevhell/20)*20)) - clever # Максимально необходимое кол-во клевера
    need_squashhell = (int(ceil(need_clevhell/10)*10)) - squashhell # Максимально необходимое кол-во тыквахелла
    need_garlic = (int(ceil(need_garliclily/40)*40)) - garlic # Максимально необходимое кол-во чеснока
    need_lily = (int(ceil(need_garliclily/40)*40)) - lily # Максимально необходимое кол-во лилий
    i = 0
    if need_helly > 0:
        if(obj_id_korabl == ''):
            logger.info(u'Не хватает хеллий, сварите еще %d шт.',need_helly)
            return
        else:
            if need_clevhell > 0:
                if need_clever > 0:
                    logger.info(u'Не хватает клевера, посадите еще %d шт.',need_clever)
                    return
                elif need_squashhell > 0:
                    logger.info(u'Не хватает тыквахелла, посадите еще %d шт.',need_squashhell)
                    return
                for i in range(int(ceil((need_clevhell)/10))+1):
                    self.create_items(obj_id_korabl, "1") 
                if i > 0:
                        logger.info(u'Создали %d клеверхелла', i*10) 

            if need_garliclily > 0:
                if need_garlic > 0:
                    logger.info(u'Не хватает чеснока, посадите еще %d шт.',need_garlic)
                    return
                elif need_lily > 0:
                    logger.info(u'Не хватает лилий, посадите еще %d шт.',need_lily)
                    return
                else:
                    for i in range(int(ceil((need_garliclily)/10))+1):
                        self.create_items(obj_id_korabl, "2") 
                    if i > 0:
                        logger.info(u'Создали %d чесночных лилий', i*10) 

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

    if need_love > 0: 
        logger.info(u'Не хватает любви для создания мозгов, накопайте еще %d шт.', need_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)    
    self.events_free()
Коллекции пока ещё в процессе обмена. Прост уже час прошёл и решил выложить)
  Ответить с цитированием
Старый 26.03.2014, 17:35   #1594
 Разведчик
Аватар для GirlKris
 
GirlKris никому не известный тип
Регистрация: 17.02.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

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

Цитата:
2014-03-26 17:25:36,399 Создали 6 перчаток Фредди
2014-03-26 17:27:17,545 Создали 35737 шляп Фредди

И это я по 10 запросов за раз отправляю.
  Ответить с цитированием
Старый 26.03.2014, 17:38   #1596
 Разведчик
Аватар для PriKolist666
 
PriKolist666 никому не известный тип
Регистрация: 23.03.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от GirlKrisПосмотреть сообщение
Вместо friends = self._get_options() напиши friends = ['111111111','222222222','333333333']
Будет ходить по ID, указанных в скобках

Спасибо огромное вечером проверю будет ли работать

Добавлено через 2 минуты
И ещё на один вопросик ответте: еслли у человека всё вирито,бот будет показивать что нашло необходимие декорации и писать что использовало 300 лопат. ?)

Последний раз редактировалось PriKolist666; 26.03.2014 в 17:40. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 26.03.2014, 17:42   #1597
 Разведчик
Аватар для dark-dragon
 
dark-dragon никому не известный тип
Регистрация: 30.08.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 26 раз(а) в 21 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от lokanaftПосмотреть сообщение
Разделил на два острова и обкатал мозги (выловил косяки)

Что-то в самом производстве мозгов правил? А то вот напихали в модуль кучу срани, не поймешь, что и где менялось.

Добавлено через 9 минут
Цитата:
Сообщение от PriKolist666Посмотреть сообщение
И ещё на один вопросик ответте: еслли у человека всё вирито,бот будет показивать что нашло необходимие декорации и писать что использовало 300 лопат. ?)

Скорее всего, да. Не видел еще тут выложенного модуля с проверкой на параметр haveTreasure

Последний раз редактировалось dark-dragon; 26.03.2014 в 17:52. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 26.03.2014, 17:52   #1598
 Пехотинец
Аватар для vintets
 
vintets скоро будет известенvintets скоро будет известенvintets скоро будет известен
Регистрация: 01.08.2012
Сообщений: 95
Популярность: 255
Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от PriKolist666Посмотреть сообщение
Спасибо огромное вечером проверю будет ли работать

Добавлено через 2 минуты
И ещё на один вопросик ответте: еслли у человека всё вирито,бот будет показивать что нашло необходимие декорации и писать что использовало 300 лопат. ?)

В той версии что ходит - будет. Там ошибка
Исправляется так: http://zhyk.ru/forum/showpost.php?p=...postcount=1528
Но ты лучше туда не лезь.

Народ, не могу найти параметры отвечающие за количество оставшихся попыток копать у юзера и параметр на возможность удобрения ему. С лимитом остального всё понятно юзеры в списках (по подсказанной аналогии)
Мишка - self._get_game_state().get_state().remoteMonsterPi t
Ёлки - self._get_game_state().get_state().remoteNewYear
Поливка сада - self._get_game_state().get_state().remoteFertilize FruitTree

Или отдельной переменной нет и нужно самому искать не созревшее дерево? Тогда как определить созрело дерево или нет?
________________

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

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

haveTreasure = либо True (можно копать) либо False (нельзя). Другого ничего не нашел.

Что удобрять? Уточни.
  Ответить с цитированием
Старый 26.03.2014, 17:58   #1600
 Разведчик
Аватар для PriKolist666
 
PriKolist666 никому не известный тип
Регистрация: 23.03.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от vintetsПосмотреть сообщение
В той версии что ходит - будет. Там ошибка
Исправляется так: http://zhyk.ru/forum/showpost.php?p=...postcount=1528
Но ты лучше туда не лезь.

Народ, не могу найти параметры отвечающие за количество оставшихся попыток копать у юзера и параметр на возможность удобрения ему. С лимитом остального всё понятно юзеры в списках (по подсказанной аналогии)
Мишка - self._get_game_state().get_state().remoteMonsterPi t
Ёлки - self._get_game_state().get_state().remoteNewYear
Поливка сада - self._get_game_state().get_state().remoteFertilize FruitTree

Или отдельной переменной нет и нужно самому искать не созревшее дерево? Тогда как определить созрело дерево или нет?

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

Цитата:
Сообщение от dark-dragonПосмотреть сообщение
haveTreasure = либо True (можно копать) либо False (нельзя). Другого ничего не нашел.

Что удобрять? Уточни.

haveTreasure - имеются сокровища ??? странная у них логика.

Когда заходишь вгости. Удобрить ему деревья. Лимит 20. Лимит нашёл, возможности - нет. Или в ручную проверять все деревья и искать не созревшее? Какой тогда параметр у дерева?.
Но я надеюсь что есть отдельный параметр. Искать каждый раз это же расточительно, вряд ли бы они так сделали.

Цитата:
Сообщение от PriKolist666Посмотреть сообщение
а оно только пишет что юзнуло опати или их в реале использует?

только пишет. Ты скажи, чего ты всех пытаешь с этими лопатами? Надеешься копать без лимита?
________________

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

Цитата:
Сообщение от vintetsПосмотреть сообщение
haveTreasure - имеются сокровища ??? странная у них логика.

Когда заходишь вгости. Удобрить ему деревья. Лимит 20. Лимит нашёл, возможности - нет. Или в ручную проверять все деревья и искать не созревшее? Какой тогда параметр у дерева?.
Но я надеюсь что есть отдельный параметр. Искать каждый раз это же расточительно, вряд ли бы они так сделали.

Гы.
1. Почему именно сокровища? Имеются клады, не?
2. Возможность есть.
3. Они так и не делали Параметр есть, только модуль не заточен под этот параметр. У эвента gameState есть очень хороший параметр haveRemoteFertilizeFruit (да и не только он), по которому легко вычисляется, есть ли на посещенном острове деревья под удобрение.

По факту нужно капитально переписывать, а вернее писать с нуля, гостевой модуль.
  Ответить с цитированием
Старый 26.03.2014, 18:19   #1603
 Разведчик
Аватар для PriKolist666
 
PriKolist666 никому не известный тип
Регистрация: 23.03.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

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

Добавил Луксорскую в догонку:
Код:
# 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.events_append(create_items_event)    
         
  def events_append(self, event):
    self._events.append(event)
    if len(self._events) > 9:
        self.events_free()

  def events_free(self):
    if self._events != []: self._get_events_sender().send_game_events(self._events)
    self._events = []

  def perform_action(self):

    min_coll = 1000   # Оставляем ручных и обувных коллекций 

    _loc = self._get_game_state().get_game_loc().get_location_id()                                                      
    if not (_loc == u'main' or _loc == u'isle_elephant'):# выключать просто - изменяем ид острова на несуществующий и всё (isle_9elephant)
        return 1

    self._events = []
# обмен коллекций                                                    
    if _loc == u'isle_elephant':
        obj_id_iz_melnica = obj_id_iz_majak = ''
        #получаем id
        buildings = self._get_game_location().get_all_objects_by_type(GameBuilding.type) 
        for building in list(buildings): 
            if building.item == '@B_MILL_EMERALD2':# выключать просто - изменяем ид объекта на несуществующий и всё (B_MILL_9EMERALD2)
                obj_id_iz_melnica = building.id
            if building.item == '@B_LIGHT_EMERALD2': 
                obj_id_iz_majak = building.id

        if(obj_id_iz_melnica != '' or obj_id_iz_majak != ''):

            cl_items = obj2dict(self._get_game_state().get_state().collectionItems)#self._get_game_state().get_state().collectionItems         
            for _item in cl_items.keys():
                if _item == 'C_5_1':   hand_1 = cl_items[_item]   # Ручная 
                if _item == 'C_5_2':   hand_2 = cl_items[_item]   # Ручная 
                if _item == 'C_5_3':   hand_3 = cl_items[_item]   # Ручная 
                if _item == 'C_5_4':   hand_4 = cl_items[_item]   # Ручная 
                if _item == 'C_5_5':   hand_5 = cl_items[_item]   # Ручная 
                     
                if _item == 'C_6_1':   shoe_1 = cl_items[_item]   # Обувная 
                if _item == 'C_6_2':   shoe_2 = cl_items[_item]   # Обувная 
                if _item == 'C_6_3':   shoe_3 = cl_items[_item]   # Обувная 
                if _item == 'C_6_4':   shoe_4 = cl_items[_item]   # Обувная 
                if _item == 'C_6_5':   shoe_5 = cl_items[_item]   # Обувная 

                if _item == 'C_3_1':   bike_1 = cl_items[_item]   # Байкерская 
                if _item == 'C_3_2':   bike_2 = cl_items[_item]   # Байкерская 
                if _item == 'C_3_3':   bike_3 = cl_items[_item]   # Байкерская 
                if _item == 'C_3_4':   bike_4 = cl_items[_item]   # Байкерская 
                if _item == 'C_3_5':   bike_5 = cl_items[_item]   # Байкерская 
                     
                if _item == 'C_4_1':   znak_1 = cl_items[_item]   # Знаков 
                if _item == 'C_4_2':   znak_2 = cl_items[_item]   # Знаков 
                if _item == 'C_4_3':   znak_3 = cl_items[_item]   # Знаков 
                if _item == 'C_4_4':   znak_4 = cl_items[_item]   # Знаков 
                if _item == 'C_4_5':   znak_5 = cl_items[_item]   # Знаков 

            print 'Ручная:', hand_1, ',', hand_2, ',', hand_3, ',', hand_4, ',', hand_5, '; Обувная:', shoe_1, ',', shoe_2, ',', shoe_3, ',', shoe_4, ',', shoe_5
            print 'Байкерская:', bike_1, ',', bike_2, ',', bike_3, ',', bike_4, ',', bike_5, '; Знаков:', znak_1, ',', znak_2, ',', znak_3, ',', znak_4, ',', znak_5
#Стрёмная, очень...
            if(obj_id_iz_melnica != ''):
                if hand_1 > min_coll and shoe_1 > min_coll:
                    if hand_1 > shoe_1: 
                        count = shoe_1 - min_coll 
                    else: 
                        count = hand_1 - min_coll      
                    for i in range(count): 
                        self.create_items(obj_id_iz_melnica, "1") 
                        #logger.info(u'Создаём перчатку фреди %d', i + 1)    
                    logger.info(u'Создали %d перчаток Фредди', i + 1) 
                    
                if hand_2 > min_coll and shoe_2 > min_coll: 
                    if hand_2 > shoe_2: 
                        count = shoe_2 - min_coll 
                    else: 
                        count = hand_2 - min_coll      
                    for i in range(count): 
                        self.create_items(obj_id_iz_melnica, "2") 
                        #logger.info(u'Создаём шляпу фреди %d', i + 1) 
                    logger.info(u'Создали %d шляп Фредди', i + 1)                     
                    
                if hand_3 > min_coll and shoe_3 > min_coll: 
                    if hand_3 > shoe_3: 
                        count = shoe_3 - min_coll 
                    else: 
                        count = hand_3 - min_coll      
                    for i in range(count): 
                        self.create_items(obj_id_iz_melnica, "3") 
                        #logger.info(u'Создаём кофту фреди %d', i + 1)  
                    logger.info(u'Создали %d кофт Фредди', i + 1)                     
                     
                if hand_4 > min_coll and shoe_4 > min_coll: 
                    if hand_4 > shoe_4: 
                        count = shoe_4 - min_coll 
                    else: 
                        count = hand_4 - min_coll      
                    for i in range(count): 
                        self.create_items(obj_id_iz_melnica, "4")  
                        #logger.info(u'Создаём зажигалку фреди %d', i + 1)   
                    logger.info(u'Создали %d зажигалок Фредди', i + 1) 
                      
                if hand_5 > min_coll and shoe_5 > min_coll: 
                    if hand_5 > shoe_5: 
                        count = shoe_5 - min_coll 
                    else: 
                        count = hand_5 - min_coll      
                    for i in range(count): 
                        self.create_items(obj_id_iz_melnica, "5") 
                        #logger.info(u'Создаём будильник фреди %d', i + 1)  
                    logger.info(u'Создали %d будильников Фредди', i + 1)  
#Луксорская
            if(obj_id_iz_majak != ''):
                if bike_1 > min_coll and znak_1 > min_coll:
                    if bike_1 > znak_1: 
                        count = znak_1 - min_coll 
                    else: 
                        count = bike_1 - min_coll      
                    for i in range(count): 
                        self.create_items(obj_id_iz_majak, "1") 
                        #logger.info(u'Создаём "Бинты мумии" %d', i + 1)    
                    logger.info(u'Создали %d "Бинты мумии"', i + 1) 
                    
                if bike_2 > min_coll and znak_2 > min_coll: 
                    if bike_2 > znak_2: 
                        count = znak_2 - min_coll 
                    else: 
                        count = bike_2 - min_coll      
                    for i in range(count): 
                        self.create_items(obj_id_iz_majak, "2") 
                        #logger.info(u'Создаём "Гребешок" %d', i + 1) 
                    logger.info(u'Создали %d "Гребешок"', i + 1)                     
                    
                if bike_3 > min_coll and znak_3 > min_coll: 
                    if bike_3 > znak_3: 
                        count = znak_3 - min_coll 
                    else: 
                        count = bike_3 - min_coll      
                    for i in range(count): 
                        self.create_items(obj_id_iz_majak, "3") 
                        #logger.info(u'Создаём "Кошечка" %d', i + 1)  
                    logger.info(u'Создали %d "Кошечка"', i + 1)                     
                     
                if bike_4 > min_coll and znak_4 > min_coll: 
                    if bike_4 > znak_4: 
                        count = znak_4 - min_coll 
                    else: 
                        count = bike_4 - min_coll      
                    for i in range(count): 
                        self.create_items(obj_id_iz_majak, "4")  
                        #logger.info(u'Создаём "Скарабей" %d', i + 1)   
                    logger.info(u'Создали %d "Скарабей"', i + 1) 
                      
                if bike_5 > min_coll and znak_5 > min_coll: 
                    if bike_5 > znak_5: 
                        count = znak_5 - min_coll 
                    else: 
                        count = bike_5 - min_coll      
                    for i in range(count): 
                        self.create_items(obj_id_iz_majak, "5") 
                        #logger.info(u'Создаём "Фараон" %d', i + 1)  
                    logger.info(u'Создали %d "Фараон"', i + 1)  

        self.events_free()                    
        return 1
#обмен коллекций

    brains_const = 45 # Указываем нужное постоянное количество без имеющихся у игрока бесплатных  
    
    want_helly = 100  # Сколько хотим хеллий иметь
    want_kley  = 100  # Клея
    want_trans = 100  # Трансформаторов
    want_yekraska= 100# Краски жёлтой

    min_money = 1000000  # оставляем денег

    obj_id_ostankino = obj_id_korabl = obj_id_elka = obj_id_pirmida = obj_id_bashnya = obj_id_furgon = '' # Переменные для 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
        if building_item.id == 'B_VAN_ICE_CREAM':
            obj_id_furgon = building.id

    travel_time = -1
    for l in self._get_game_state().get_state().buffs.list:
        if 'BUFF_TRAVEL_TICKET_TIME' in l.item:
            exp_time = float(l.expire.endDate) # l.expire.type  (= time)
            if travel_time < exp_time :
                travel_time = exp_time
    if travel_time < 0 and obj_id_furgon != '':
        logger.info(u'Создаём баф путешествий') 
        self.create_items(obj_id_furgon, "1") 

    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   # Жёлтая краска


    need_kley = (want_kley) - kley
    if need_kley < 0: need_kley = 0
    need_trans = (need_kley + want_trans) - kley
    if need_trans < 0: need_trans = 0
    need_yekraska = (need_kley + want_yekraska) - yekraska
    if need_yekraska < 0: need_yekraska = 0

    need_helly = (2 * brains_const + want_helly + (need_kley*2) + (need_trans) + (need_yekraska)) - helly # Максимально необходимое кол-во хеллии
    if need_helly < 0: need_helly = 0
    need_garliclily = (need_helly) - garliclily # Максимально необходимое кол-во чесночных лилий
    if need_garliclily < 0: need_garliclily = 0

    need_love = (10 * brains_const)-love # Максимально необходимое кол-во любви
    need_clevhell = (4 * need_helly) - clevhell # Максимально необходимое кол-во клеверхелла
    if need_clevhell < 0: need_clevhell = 0
    need_clever = (int(ceil(need_clevhell/20)*20)) - clever # Максимально необходимое кол-во клевера
    need_squashhell = (int(ceil(need_clevhell/10)*10)) - squashhell # Максимально необходимое кол-во тыквахелла
    need_garlic = (int(ceil(need_garliclily/40)*40)) - garlic # Максимально необходимое кол-во чеснока
    need_lily = (int(ceil(need_garliclily/40)*40)) - lily # Максимально необходимое кол-во лилий
    i = 0
    if need_helly > 0:
        if(obj_id_korabl == ''):
            logger.info(u'Не хватает хеллий, сварите еще %d шт.',need_helly)
            return
        else:
            if need_clevhell > 0:
                if need_clever > 0:
                    logger.info(u'Не хватает клевера, посадите еще %d шт.',need_clever)
                    return
                elif need_squashhell > 0:
                    logger.info(u'Не хватает тыквахелла, посадите еще %d шт.',need_squashhell)
                    return
                for i in range(int(ceil((need_clevhell)/10))+1):
                    self.create_items(obj_id_korabl, "1") 
                if i > 0:
                        logger.info(u'Создали %d клеверхелла', i*10) 

            if need_garliclily > 0:
                if need_garlic > 0:
                    logger.info(u'Не хватает чеснока, посадите еще %d шт.',need_garlic)
                    return
                elif need_lily > 0:
                    logger.info(u'Не хватает лилий, посадите еще %d шт.',need_lily)
                    return
                else:
                    for i in range(int(ceil((need_garliclily)/10))+1):
                        self.create_items(obj_id_korabl, "2") 
                    if i > 0:
                        logger.info(u'Создали %d чесночных лилий', i*10) 

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

    if need_love > 0: 
        logger.info(u'Не хватает любви для создания мозгов, накопайте еще %d шт.', need_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)    
    self.events_free()
Цитата:
Сообщение от dark-dragonПосмотреть сообщение
Что-то в самом производстве мозгов правил?

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

Цитата:
Сообщение от dark-dragonПосмотреть сообщение
Гы.
1. Почему именно сокровища? Имеются клады, не?
2. Возможность есть.
3. Они так и не делали Параметр есть, только модуль не заточен под этот параметр. У эвента gameState есть очень хороший параметр haveRemoteFertilizeFruit (да и не только он), по которому легко вычисляется, есть ли на посещенном острове деревья под удобрение.

По факту нужно капитально переписывать, а вернее писать с нуля, гостевой модуль.

1. Ну клады имеются это ещё не возможность их копать. Нужно как то затестить...
Ты меня не понял. Я не про параметры в гостевом говорю. Я его как раз переписываю практически полностью.
haveRemoteFertilizeFruit True или False что из него ещё можно узнать?

Объясни мне какие разделы грузятся по gameState?
только gameObjects? И он заменяет оригинальный на время или дописывается с ключём юзера?
Я просто не могу отделить мух от котлет. Вот тот же haveRemoteFertilizeFruit он отвечает можно ли удобрять у него или у меня,
а remoteFertilizeFruitTree уже содержит список которым удобрил я. Это точно, проверял но находясь дома. Если буду в гостях этот параметр будет доступен?
________________

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  Ответить с цитированием
Ответ


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

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, время: 18:42.

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