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

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

-

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

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

Ответ
 
Опции темы
Старый 05.02.2014, 21:38   #946
 Разведчик
Аватар для dexin
 
dexin никому не известный тип
Регистрация: 11.01.2012
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

выложите кто нить клиент ля контакта плиз рабочий запарился не запускается ни в какую хотя все по инструкции делаю заранее спасибо. операционка 32х разрядная

Последний раз редактировалось dexin; 05.02.2014 в 23:09.
  Ответить с цитированием
Старый 05.02.2014, 23:43   #947
 Разведчик
Аватар для neohomer
 
neohomer никому не известный тип
Регистрация: 28.09.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

отличная сборка!!!

непонятно только, что копалке мешает запуститься....[Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
Старый 06.02.2014, 01:39   #948
 Разведчик
Аватар для mike4kz
 
mike4kz никому не известный тип
Регистрация: 23.08.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от Anch665Посмотреть сообщение
У кого нибудь бот рубит на новых островах? Бот от Cheater84 игнорит все, но рулетки крутит.

Вероятнее всего потому, что в game_engine.py этот модуль закоментирован. Потратьте немного времени и разберитесь, где что включается и выключается. А лучше сделайте копии директорий - одну для "повседневной работы", другую для копания у друзей, третью для поездок на пиратские острова...
  Ответить с цитированием
Старый 06.02.2014, 03:24   #949
 Разведчик
Аватар для As1x89
 
As1x89 скоро будет известенAs1x89 скоро будет известенAs1x89 скоро будет известен
Регистрация: 03.11.2012
Сообщений: 30
Популярность: 238
Сказал(а) спасибо: 26
Поблагодарили 3 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от mike4kzПосмотреть сообщение
Вероятнее всего потому, что в game_engine.py этот модуль закоментирован. Потратьте немного времени и разберитесь, где что включается и выключается. А лучше сделайте копии директорий - одну для "повседневной работы", другую для копания у друзей, третью для поездок на пиратские острова...

У меня тоже не рубит... надо что-то в chope добавить чтобы рубило. Что-то там не так... походу то, что инструмент не в сундуке, а просто на складе
  Ответить с цитированием
Старый 06.02.2014, 05:05   #950
 Разведчик
Аватар для Anch665
 
Anch665 никому не известный тип
Регистрация: 21.12.2012
Сообщений: 29
Популярность: 10
Сказал(а) спасибо: 20
Поблагодарили 4 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от As1x89Посмотреть сообщение
У меня тоже не рубит... надо что-то в chope добавить чтобы рубило. Что-то там не так... походу то, что инструмент не в сундуке, а просто на складе

истину говоришь.
вся загвоздка тут, эта строка возвращает пустые значения.
tools = self._get_game_state().get_state().pirate
  Ответить с цитированием
Старый 06.02.2014, 10:40   #951
 Разведчик
Аватар для eTorres
 
eTorres никому не известный тип
Регистрация: 20.04.2012
Сообщений: 4
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 5 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от vintetsПосмотреть сообщение
Кто нибудь разбирается в JS ?
Подскажите, где вот этот код берёт private_key


Нет там такого куска кода. Private_key должен отдавать mail.ru в ответ на запрос от app. Такого запроса в коде нет. Как и места где происходит вызов app.init(). Код не полный, это мое мнение!
  Ответить с цитированием
Старый 06.02.2014, 11:52   #952
 Пехотинец
Аватар для vintets
 
vintets скоро будет известенvintets скоро будет известенvintets скоро будет известен
Регистрация: 01.08.2012
Сообщений: 95
Популярность: 255
Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от eTorresПосмотреть сообщение
Нет там такого куска кода. Private_key должен отдавать mail.ru в ответ на запрос от app. Такого запроса в коде нет. Как и места где происходит вызов app.init(). Код не полный, это мое мнение!

Да что же Мэйл как проклятый... В одноклассниках Private_key передаётся при запросе параметров приложения, в ВКонтакте хз походу и не нужен, на мыле - нет. Я думал он в яву встроен или получает откуда.
session_key передают, а это не видно.
Ведь подпись использующая Private_key идёт от меня, пишет что от флэшки.

Маил получает такие:
u'vid': u'111',
u'is_app_user': u'1',
u'oid': u'222',
u'app_id': u'609744',
u'ext_perm': u'notifications,payments',
u'window_id': u'CometName_333',
u'sig': u'444',
u'authentication_key': u'555',
u'session_key': u'666',
u'session_expire': u'1391239066',
u'referer_type': u'invitation',
u'referer_id': u'777'}

