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

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

-

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

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

Ответ
 
Опции темы
Старый 12.02.2014, 13:30   #991
 Разведчик
Аватар для Arsac
 
Arsac никому не известный тип
Регистрация: 08.11.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Приветик всем! Подскажите никто не делал модуля для удобрения деревьев? Может у кого есть хоть сырое чёнить?
  Ответить с цитированием
Старый 12.02.2014, 14:38   #992
 Разведчик
Аватар для Anch665
 
Anch665 никому не известный тип
Регистрация: 21.12.2012
Сообщений: 29
Популярность: 10
Сказал(а) спасибо: 20
Поблагодарили 4 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Приветик всем! Подскажите никто не делал модуля для удобрения деревьев? Может у кого есть хоть сырое чёнить?

оно есть, расскомментируй
Код:
            #FertilBot,          # Удобрение деревьев
  Ответить с цитированием
Старый 12.02.2014, 15:13   #993
 Разведчик
Аватар для Arsac
 
Arsac никому не известный тип
Регистрация: 08.11.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от Anch665Посмотреть сообщение
оно есть, расскомментируй
Код:
            #FertilBot,          # Удобрение деревьев

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

Никто больше не пытался сажать деревья?
  Ответить с цитированием
Старый 12.02.2014, 19:59   #995
 Разведчик
Аватар для ZombikG
 
ZombikG никому не известный тип
Регистрация: 11.12.2012
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от mike4kzПосмотреть сообщение
Подключи PDB, поставь перед ними pdb.set_trace(), и смотри вручную, что там находится, и есть ли эти параметры вообще в том состоянии, где ты находишься в данный момент.

Подсказка... Используй 'dir(self)', потом 'dir(seld._get_game_state()' и т.д. Собственно можешь смотреть все варианты переменных и функций, которые доступны...

Не получается подключить, говорит нет такого модуля, хотя я его вижу, он есть.
Можно попросить вашу копательную часть, Питоном в совершенстве не владею и в самих библиотеках зомбота до конца не разобрался. Очень много объектов и методов, голова кругом.
  Ответить с цитированием
Старый 12.02.2014, 22:17   #996
 Разведчик
Аватар для Anch665
 
Anch665 никому не известный тип
Регистрация: 21.12.2012
Сообщений: 29
Популярность: 10
Сказал(а) спасибо: 20
Поблагодарили 4 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Спасибо за ответ ! Но в моей сборке такого нет к сожалению ... Можешь скинуть линк на ту сборку которой пользуешься ты? Пожалуйста.

парой страниц назад Читер выкладывал

Добавлено через 2 минуты
У кого бот обламывается при поднятии труб и крюков рядом с пиратами, в pickups.py измените:

Код:
for box in boxes:
            name = self._get_item_reader().get_name(box)
            boxItem = self._get_item_reader().get(box.item)
            enemies = self._get_game_location().get_all_objects_by_type("pirateEnemy")
            enemy_here = 0
            if enemies:
                for enemy in enemies:
                    if(((enemy.x - box.x)**2+(enemy.y - box.y)**2)**0.5 < 15):
                        enemy_here = 1
                        break
            if(enemy_here == 1):
                self._get_game_location().remove_object_by_id(box.id)
                print name
                logger.info(u'Сильвер мешает взять ' + name)
                continue
            gain_event = {"type":"pirateCapture","objId":box.id,"action":"capture"}
            print gain_event
            logger.info(u"Открываем " + name)
            pick_event = GamePickItem(objId=box.id)
            self._get_events_sender().send_game_events( [pick_event] )
            self._get_game_location().remove_object_by_id(box.id)

Последний раз редактировалось Anch665; 12.02.2014 в 22:19. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 12.02.2014, 23:08   #997
 Разведчик
Аватар для lokanaft
 
lokanaft никому не известный тип
Регистрация: 03.12.2010
Сообщений: 22
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 5 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Anch665, лучше так:
Код:
class BoxPickuper(BaseActor):

    def perform_action(self):
        boxes = self._get_game_location().get_all_objects_by_type(
                                                    GamePickup.type)
        enemies = self._get_game_location().get_all_objects_by_type("pirateEnemy")
        for box in boxes:
            enemy_here = 0
            name = self._get_item_reader().get_name(box)
            if enemies:
                for enemy in enemies:
                    if(((enemy.x - box.x)**2+(enemy.y - box.y)**2)**0.5 < 15):
                        enemy_here = 1
                        break
            if(enemy_here == 1):
                self._get_game_location().remove_object_by_id(box.id)
                logger.info(u'Сильвер мешает взять ' + name)
                continue
            logger.info(u'Вскрываем ' + name)
            pick_event = GamePickItem(objId=box.id)
            self._get_events_sender().send_game_events([pick_event])
            self._get_game_location().remove_object_by_id(box.id)
  Ответить с цитированием
Старый 12.02.2014, 23:10   #998
 Разведчик
Аватар для Anch665
 
Anch665 никому не известный тип
Регистрация: 21.12.2012
Сообщений: 29
Популярность: 10
Сказал(а) спасибо: 20
Поблагодарили 4 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Anch665, лучше так:

ну да, служебные принты пооставлял Но все равно спасибо!

причесал корд chop.py, избавился от принтов и вывод сделал в logger.info
Код:
# coding=utf-8
import logging
#import pdb
from game_state.game_types import GameWoodGrave, GameWoodGraveDouble,\
    GamePickItem, GameWoodTree, GameStone, GameGainItem, GamePickup
from game_state.game_event import dict2obj, obj2dict
from game_actors_and_handlers.base import BaseActor

logger = logging.getLogger(__name__)

class PirateTreeCut(BaseActor):

    def get_object_type(self):
        return "chop"

    def perform_action(self):
        resources = self._get_game_location().get_all_objects_by_type(
                    self.get_object_type()
                )
        enemies = self._get_game_location().get_all_objects_by_type("pirateEnemy")

        # пиратские острова : Остров сокровищ , Таинственный , Жуткий , Северный полюс , Остров сокровищ , Древний
        pirate_locs_id = ["exploration_isle1_random","exploration_isle2_random","exploration_isle3_random","exploration_snow1","exploration_isle1_1","exploration_isle4_random"]
        # Не понятно, что это за острова в списке ???? - Пушистый 1,2,3 и Подземелье 1,2
        #"exploration_furry1","exploration_furry2","exploration_furry3","exploration_isle_un1_1","exploration_isle_un1_2"

        instruments = [] # переменная для инструментов

        _loc = self._get_game_state().get_game_loc().get_location_id() # текущая локация
        if resources:

          if _loc not in pirate_locs_id:
            st_items = self._get_game_state().get_state().storageItems # Предметы на складе
            for item in list(st_items):
              if hasattr(item, "item"):
                if item.item == ('@CHOP_MACHETE'): #мачете
                  instruments.append(dict2obj({"item":"@CHOP_MACHETE", "count": item.count}))
                if item.item == ('@CHOP_AXE'): #топор
                  instruments.append(dict2obj({"item":"@CHOP_AXE", "count": item.count}))
                if item.item == ('@CHOP_HAMMER'): #кирка
                  instruments.append(dict2obj({"item":"@CHOP_HAMMER", "count": item.count}))
          else: instruments = self._get_game_state().get_state().pirate.instruments


          for resource in resources:
            resource_name = self._get_item_reader().get_name(resource)
            tool_needed = resource.chopCount
            type_of_res = resource.item
            type_of_instrument = self._get_item_reader().get(type_of_res).chopInstrumentType
            for tool in instruments:
                name_tool = self._get_item_reader().get_name(tool)
                if self._get_item_reader().get(tool.item).chopInstrumentType == type_of_instrument and tool.count >= tool_needed:
                    enemy_here = 0
                    if enemies:
                        for enemy in enemies:
                            if(((enemy.x - resource.x)**2+(enemy.y - resource.y)**2)**0.5 <= 15):
                                enemy_here = 1
                                break
                    if(enemy_here == 1):
                        self._get_game_location().remove_object_by_id(resource.id)
                        logger.info(u"Сильвер мешает вырубке " + resource_name)
                        break
                    gain_event = {"type":"chop","objId":resource.id,"instruments":{self._get_item_reader().get(tool.item).id:tool_needed},"action":"chop"}
                    logger.info(u"Рубим " + resource_name + u" с помощью " + str(tool_needed) + u" " + name_tool)
                    self._get_events_sender().send_game_events( [gain_event] )
                    self._get_game_location().remove_object_by_id(resource.id)
                    tool.count -= tool_needed
                    break
        else:
            logger.info("Не осталось ресурсов для добычи")
        resources = self._get_game_location().get_all_objects_by_type("pirateCaptureObject")
        if resources:
            for resource in resources:
                resource_name = self._get_item_reader().get_name(resource)
                enemy_here = 0
                if enemies:
                    for enemy in enemies:
                        if(((enemy.x - resource.x)**2+(enemy.y - resource.y)**2)**0.5 <= 15):
                            enemy_here = 1
                            break
                if(enemy_here == 1):
                    self._get_game_location().remove_object_by_id(resource.id)
                    logger.info(u"Сильвер мешает взять " + resource_name)
                    continue
                gain_event = {"type":"pirateCapture","objId":resource.id,"action":"capture"}
                logger.info(u"Открываем " + resource_name)
                self._get_events_sender().send_game_events( [gain_event] )
                self._get_game_location().remove_object_by_id(resource.id)
        else:
            logger.info("Нет неоткрытых сокровищ")