Для расчёта подписи запроса API перепробовал уже все на всякий случай
В ОК шлётся ещё
u'session_secret_key': u'888'

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

Цитата:
Сообщение от Anch665Посмотреть сообщение
истину говоришь.
вся загвоздка тут, эта строка возвращает пустые значения.
tools = self._get_game_state().get_state().pirate

Потому что это не пиратский остров и инструменты взяты не с собой, а на складе лежат.
  Ответить с цитированием
Старый 06.02.2014, 15:01   #954
 Разведчик
Аватар для zw[ty
 
zw[ty на правильном пути
Регистрация: 22.04.2013
Сообщений: 5
Популярность: 85
Сказал(а) спасибо: 0
Поблагодарили 13 раз(а) в 10 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

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

Вот такой примерно, включая старый вариант со словарями получился:
Код:
# coding=utf-8
import logging
from game_actors_and_handlers.base import BaseActor
from game_state.game_event import dict2obj, obj2dict
import copy

logger = logging.getLogger(__name__)

class ObjectInsert(BaseActor):

    def perform_action(self):
        # Где ставим
        locations = ['isle_dream', 'isle_faith']
        # что ставим
        needs = ['FT_APPLE']

        current_loc = self._get_game_state().get_location_id()
        if not current_loc in locations:
            logger.info(u"Пропускаем "+current_loc)
            return 1
        #location = self._get_item_reader().get(current_loc)#"rectX":-300,"rectY":-1600,"rectWidth":4000,"rectHeight":3000

        crd, bad_crd = self.get_coords(current_loc)
        #logger.info(str(obj2dict(crd)).encode('utf-8'))
        obj_cache = {}
        
        objects = self._get_game_location().get_game_objects()

        for object in list(objects):#переберём объекты на острове
            if not hasattr(object, 'x') or not hasattr(object, 'item'):
                continue

            x = object.x
            y = object.y
            if not object.item in obj_cache:#не будем по 1000 раз узнавать размер грядки
                object_item = self._get_item_reader().get(object.item)
                obj_cache[object.item] = object_item
            else:
                object_item = obj_cache[object.item]

            for rect in list(object_item.rects):#"rects":[{"rectX":0,"rectY":0,"rectW":2,"rectH":1},{"rectX":0,"rectY":0,"rectW":2,"rectH":1}]
                for ix in range(rect.rectW):
                    for iy in range(rect.rectH):
                        k = str(int(x) + ix)+''+str(int(y) + iy)
                        #logger.info(str(x)+' '+str(ix)+' '+str(y)+' '+str(iy)+' : '+k)
                        if not k in bad_crd:
                            bad_crd[0:0] = [k]
        with open('bad_crd.txt', 'w') as f:
            f.write(str(obj2dict(bad_crd)).encode('utf-8'))
        #with open('all_resources.txt', 'w') as f:
        #    f.write(str(obj2dict(self._get_game_location().get_game_objects())).encode('utf-8'))
        #die

        next_id = self._get_game_state().get_state().gameObjects[-1].id
        
        
        for need in needs:
            need = self._get_item_reader().get(need)
            for rect in list(need.rects):
                if rect.rectW > 0 and rect.rectH > 0:
                    need.w = int(rect.rectW)
                    need.h = int(rect.rectH)
            #logger.info(str(obj2dict(need)).encode('utf-8'))

            W = crd['x2'] - crd['x1'] - need.w
            H = crd['y2'] - crd['y1'] - need.h

            for iw in range(W):
                iw += crd['x1']
                for ih in range(H):
                    ih += crd['y1']
                    if (str(iw)+''+str(ih)) in bad_crd:#занято
                        continue
                    good = 1
                    add = list(bad_crd)
                    for ix in range(need.w):
                        #ix += 1
                        for iy in range(need.h):
                            #iy += 1
                            k = str(iw+ix)+''+str(ih+iy)
                            if k in bad_crd:#занято
                                good = 0
                                break
                            if not k in add:
                                add[0:0] = [k]
                        if good == 0:
                            break
                    if good == 1:
                        #ставим объект {"x":16,"y":14,"objId":210,"type":"item","itemId":"FT_APPLE","action":"buy"} {"x":64,"y":70,"objId":242,"action":"buy","itemId":"FT_APPLE","type":"item"}
                        logger.info(u"Ставим "+need.id+" на X: "+str(iw)+", Y: "+str(ih))
                        next_id += 1
                        bad_crd = list(add)
                        buy = {"x":iw,"y":ih,"action":"buy","itemId":need.id,"type":"item","objId":int(next_id)}
                        #logger.info(str(obj2dict(buy)).encode('utf-8'))
                        #logger.info(str(obj2dict(bad_crd)).encode('utf-8'))
                        self._get_events_sender().send_game_events([buy])

    def get_coords(self, ostrov):
        if(ostrov in ['isle_dream', 'isle_faith']):
            return {'y1':14, 'x1':14, 'x2':83, 'y2':75}, ['1414','1415','1416', '1514','1515','1516',
            '1473','1474','1475', '1573','1574','1575', '1673','1674','1675', '1773','1774','1775', '1873','1874','1875',
            '8114','8115','8116','8117','8118','8119','8120','8121','8122', '8214','8215','8216','8217','8218','8219','8220','8221','8222', '8314','8315','8316','8317','8318','8319','8320','8321','8322',
            '8171','8172','8173', '8271','8272','8273', '8371','8372','8373',
            '3973','3974','3975', '4073','4074','4075', '4173','4174','4175', '4273','4274','4275', '4373','4374','4375', '4473','4474','4475', '4573','4574','4575', '4673','4674','4675', '4773','4774','4775', '4873','4874','4875', '4973','4974','4975', '5073','5074','5075', '5173','5174','5175', '5273','5274','5275', '5373','5374','5375', '5473','5474','5475', '5573','5574','5575', '5673','5674','5675', '5773','5774','5775', '5873','5874','5875', '5973','5974','5975', '6073','6074','6075', '6173','6174','6175', '6273','6274','6275', '6373','6374','6375', '6473','6474','6475', '6573','6574','6575', '6673','6674','6675', '6773','6774','6775', '6873','6874','6875', '6973','6974','6975', '7073','7074','7075', '7173','7174','7175', '7273','7274','7275', '7373','7374','7375', '7473','7474','7475', '7573','7574','7575', '7673','7674','7675', '7773','7774','7775', '7873','7874','7875', '7973','7974','7975', '8073','8074','8075', '8173','8174','8175']

class ObjectInsertOld(BaseActor):

    def perform_action(self):
        # Где ставим
        locations = ['isle_03']
        # что ставим
        need = 'FT_APPLE'

        current_loc = self._get_game_state().get_location_id()
        if not current_loc in locations:
            logger.info(u"Пропускаем "+current_loc)
            return 1
        location = self._get_item_reader().get(current_loc)#"rectX":-300,"rectY":-1600,"rectWidth":4000,"rectHeight":3000
        need = self._get_item_reader().get(need)
        for rect in list(need.rects):
            if rect.rectW > 0 and rect.rectH > 0:
                need.w = int(rect.rectW)
                need.h = int(rect.rectH)
        bad_crd = {}
        #logger.info(str(obj2dict(need)).encode('utf-8'))
        objects = self._get_game_location().get_game_objects()

        for object in list(objects):#переберём объекты на острове
            if not hasattr(object, 'x') or not hasattr(object, 'item'):
                continue

            x = object.x
            y = object.y
            object_item = self._get_item_reader().get(object.item)

            for rect in list(object_item.rects):#"rects":[{"rectX":0,"rectY":0,"rectW":2,"rectH":1},{"rectX":0,"rectY":0,"rectW":2,"rectH":1}]
                for ix in range(rect.rectW):
                    for iy in range(rect.rectH):
                        #logger.info(str(x)+' '+str(ix)+' '+str(y)+' '+str(iy))
                        k1 = int(x) + ix
                        k2 = int(y) + iy
                        if not k1 in bad_crd:
                            bad_crd[k1] = {}
                        bad_crd[k1][k2] = 1
        with open('bad_crd.txt', 'w') as f:
            f.write(str(obj2dict(bad_crd)).encode('utf-8'))
        #with open('all_resources.txt', 'w') as f:
        #    f.write(str(obj2dict(self._get_game_location().get_game_objects())).encode('utf-8'))
        #die

#2000/1900 16/14 65/71
        W = 48#int(location.rectWidth) - 32 - need.w#размеры острова минус 16 по краям
        H = 48#int(location.rectHeight) - 32 - need.h
        next_id = self._get_game_state().get_state().gameObjects[-1].id

        for iw in range(W):
            iw += 16
            if iw in bad_crd and len(bad_crd[iw]) + need.w > W:#типа 100% он не влезет
                continue
            for ih in range(H):
                ih += 16
                if iw in bad_crd and ih in bad_crd[iw]:#занято
                    continue
                good = 1
                add = copy.deepcopy(bad_crd)
                for ix in range(need.w):
                    #ix += 1
                    if not iw+ix in add:
                        add[iw+ix] = {}
                    for iy in range(need.h):
                        #iy += 1
                        if (iw+ix) in bad_crd and (ih+iy) in bad_crd[(iw+ix)]:#занято
                            good = 0
                            break
                        if not ih+iy in add[iw+ix]:
                            add[iw+ix][ih+iy] = 1
                    if good == 0:
                        break
                if good == 1:
                    #ставим объект {"x":16,"y":14,"objId":210,"type":"item","itemId":"FT_APPLE","action":"buy"} {"x":64,"y":70,"objId":242,"action":"buy","itemId":"FT_APPLE","type":"item"}
                    logger.info(u"Ставим "+need.id+" на X: "+str(iw)+", Y: "+str(ih))
                    next_id += 1
                    bad_crd = copy.deepcopy(add)
                    buy = {"x":iw,"y":ih,"action":"buy","itemId":need.id,"type":"item","objId":int(next_id)}
                    #logger.info(str(obj2dict(buy)).encode('utf-8'))
                    #logger.info(str(obj2dict(bad_crd)).encode('utf-8'))
                    self._get_events_sender().send_game_events([buy])
Составил список координат только для острова мечты. С яблонями работает нормально. Я мог напутать с X и Y, но поскольку яблони квадратные, то ставится норм.
  Ответить с цитированием
Старый 06.02.2014, 15:59   #956
 Пехотинец
Аватар для vintets
 
vintets скоро будет известенvintets скоро будет известенvintets скоро будет известен
Регистрация: 01.08.2012
Сообщений: 95
Популярность: 255
Сказал(а) спасибо: 28
Поблагодарили 54 раз(а) в 38 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от lokanaftПосмотреть сообщение
Вот такой примерно, включая старый вариант со словарями получился:
...
Составил список координат только для острова мечты. С яблонями работает нормально. Я мог напутать с X и Y, но поскольку яблони квадратные, то ставится норм.

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

vintets, если старый вариант (ObjectInsertOld) убрать, то в 2 раза меньше)
  Ответить с цитированием
Старый 06.02.2014, 20:14   #958
 Разведчик
Аватар для neohomer
 
neohomer никому не известный тип
Регистрация: 28.09.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Ребята, а можно рабочий friend_dig.py для контакта?... не пойму, что там не так
  Ответить с цитированием
Старый 07.02.2014, 15:38   #959
Заблокирован
 Разведчик
Аватар для Cheater84
 
Cheater84 неизвестен в этих краях
Регистрация: 27.08.2013
Сообщений: 2
Популярность: -54
Сказал(а) спасибо: 5
Поблагодарили 15 раз(а) в 14 сообщениях
 
Exclamation Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от lokanaftПосмотреть сообщение
Вот такой примерно, включая старый вариант со словарями получился:
Код:
# coding=utf-8
import logging
from game_actors_and_handlers.base import BaseActor
from game_state.game_event import dict2obj, obj2dict
import copy

logger = logging.getLogger(__name__)

class ObjectInsert(BaseActor):

    def perform_action(self):
        # Где ставим
        locations = ['isle_dream', 'isle_faith']
        # что ставим
        needs = ['FT_APPLE']

        current_loc = self._get_game_state().get_location_id()
        if not current_loc in locations:
            logger.info(u"Пропускаем "+current_loc)
            return 1
        #location = self._get_item_reader().get(current_loc)#"rectX":-300,"rectY":-1600,"rectWidth":4000,"rectHeight":3000

        crd, bad_crd = self.get_coords(current_loc)
        #logger.info(str(obj2dict(crd)).encode('utf-8'))
        obj_cache = {}
        
        objects = self._get_game_location().get_game_objects()

        for object in list(objects):#переберём объекты на острове
            if not hasattr(object, 'x') or not hasattr(object, 'item'):
                continue

            x = object.x
            y = object.y
            if not object.item in obj_cache:#не будем по 1000 раз узнавать размер грядки
                object_item = self._get_item_reader().get(object.item)
                obj_cache[object.item] = object_item
            else:
                object_item = obj_cache[object.item]

            for rect in list(object_item.rects):#"rects":[{"rectX":0,"rectY":0,"rectW":2,"rectH":1},{"rectX":0,"rectY":0,"rectW":2,"rectH":1}]
                for ix in range(rect.rectW):
                    for iy in range(rect.rectH):
                        k = str(int(x) + ix)+''+str(int(y) + iy)
                        #logger.info(str(x)+' '+str(ix)+' '+str(y)+' '+str(iy)+' : '+k)
                        if not k in bad_crd:
                            bad_crd[0:0] = [k]
        with open('bad_crd.txt', 'w') as f:
            f.write(str(obj2dict(bad_crd)).encode('utf-8'))
        #with open('all_resources.txt', 'w') as f:
        #    f.write(str(obj2dict(self._get_game_location().get_game_objects())).encode('utf-8'))
        #die

        next_id = self._get_game_state().get_state().gameObjects[-1].id
        
        
        for need in needs:
            need = self._get_item_reader().get(need)
            for rect in list(need.rects):
                if rect.rectW > 0 and rect.rectH > 0:
                    need.w = int(rect.rectW)
                    need.h = int(rect.rectH)
            #logger.info(str(obj2dict(need)).encode('utf-8'))

            W = crd['x2'] - crd['x1'] - need.w
            H = crd['y2'] - crd['y1'] - need.h

            for iw in range(W):
                iw += crd['x1']
                for ih in range(H):
                    ih += crd['y1']
                    if (str(iw)+''+str(ih)) in bad_crd:#занято
                        continue
                    good = 1
                    add = list(bad_crd)
                    for ix in range(need.w):
                        #ix += 1
                        for iy in range(need.h):
                            #iy += 1
                            k = str(iw+ix)+''+str(ih+iy)
                            if k in bad_crd:#занято
                                good = 0
                                break
                            if not k in add:
                                add[0:0] = [k]
                        if good == 0:
                            break
                    if good == 1:
                        #ставим объект {"x":16,"y":14,"objId":210,"type":"item","itemId":"FT_APPLE","action":"buy"} {"x":64,"y":70,"objId":242,"action":"buy","itemId":"FT_APPLE","type":"item"}
                        logger.info(u"Ставим "+need.id+" на X: "+str(iw)+", Y: "+str(ih))
                        next_id += 1
                        bad_crd = list(add)
                        buy = {"x":iw,"y":ih,"action":"buy","itemId":need.id,"type":"item","objId":int(next_id)}
                        #logger.info(str(obj2dict(buy)).encode('utf-8'))
                        #logger.info(str(obj2dict(bad_crd)).encode('utf-8'))
                        self._get_events_sender().send_game_events([buy])

    def get_coords(self, ostrov):
        if(ostrov in ['isle_dream', 'isle_faith']):
            return {'y1':14, 'x1':14, 'x2':83, 'y2':75}, ['1414','1415','1416', '1514','1515','1516',
            '1473','1474','1475', '1573','1574','1575', '1673','1674','1675', '1773','1774','1775', '1873','1874','1875',
            '8114','8115','8116','8117','8118','8119','8120','8121','8122', '8214','8215','8216','8217','8218','8219','8220','8221','8222', '8314','8315','8316','8317','8318','8319','8320','8321','8322',
            '8171','8172','8173', '8271','8272','8273', '8371','8372','8373',
            '3973','3974','3975', '4073','4074','4075', '4173','4174','4175', '4273','4274','4275', '4373','4374','4375', '4473','4474','4475', '4573','4574','4575', '4673','4674','4675', '4773','4774','4775', '4873','4874','4875', '4973','4974','4975', '5073','5074','5075', '5173','5174','5175', '5273','5274','5275', '5373','5374','5375', '5473','5474','5475', '5573','5574','5575', '5673','5674','5675', '5773','5774','5775', '5873','5874','5875', '5973','5974','5975', '6073','6074','6075', '6173','6174','6175', '6273','6274','6275', '6373','6374','6375', '6473','6474','6475', '6573','6574','6575', '6673','6674','6675', '6773','6774','6775', '6873','6874','6875', '6973','6974','6975', '7073','7074','7075', '7173','7174','7175', '7273','7274','7275', '7373','7374','7375', '7473','7474','7475', '7573','7574','7575', '7673','7674','7675', '7773','7774','7775', '7873','7874','7875', '7973','7974','7975', '8073','8074','8075', '8173','8174','8175']

class ObjectInsertOld(BaseActor):

    def perform_action(self):
        # Где ставим
        locations = ['isle_03']
        # что ставим
        need = 'FT_APPLE'

        current_loc = self._get_game_state().get_location_id()
        if not current_loc in locations:
            logger.info(u"Пропускаем "+current_loc)
            return 1
        location = self._get_item_reader().get(current_loc)#"rectX":-300,"rectY":-1600,"rectWidth":4000,"rectHeight":3000
        need = self._get_item_reader().get(need)
        for rect in list(need.rects):
            if rect.rectW > 0 and rect.rectH > 0:
                need.w = int(rect.rectW)
                need.h = int(rect.rectH)
        bad_crd = {}
        #logger.info(str(obj2dict(need)).encode('utf-8'))
        objects = self._get_game_location().get_game_objects()

        for object in list(objects):#переберём объекты на острове
            if not hasattr(object, 'x') or not hasattr(object, 'item'):
                continue

            x = object.x
            y = object.y
            object_item = self._get_item_reader().get(object.item)

            for rect in list(object_item.rects):#"rects":[{"rectX":0,"rectY":0,"rectW":2,"rectH":1},{"rectX":0,"rectY":0,"rectW":2,"rectH":1}]
                for ix in range(rect.rectW):
                    for iy in range(rect.rectH):
                        #logger.info(str(x)+' '+str(ix)+' '+str(y)+' '+str(iy))
                        k1 = int(x) + ix
                        k2 = int(y) + iy
                        if not k1 in bad_crd:
                            bad_crd[k1] = {}
                        bad_crd[k1][k2] = 1
        with open('bad_crd.txt', 'w') as f:
            f.write(str(obj2dict(bad_crd)).encode('utf-8'))
        #with open('all_resources.txt', 'w') as f:
        #    f.write(str(obj2dict(self._get_game_location().get_game_objects())).encode('utf-8'))
        #die

#2000/1900 16/14 65/71
        W = 48#int(location.rectWidth) - 32 - need.w#размеры острова минус 16 по краям
        H = 48#int(location.rectHeight) - 32 - need.h
        next_id = self._get_game_state().get_state().gameObjects[-1].id

        for iw in range(W):
            iw += 16
            if iw in bad_crd and len(bad_crd[iw]) + need.w > W:#типа 100% он не влезет
                continue
            for ih in range(H):
                ih += 16
                if iw in bad_crd and ih in bad_crd[iw]:#занято
                    continue
                good = 1
                add = copy.deepcopy(bad_crd)
                for ix in range(need.w):
                    #ix += 1
                    if not iw+ix in add:
                        add[iw+ix] = {}
                    for iy in range(need.h):
                        #iy += 1
                        if (iw+ix) in bad_crd and (ih+iy) in bad_crd[(iw+ix)]:#занято
                            good = 0
                            break
                        if not ih+iy in add[iw+ix]:
                            add[iw+ix][ih+iy] = 1
                    if good == 0:
                        break
                if good == 1:
                    #ставим объект {"x":16,"y":14,"objId":210,"type":"item","itemId":"FT_APPLE","action":"buy"} {"x":64,"y":70,"objId":242,"action":"buy","itemId":"FT_APPLE","type":"item"}
                    logger.info(u"Ставим "+need.id+" на X: "+str(iw)+", Y: "+str(ih))
                    next_id += 1
                    bad_crd = copy.deepcopy(add)
                    buy = {"x":iw,"y":ih,"action":"buy","itemId":need.id,"type":"item","objId":int(next_id)}
                    #logger.info(str(obj2dict(buy)).encode('utf-8'))
                    #logger.info(str(obj2dict(bad_crd)).encode('utf-8'))
                    self._get_events_sender().send_game_events([buy])
Составил список координат только для острова мечты. С яблонями работает нормально. Я мог напутать с X и Y, но поскольку яблони квадратные, то ставится норм.


в какой файл это вписать?или может проще новым модулем это сделать?...

это Я Cheat Cheater

Добавлено через 1 час 45 минут
Цитата:
Сообщение от AnonProgerПосмотреть сообщение
Пробовал я этот python на андроид. Проблема в том, что он не работает в фоновом режиме. То есть экран выключается, и телефон уходит в спящий режим. А следить на телефоне, как оно бегает, - неприкольно.

Ваня я дополнять начал бота на GitHub надеюсь и остальные тоже там появятся,правда я не до конца разобрался как там и что,но если что сделал не правильно,прошу прощения))

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


это Я Cheat Cheater

Последний раз редактировалось Cheater84; 07.02.2014 в 17:26. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 07.02.2014, 19:00   #960
 Разведчик
Аватар для ichi88
 
ichi88 никому не известный тип
Регистрация: 06.08.2011
Сообщений: 21
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

есть вопрос на миллион =)
сейчас на системе основной (язык системы стоит - Китайский), соответственно бот не запускается, мб есть вариант решения(запуска) без смены языка? =)
  Ответить с цитированием
Ответ


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

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

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