Последний раз редактировалось Anch665; 12.02.2014 в 23:18.
  Ответить с цитированием
Старый 13.02.2014, 00:27   #999
Заблокирован
 Разведчик
Аватар для Cheater84
 
Cheater84 неизвестен в этих краях
Регистрация: 27.08.2013
Сообщений: 2
Популярность: -54
Сказал(а) спасибо: 5
Поблагодарили 15 раз(а) в 14 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от vintetsПосмотреть сообщение
А почему 500? Может нужно 0?
с 500 в условие может успеть опять войти, там же по всем рулеткам пробегает, а ежедневка на каждом проходе проверяется.

попробовал с 500 и 0.....с 0 работает отлично))

Добавлено через 3 минуты
было бы не плохо если бы здесь можно было выкладывать как на гитхабе коды с возможностью их допиливания,без копирования и вставки...(это я к админам и разрабам сайта если что....)

Последний раз редактировалось Cheater84; 13.02.2014 в 00:30. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 13.02.2014, 04:28   #1000
 Разведчик
Аватар для bosoi
 
bosoi никому не известный тип
Регистрация: 28.06.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Ребята уже устал писать помогите не крутит рулетки за вишню за яблоки итд...ПОМОГИТЕ
  Ответить с цитированием
Старый 13.02.2014, 05:47   #1001
 Разведчик
Аватар для Anch665
 
Anch665 никому не известный тип
Регистрация: 21.12.2012
Сообщений: 29
Популярность: 10
Сказал(а) спасибо: 20
Поблагодарили 4 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

В каpзино за 5 фишек вылетает ошибка, может где подправить?
Код:
[2014-02-13 05:43:06,539] Крутим рулетку в 'Казино' 36699 по координатам (37, 10)
[2014-02-13 05:43:06,607] ingame error
[2014-02-13 05:43:06,609] Connection : {'crc': '171776aeaa9cbf59a9fabad267acd717', 'data': u'{"user":"35834355","type":"EVT","id":1392255716926,,"events":[{"action":"play","type":"game","objId":36699,"extraId":"SKLEP_FILL_CHIPS"}]}'}
[2014-02-13 05:43:06,611] Response : {u'msg': u'ingame error', u'cmd': u'ERR', u'id': u'1392255716926'}
[2014-02-13 05:43:06,611] Загружаем остров...
[2014-02-13 05:43:10,569] Остров загружен!
ну и собственно код
Код:
                # Крутить рулетку в казино если фишек = 0
                item_count=self._get_game_state().count_in_storage("@O_CHIPS")
                if (building_item.name==u'Казино'):
                    if (item_count==0):
                        play_cost = None
                    else: 
                        play_cost = 'Nul'
                # Конец казино
  Ответить с цитированием
Старый 13.02.2014, 07:38   #1002
Заблокирован
 Разведчик
Аватар для Cheater84
 
Cheater84 неизвестен в этих краях
Регистрация: 27.08.2013
Сообщений: 2
Популярность: -54
Сказал(а) спасибо: 5
Поблагодарили 15 раз(а) в 14 сообщениях
 
Exclamation Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от Anch665Посмотреть сообщение
В каpзино за 5 фишек вылетает ошибка, может где подправить?
Код:
[2014-02-13 05:43:06,539] Крутим рулетку в 'Казино' 36699 по координатам (37, 10)
[2014-02-13 05:43:06,607] ingame error
[2014-02-13 05:43:06,609] Connection : {'crc': '171776aeaa9cbf59a9fabad267acd717', 'data': u'{"user":"35834355","type":"EVT","id":1392255716926,,"events":[{"action":"play","type":"game","objId":36699,"extraId":"SKLEP_FILL_CHIPS"}]}'}
[2014-02-13 05:43:06,611] Response : {u'msg': u'ingame error', u'cmd': u'ERR', u'id': u'1392255716926'}
[2014-02-13 05:43:06,611] Загружаем остров...
[2014-02-13 05:43:10,569] Остров загружен!
ну и собственно код
Код:
                # Крутить рулетку в казино если фишек = 0
                item_count=self._get_game_state().count_in_storage("@O_CHIPS")
                if (building_item.name==u'Казино'):
                    if (item_count==0):
                        play_cost = None
                    else: 
                        play_cost = 'Nul'
                # Конец казино



PHP код:
# coding=utf-8
import logging
from game_state
.game_types import GameBuildingGamePlayGameDailyBonus
from game_actors_and_handlers
.base import BaseActor
from game_state
.game_event import obj2dictdict2obj

logger 
logging.getLogger(__name__)

                    
class 
RouletteRoller(BaseActor):

    
def perform_action(self):
        
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)
            for 
game in building_item.games:
                
game_id game.id

                play_cost 
None
                
if hasattr(game'playCost'):
                    
play_cost game.playCost

                
if hasattr(game'playsCount'):
                    
plays building.playsCounts.__dict__
                    
if plays[game_id] >= game.playsCount:
                        continue

                
next_play None
                next_play_times 
building.nextPlayTimes.__dict__

                
if game_id in next_play_times:
                    
next_play int(next_play_times[game_id])

                
# Рулетка в таверне
                
if game_id == "B_TAVERNA_ROULETTE_1":
                    
pirate_box 0
                    
for _obj in list(self._get_game_state().get_state().storageGameObjects):
                       if 
_obj.item == '@PIRATE_BOX' or _obj.item == '@PIRATE_BOX_2'pirate_box 1
                    
if pirate_box!=and (self._get_game_state().get_state().pirate.state != 'PIRATE'): play_cost None
                    
else: play_cost game.unconditionalPlayCost

                
# Ежедневный бонус
                
dailyBonus self._get_game_state().get_state().dailyBonus
                
if int(dailyBonus.playFrom) and self._get_timer().has_elapsed(dailyBonus.playFrom):
                    
daily DailyBonus()
                    
self._get_events_sender().send_game_events([daily])
                    
logger.info(u"Крутим рулетку: Ежедневный бонус")
                    
dailyBonus.playFrom 0
                
#конец ежедневной рулетке

                
if next_play is Noneget_next_play False
                
else: get_next_play self._get_timer().has_elapsed(next_play)
                
                
# Крутить рулетку в аисте за 25 малины
                
item_count=self._get_game_state().count_in_storage('@S_57')
                if 
building_item.id == 'B_TREE_STORK' and game_id == 'B_TREE_STORK_ROULETTE' and item_count>=25:
                    
self._get_game_state().remove_from_storage('@S_57',25)
                    
play_cost None
                
# Конец аиста

                # Крутить рулетку в Адмирале за 1 глазной суп
                
item_count=self._get_game_state().count_in_storage ('@R_60')
                if 
building_item.id == 'B_SOLDIER' and game_id == 'B_SOLDIER_ROULETTE' and item_count>=1:
                    
self._get_game_state().remove_from_storage('@R_60' ,1)
                    
play_cost None
                
# Конец Адмирала 

                # Крутить рулетку в Вишнёвом автомате за 1 вишеневый джем
                
item_count=self._get_game_state().count_in_storage ('@R_57')
                if 
building_item.id == 'B_SLOT_CHERRY' and game_id == 'B_SLOT_CHERRY_ROULETTE2' and item_count>=1000:
                    
self._get_game_state().remove_from_storage('@R_57' ,1)
                    
play_cost None
                
# Конец Вишнёвого автомата

                
'''# Крутить рулетку в Вишнёвом автомате за 5 вишен
                item_count=self._get_game_state().count_in_storage ('
@S_52')
                if building_item.id == '
B_SLOT_CHERRY' and game_id == 'B_SLOT_B_ROULETTE1' and item_count>=1000:
                    self._get_game_state().remove_from_storage('
@S_52' ,5)
                    play_cost = None
                    logger.info(u"Осталось %d вишни" %(item_count))
                # Конец Вишнёвого автомата

                # Крутить рулетку в Мандариновом автомате за 5 мандарин
                item_count=self._get_game_state().count_in_storage ('
@S_53')
                if building_item.id == '
B_SLOT_MANDARIN' and game_id == 'B_SLOT_B_ROULETTE1' and item_count>=1000:
                    self._get_game_state().remove_from_storage('
@S_52' ,5)
                    play_cost = None
                    logger.info(u"Осталось %d мандарин" %(item_count))
                # Конец мандаринового автомата


                # Крутить рулетку в Адмирале за 5 глазных яблок, item_count - сколько оставить на складе
                item_count=self._get_game_state().count_in_storage ('
@S_55')
                if building_item.id == '
B_SOLDIER' and game_id == 'B_SOLDIER_ROULETTE2' and item_count>=2000:
                    self._get_game_state().remove_from_storage('
@S_55' ,5)
                    play_cost = None
                # Конец Адмирала'''  

                
# Крутить рулетку в казино если фишек = 0
                
item_count=self._get_game_state().count_in_storage("@O_CHIPS")
                if (
building_item.name==u'Казино'):
                    if (
item_count==0):
                        
play_cost None
                    
else: 
                        
play_cost 'Nul'
                
# Конец казино

                # Зомби фортуна за 5 фишек
                
if (building_item.name==u'Зомби-фортуна') and (game_id == 'B_SLOT_B_ROULETTE1') and item_count>=5:
                    
self._get_game_state().remove_from_storage('@O_CHIPS',5)
                    
play_cost None
                    next_play 
False
                
# Конец зомби фортуны
                
                #print building_item.name
                #print next_play_times
                #print next_play
                #print get_next_play
                #print play_cost
                #print (play_cost is None)
                #print ((not next_play) and (game.level == building.level))
                #print ((next_play and self._get_timer().has_elapsed(next_play)) or ((not next_play) and (game.level == building.level)))
                #raw_input()
                    
                #if (
                #        (play_cost is None) and
                #        ((next_play and get_next_play) or ((not next_play) and (game.level == building.level)))
                #):
                #    logger.info(
                #        u"Крутим рулетку в '" +
                #        building_item.name + "' " +
                #        str(building.id) +
                #        u" по координатам (" +
                #        str(building.x) + u", " + str(building.y) + u")")
                #    roll = GamePlayGame(building.id, game_id)
                #    self._get_events_sender().send_game_events([roll])

                
if ((play_cost is None) and
                        ((
next_play and get_next_play) or ((not next_play) and (game.level == building.level)))):
                    
enemies self._get_game_location().get_all_objects_by_type("pirateEnemy")
                    
enemy_here 0
                    
if enemies:
                        for 
enemy in enemies:
                            if(((
enemy.building.x)**2+(enemy.building.y)**2)**0.5 15):
                                
enemy_here 1
                                
break
                    if(
enemy_here == 1):
                        
logger.info("Сильвер мешает крутить рулетку "+str(building.id))
                        continue
                    
logger.info(
                        
u"Крутим рулетку в '" +
                        
building_item.name "' " +
                        
str(building.id) +
                        
u" по координатам (" +
                        
str(building.x) + u", " str(building.y) + u")")
                    
roll GamePlayGame(building.idgame_id)
                    
self._get_events_sender().send_game_events([roll]) 




class 
GameResultHandler(object):
    
def __init__(selfitem_readergame_location,game_state):
        
self.__item_reader item_reader
        self
.__game_location game_location
        self
.__game_state_ game_state

    def handle
(selfevent_to_handle):
        
nextPlayDate event_to_handle.nextPlayDate
        extraId 
event_to_handle.extraId
        obj_id 
event_to_handle.objId
        gameObject 
self.__game_location.get_object_by_id(obj_id)
        if 
gameObject is None:
            
logger.critical("OMG! No such object")
            return
        else:
            
gameObject.nextPlayTimes.__setattr__(extraIdnextPlayDate)
            
building self.__item_reader.get(gameObject.item)
            for 
game in building.games:
                if 
game.id == extraId:
                    
game_prize None
                    
if hasattr(event_to_handle.result'pos'):
                        
prize_pos event_to_handle.result.pos
                        game_prize 
game.prizes[prize_pos]
                    
elif hasattr(event_to_handle.result'won'):
                        
prize_pos event_to_handle.result.won
                        
if prize_pos is not None:
                            
game_prize game.combinations[prize_pos].prize
                    
if game_prize:
                        
prize_item game_prize.item
                        prize 
self.__item_reader.get(prize_item)
                        
count game_prize.count
                        
#print 'Rollets'
                        #print prize_item
                        
self.__game_state_.add_from_storage(prize_item,count)
                        
logger.info(u'Вы выиграли ' prize.name +
                                    
u'(' str(count) + u' шт.)')
                        
#open('prize.txt','a').write(prize.name.encode("cp1251") + '\t(' + str(count) + u' шт.)'.encode("cp1251")+'\n')
                        
open('prize.txt','a').write(prize.name.encode("cp1251") + '\t;' str(count) +'\n')
                    else:
                        
logger.info('Вы ничего не выиграли.')


class 
FrutRouletteRoller(BaseActor):

    
def perform_action(self):
        
# '@R_56' Компот
        # '@R_57' Вишнёвый джем
        # '@R_58' Лимонный микс
        # '@R_59' Мармелад
        # '@R_60' Глазной суп
        # '@S_53' Мандарин
        # '@S_52' Вишня
        # '@S_51' Красные яблоки        
        # '@S_55' Глазное яблоко
        
ftut_ids = {'@R_56','@R_57'}
        
#ftut_ids = ['@R_56']
        
for fr in ftut_ids:
            
frut_count=self._get_game_state().count_in_storage(fr)
            if 
frut_count==0: break
            
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)
                for 
game in building_item.games:
                    
game_id game.id
                    play_cost 
None
                    
if hasattr(game'playCost'):
                        
play_cost game.playCost.item

                    
#{"type":"roulette","id":"B_SLOT_APPLE_ROULETTE2","level":1,"delayTime":0,"title":"Бонус-Рулетка","hint":"Крути рулетку за 1 Компот, чтобы испытать удачу.","playCost":{"count":1,"image":"storage/recipe_56.png","item":"@R_56"},"prizes":[{"count":1,"item":"@EGG_01"},{"count":5,"item":"@RED_SPEEDUPER"},{"count":1,"item":"@EGG_02"},{"count":10,"item":"@RED_TREE_FERTILIZER"},{"count":5,"item":"@RED_SPEEDUPER"},{"count":1,"item":"@EGG_04"},{"count":10,"item":"@RED_TREE_FERTILIZER"}]}
                    
next_play None
                    next_play_times 
building.nextPlayTimes.__dict__
                    
if game_id in next_play_times:
                        
next_play int(next_play_times[game_id])
                    if (
                            
next_play and
                            
self._get_timer().has_elapsed(next_play) and
                            
play_cost == fr
                    
):
                        
countR=0
                        
for i in range(frut_count):
                            
roll GamePlayGame(building.idgame_id)
                            
self._get_events_sender().send_game_events([roll])
                            
countR+=1
                            self
._get_game_state().remove_from_storage(fr,1)
                        
logger.info(u"Крутим рулетку %d раз в '%s' %d по координатам (%d,%d)"%(countR,building_item.name,building.id,building.x,building.y))
                        
#logger.info(u"Крутим рулетку "+str(countR)+" раз в '"+building_item.name + "' " +str(building.id)+u" по координатам (" +str(building.x) + u", " + str(building.y) + u")") 

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

По поводу chop.py.
А что черепа никому не нужны? Почему никто не рубит камни по 100 сериями по 50?

После:
PHP код:
if(enemy_here == 1):
    
self._get_game_location().remove_object_by_id(resource.id)
    
logger.info("Сильвер мешает вырубке "+str(resource.id))
    break 
добавляем
PHP код:
if tool_needed == 100:
    
tool_needed 50 
________________

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

Цитата:
Никто больше не пытался сажать деревья?

Пытался немного. Есть парочка идей, нужно только реализовать
1. Создать модуль для создания карты островов.
- Берем остров (из списка указанных в модуле).
- Берем что-то размером 1х1 (например, Фонарь в снегу) и прогоняем в 2-йном цикле move для него. Отловом исключений получаем 0 - можно ставить, 1 - нельзя.
- Размеры острова и карту острова загоняем в переменные секции с названием острова в специально созданный ini-файл.

2. Создаем модуль для посадки деревьев. В нем по списку островов выдергиваем по имени нужного данные и согласно карты садим деревья.

Есть парочка НО...
а) на всех островах есть поля, недоступные для установки чего-либо из игрового клиента. Как их отловить, я так и не понял. По сути, если остров невиден для посетителей, то можно особо и не париццо.
б) могут быть еще подводные камни, пока не придумал какие

ЗЫ. Пример в картинке. Только карта сделана прогоном через 1 в ручном режиме и не с нулевых координат, а за вычетом недоступных в игре полей.
Изображения
Тип файла: jpg map.jpg (174.5 Кб, 68 просмотров)

Последний раз редактировалось dark-dragon; 13.02.2014 в 11:09.
  Ответить с цитированием
Старый 13.02.2014, 13:52   #1005
 Разведчик
Аватар для Arsac
 
Arsac никому не известный тип
Регистрация: 08.11.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от Cheater84Посмотреть сообщение
PHP код:
# coding=utf-8
import logging
from game_state
.game_types import GameBuildingGamePlayGameDailyBonus
from game_actors_and_handlers
.base import BaseActor
from game_state
.game_event import obj2dictdict2obj

logger 
logging.getLogger(__name__)

                    
class 
RouletteRoller(BaseActor):

    
def perform_action(self):
        
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)
            for 
game in building_item.games:
                
game_id game.id

                play_cost 
None
                
if hasattr(game'playCost'):
                    
play_cost game.playCost

                
if hasattr(game'playsCount'):
                    
plays building.playsCounts.__dict__
                    
if plays[game_id] >= game.playsCount:
                        continue

                
next_play None
                next_play_times 
building.nextPlayTimes.__dict__

                
if game_id in next_play_times:
                    
next_play int(next_play_times[game_id])

                
# Рулетка в таверне
                
if game_id == "B_TAVERNA_ROULETTE_1":
                    
pirate_box 0
                    
for _obj in list(self._get_game_state().get_state().storageGameObjects):
                       if 
_obj.item == '@PIRATE_BOX' or _obj.item == '@PIRATE_BOX_2'pirate_box 1
                    
if pirate_box!=and (self._get_game_state().get_state().pirate.state != 'PIRATE'): play_cost None
                    
else: play_cost game.unconditionalPlayCost

                
# Ежедневный бонус
                
dailyBonus self._get_game_state().get_state().dailyBonus
                
if int(dailyBonus.playFrom) and self._get_timer().has_elapsed(dailyBonus.playFrom):
                    
daily DailyBonus()
                    
self._get_events_sender().send_game_events([daily])
                    
logger.info(u"Крутим рулетку: Ежедневный бонус")
                    
dailyBonus.playFrom 0
                
#конец ежедневной рулетке

                
if next_play is Noneget_next_play False
                
else: get_next_play self._get_timer().has_elapsed(next_play)
                
                
# Крутить рулетку в аисте за 25 малины
                
item_count=self._get_game_state().count_in_storage('@S_57')
                if 
building_item.id == 'B_TREE_STORK' and game_id == 'B_TREE_STORK_ROULETTE' and item_count>=25:
                    
self._get_game_state().remove_from_storage('@S_57',25)
                    
play_cost None
                
# Конец аиста

                # Крутить рулетку в Адмирале за 1 глазной суп
                
item_count=self._get_game_state().count_in_storage ('@R_60')
                if 
building_item.id == 'B_SOLDIER' and game_id == 'B_SOLDIER_ROULETTE' and item_count>=1:
                    
self._get_game_state().remove_from_storage('@R_60' ,1)
                    
play_cost None
                
# Конец Адмирала 

                # Крутить рулетку в Вишнёвом автомате за 1 вишеневый джем
                
item_count=self._get_game_state().count_in_storage ('@R_57')
                if 
building_item.id == 'B_SLOT_CHERRY' and game_id == 'B_SLOT_CHERRY_ROULETTE2' and item_count>=1000:
                    
self._get_game_state().remove_from_storage('@R_57' ,1)
                    
play_cost None
                
# Конец Вишнёвого автомата

                
'''# Крутить рулетку в Вишнёвом автомате за 5 вишен
                item_count=self._get_game_state().count_in_storage ('
@S_52')
                if building_item.id == '
B_SLOT_CHERRY' and game_id == 'B_SLOT_B_ROULETTE1' and item_count>=1000:
                    self._get_game_state().remove_from_storage('
@S_52' ,5)
                    play_cost = None
                    logger.info(u"Осталось %d вишни" %(item_count))
                # Конец Вишнёвого автомата

                # Крутить рулетку в Мандариновом автомате за 5 мандарин
                item_count=self._get_game_state().count_in_storage ('
@S_53')
                if building_item.id == '
B_SLOT_MANDARIN' and game_id == 'B_SLOT_B_ROULETTE1' and item_count>=1000:
                    self._get_game_state().remove_from_storage('
@S_52' ,5)
                    play_cost = None
                    logger.info(u"Осталось %d мандарин" %(item_count))
                # Конец мандаринового автомата


                # Крутить рулетку в Адмирале за 5 глазных яблок, item_count - сколько оставить на складе
                item_count=self._get_game_state().count_in_storage ('
@S_55')
                if building_item.id == '
B_SOLDIER' and game_id == 'B_SOLDIER_ROULETTE2' and item_count>=2000:
                    self._get_game_state().remove_from_storage('
@S_55' ,5)
                    play_cost = None
                # Конец Адмирала'''  

                
# Крутить рулетку в казино если фишек = 0
                
item_count=self._get_game_state().count_in_storage("@O_CHIPS")
                if (
building_item.name==u'Казино'):
                    if (
item_count==0):
                        
play_cost None
                    
else: 
                        
play_cost 'Nul'
                
# Конец казино

                # Зомби фортуна за 5 фишек
                
if (building_item.name==u'Зомби-фортуна') and (game_id == 'B_SLOT_B_ROULETTE1') and item_count>=5:
                    
self._get_game_state().remove_from_storage('@O_CHIPS',5)
                    
play_cost None
                    next_play 
False
                
# Конец зомби фортуны
                
                #print building_item.name
                #print next_play_times
                #print next_play
                #print get_next_play
                #print play_cost
                #print (play_cost is None)
                #print ((not next_play) and (game.level == building.level))
                #print ((next_play and self._get_timer().has_elapsed(next_play)) or ((not next_play) and (game.level == building.level)))
                #raw_input()
                    
                #if (
                #        (play_cost is None) and
                #        ((next_play and get_next_play) or ((not next_play) and (game.level == building.level)))
                #):
                #    logger.info(
                #        u"Крутим рулетку в '" +
                #        building_item.name + "' " +
                #        str(building.id) +
                #        u" по координатам (" +
                #        str(building.x) + u", " + str(building.y) + u")")
                #    roll = GamePlayGame(building.id, game_id)
                #    self._get_events_sender().send_game_events([roll])

                
if ((play_cost is None) and
                        ((
next_play and get_next_play) or ((not next_play) and (game.level == building.level)))):
                    
enemies self._get_game_location().get_all_objects_by_type("pirateEnemy")
                    
enemy_here 0
                    
if enemies:
                        for 
enemy in enemies:
                            if(((
enemy.building.x)**2+(enemy.building.y)**2)**0.5 15):
                                
enemy_here 1
                                
break
                    if(
enemy_here == 1):
                        
logger.info("Сильвер мешает крутить рулетку "+str(building.id))
                        continue
                    
logger.info(
                        
u"Крутим рулетку в '" +
                        
building_item.name "' " +
                        
str(building.id) +
                        
u" по координатам (" +
                        
str(building.x) + u", " str(building.y) + u")")
                    
roll GamePlayGame(building.idgame_id)
                    
self._get_events_sender().send_game_events([roll]) 




class 
GameResultHandler(object):
    
def __init__(selfitem_readergame_location,game_state):
        
self.__item_reader item_reader
        self
.__game_location game_location
        self
.__game_state_ game_state

    def handle
(selfevent_to_handle):
        
nextPlayDate event_to_handle.nextPlayDate
        extraId 
event_to_handle.extraId
        obj_id 
event_to_handle.objId
        gameObject 
self.__game_location.get_object_by_id(obj_id)
        if 
gameObject is None:
            
logger.critical("OMG! No such object")
            return
        else:
            
gameObject.nextPlayTimes.__setattr__(extraIdnextPlayDate)
            
building self.__item_reader.get(gameObject.item)
            for 
game in building.games:
                if 
game.id == extraId:
                    
game_prize None
                    
if hasattr(event_to_handle.result'pos'):
                        
prize_pos event_to_handle.result.pos
                        game_prize 
game.prizes[prize_pos]
                    
elif hasattr(event_to_handle.result'won'):
                        
prize_pos event_to_handle.result.won
                        
if prize_pos is not None:
                            
game_prize game.combinations[prize_pos].prize
                    
if game_prize:
                        
prize_item game_prize.item
                        prize 
self.__item_reader.get(prize_item)
                        
count game_prize.count
                        
#print 'Rollets'
                        #print prize_item
                        
self.__game_state_.add_from_storage(prize_item,count)
                        
logger.info(u'Вы выиграли ' prize.name +
                                    
u'(' str(count) + u' шт.)')
                        
#open('prize.txt','a').write(prize.name.encode("cp1251") + '\t(' + str(count) + u' шт.)'.encode("cp1251")+'\n')
                        
open('prize.txt','a').write(prize.name.encode("cp1251") + '\t;' str(count) +'\n')
                    else:
                        
logger.info('Вы ничего не выиграли.')


class 
FrutRouletteRoller(BaseActor):

    
def perform_action(self):
        
# '@R_56' Компот
        # '@R_57' Вишнёвый джем
        # '@R_58' Лимонный микс
        # '@R_59' Мармелад
        # '@R_60' Глазной суп
        # '@S_53' Мандарин
        # '@S_52' Вишня
        # '@S_51' Красные яблоки        
        # '@S_55' Глазное яблоко
        
ftut_ids = {'@R_56','@R_57'}
        
#ftut_ids = ['@R_56']
        
for fr in ftut_ids:
            
frut_count=self._get_game_state().count_in_storage(fr)
            if 
frut_count==0: break
            
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)
                for 
game in building_item.games:
                    
game_id game.id
                    play_cost 
None
                    
if hasattr(game'playCost'):
                        
play_cost game.playCost.item

                    
#{"type":"roulette","id":"B_SLOT_APPLE_ROULETTE2","level":1,"delayTime":0,"title":"Бонус-Рулетка","hint":"Крути рулетку за 1 Компот, чтобы испытать удачу.","playCost":{"count":1,"image":"storage/recipe_56.png","item":"@R_56"},"prizes":[{"count":1,"item":"@EGG_01"},{"count":5,"item":"@RED_SPEEDUPER"},{"count":1,"item":"@EGG_02"},{"count":10,"item":"@RED_TREE_FERTILIZER"},{"count":5,"item":"@RED_SPEEDUPER"},{"count":1,"item":"@EGG_04"},{"count":10,"item":"@RED_TREE_FERTILIZER"}]}
                    
next_play None
                    next_play_times 
building.nextPlayTimes.__dict__
                    
if game_id in next_play_times:
                        
next_play int(next_play_times[game_id])
                    if (
                            
next_play and
                            
self._get_timer().has_elapsed(next_play) and
                            
play_cost == fr
                    
):
                        
countR=0
                        
for i in range(frut_count):
                            
roll GamePlayGame(building.idgame_id)
                            
self._get_events_sender().send_game_events([roll])
                            
countR+=1
                            self
._get_game_state().remove_from_storage(fr,1)
                        
logger.info(u"Крутим рулетку %d раз в '%s' %d по координатам (%d,%d)"%(countR,building_item.name,building.id,building.x,building.y))
                        
#logger.info(u"Крутим рулетку "+str(countR)+" раз в '"+building_item.name + "' " +str(building.id)+u" по координатам (" +str(building.x) + u", " + str(building.y) + u")") 

Привет. Хотел спросить у тебя по поводу фрэнд диггера у тебя на гитхабе :-). Сие чудо не допиленно до рабочего состояния? А то я ковырялся-ковырялся так и не смог его запустить))))
  Ответить с цитированием
Ответ


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

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, время: 03: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