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

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

-

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

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

Ответ
 
Опции темы
Старый 11.01.2015, 17:28   #3826
 Разведчик
Аватар для Shurup240
 
Shurup240 никому не известный тип
Регистрация: 04.02.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Ребят, А подскажите адресок compositions.soc для фейсбука?
Код:
https://zombie-fb.shadowlands.ru/zombiefb-res/res/compositions.soc
не подходит.
Думал, что там по аналогии с итемсами
  Ответить с цитированием
Старый 11.01.2015, 17:29   #3827
 Разведчик
Аватар для greyzza
 
greyzza никому не известный тип
Регистрация: 25.02.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от Shurup240Посмотреть сообщение
Ребят, А подскажите адресок compositions.soc для фейсбука?
Код:
https://zombie-fb.shadowlands.ru/zombiefb-res/res/compositions.soc
не подходит.
Думал, что там по аналогии с итемсами

'http://vizorfb-a.akamaihd.net/zombiefb-res/res/compositions.soc'
  Ответить с цитированием
Старый 11.01.2015, 21:56   #3828
 Разведчик
Аватар для ruslanische
 
ruslanische никому не известный тип
Регистрация: 22.03.2012
Сообщений: 3
Популярность: 12
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Можете пояснить, чем именно? Это тот же dict

Считаю, что костыльность dict as obj в том, что можно перекрыть родные методы словаря, хотя если быть аккуратным, то все ок. Но позже об этом можно забыть и получить неделю веселого дебага )))

Цитата:
Keep-alive будет?

не понял, если честно, мне requests понравился тем, что не надо самому возиться с куками, кодировками, распаковкой контента и т.п.

Цитата:
Ну Вы опять на C/php пишете? На питоне короче:
Код:
plants=filter(lambda(x):x['type'] == u'plant',objects)

Насчет моего 4х-строчного куска кода и вашего 1х-строчного: да, питон я почти не знаю, делаю по наитию, я сам сишник. Ваш вариант мне понятен, но лямбда и длинная строка режет глаза. Согласитесь, что мой вариант читабельнее для незнакомого с питоном человека?

Цитата:
И гляньте потом на game_engine.Game.handle_event ? Очень хочется перенести необходимость изменений оттуда в сами реализации потомков BaseActor.

до него доберусь

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

Цитата:
Сообщение от ruslanischeПосмотреть сообщение
можно перекрыть родные методы словаря

Если правильно понял, то ничего против не имею. Тем более,
Код:
    def __getattr__(self, key):                     # этот метод будет вызван, если атрибут
                                                    # с именем key не будет найден у экземпляра класса
То есть это, похоже, не перегрузка, а дополнение, я не пробовал ещё. Тем более, у самого dict довольно мало свойств/методов, чтобы перепутать их со значениями ключей. Ну, и в конце, я думал, чем этот подход будет неудобен -- тем, что json.loads отдаёт таки list/dict , а выше пример использует наследованный от dict класс, что приводит к требованию преобразования после json.loads , а это опять процессорное время. Или есть возможность перегрузить напрямую класс dict? Повторюсь, не пробовал.

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

Да ну уж не неделю, с локаклизацией места ошибки, даже если забыть, час-два. А забыть будет проблемно, потому что в dictе ставим точки, вместо [' ']

Цитата:
Сообщение от ruslanischeПосмотреть сообщение
не понял, если честно

Нынешний вариант бота, в отличие от swf-клиента, шлёт connection:close; в заголовках запроса, что приводит к переполнению connection pool в XP после где-то около 60 часов работы бота, у меня, и приходится перезагружать систему. connection:keep-alive; было бы куда приятнее в этом плане, хотя, висящие открытыми сокеты тогда могли бы, возможно, каким-либо нехорошим образом сказаться на возможности подключиться к серверу. Всё равно, в connection:close; для себя я вижу проблему, поэтому keep-alive был бы приятнее.

И да, стандартными питоновскими средствами keep-alive , вроде, не реализуем, а в requests он встроен, в этом я вижу большой плюс requests .

Цитата:
Сообщение от ruslanischeПосмотреть сообщение
я сам сишник

И я сишник, будем знакомы

Цитата:
Сообщение от ruslanischeПосмотреть сообщение
длинная строка режет глаза

Это правда, мне тоже. Тогда так: ?
Код:
plants=[obj for obj in objects if obj['type'] == u'plant']
, без лямбды, но ещё длиннее...

Цитата:
Сообщение от ruslanischeПосмотреть сообщение
до него доберусь

Тогда и до передачи параметров в потомки BaseActor , там то же. Вроде больше претензий по сути у меня к "фреймворку бота" не было

Цитата:
Сообщение от ruslanischeПосмотреть сообщение
да, питон я почти не знаю

Ну, Вы же собираетесь поддерживать проект после тотального рефакторинга? Или уйдёте, как anonproger(VanVan) и Redyan? Придёт. Я и сам смотрю на то, что писал в начале на pythonе, с изрядной долей критики.
Что сильно нравится в python -- костыли не надо прогать. Всё, что можно подумать, из элементарных конструкций, так или иначе уже есть. Тот же defauldict взять, к примеру. Я видел его реализацию (не использование) в боте
Что не устраивает - на нём надо писать просто. Если на C я могу написать тут же, как подумал, то на pythonе надо ещё подумать, как это написать просто.

Цитата:
Сообщение от ruslanischeПосмотреть сообщение
для незнакомого с питоном человека

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

, и это уже красиво, с точки зрения реализации.

Всё равно я считаю главной целью своих воздействий на бот, кроме оптимизации времени исполнения, максимальную простоту написания конечных модулей, которые и правда могут разрабатываться кем угодно. Чтобы народ не просил "а дайте модуль для крафта %1", а написал self.craft( ,
чтобы не было ответов "для расстановки рыбаков можете поменять модуль для посадки деревьев" - зачем нам дублирование кода? Проще:
to_buy = "SC_FISHER"
for place in self.places(to_buy):
self.buy(to_buy)
self.send() , либо, более с пониманием, что происходит:
to_buy = "SC_FISHER"
buy=[]
for place in self.places(to_buy):
buy.append(self.buy(to_buy))
self.send(buy)
, а в buy уже упихать всевозможные проверки: есть ли монеты/зб, есть ли место,
всевозможные модификации game_state: вычитание монет, постановку рыбака. Причём написать это всё во фреймворке максимально расширяемо.

Да, я за бОльшую популяризацию бота, таким образом, и меня пинали, что это неправильно. Всё равно так красивее
Или что Вы имели в виду?
Цитата:
Сообщение от ruslanischeПосмотреть сообщение
трудно добавлять новый функционал


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

Цитата:
Сообщение от megabyte0Посмотреть сообщение
Это правда, мне тоже. Тогда так: ?
Код:

plants=[obj for obj in objects if obj['type'] == u'plant']

, без лямбды, но ещё длиннее...

Вроде это генератором списка называется, не проверял, что быстрее работает, filter или генератор. А так, конечно приятнее смотрится, именно так и пишу.



Цитата:
Сообщение от megabyte0Посмотреть сообщение
у, Вы же собираетесь поддерживать проект после тотального рефакторинга?

Сейчас пока время есть, а там посмотрим, сама игра мне конечно не интересна, точнее хочу построить карусель за 2 лярда для опыта + у меня куча непринятых подарков типа супер-повара, супер-добыча А так, улучшу бота, придется, конечно, все модули переделывать, но может кому будет лучше на него перейти.
  Ответить с цитированием
Старый 13.01.2015, 12:03   #3831
 Разведчик
Аватар для megabyte0
 
megabyte0 никому не известный тип
Регистрация: 29.07.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 8 раз(а) в 5 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Цитата:
Сообщение от ruslanischeПосмотреть сообщение
сама игра мне конечно не интересна

Игра сгнила, это правда. Разве что, на фейсбуке что нормальное осталось.
Цитата:
Сообщение от ruslanischeПосмотреть сообщение
хочу построить карусель за 2 лярда для опыта

Открываете все острова, берёте супервырубку и 28+ мозгов из останкино, вырубаете всё за сутки, и на 3000 грядок розами/лилиями около 600 000 урожая/день. На карусель надо всего 1 500 000 урожая, это 2.5 дня. Вроде несложно? Ну, как вариант, как можно сделать, не как совет сделать именно так, конечно
Цитата:
Сообщение от ruslanischeПосмотреть сообщение
+ у меня куча непринятых подарков типа супер-повара, супер-добыча

Они при превращении полностью заполненного достроенными розовыми клубками острова лысой горы падают, настолько пачками, что их больше гораздо, чем можно захотеть использовать.

То есть подарочные нужны разве что "для старта" и/или достижения 63 уровня для рамбутана для дерева любви. Впрочем, я рамбутан за зб открывал.
Вложения
Тип файла: zip остатки былой роскоши (что выпало).zip (7.8 Кб, 27 просмотров)

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

megabyte0
Кстати, зачем "Initial time offset 6858ms"? Это то самое self._client_time = long(random.randrange(2800, 4000))? Я его пока выпилил...
  Ответить с цитированием
Старый 13.01.2015, 13:57   #3833
 Разведчик
Аватар для megabyte0
 
megabyte0 никому не известный тип
Регистрация: 29.07.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 8 раз(а) в 5 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Да, я хотел Вам на этот вопрос ответить, тем более, что и сам заинтересован в правильной обработке времени. Но, к сожалению, именно_моя обработка времени иногда падает с ingame error на сборе недозревшего_на_сервере урожая, поэтому как правильно это делать, я бы сказать не смог. Впрочем, как правильно это делать, мне отвечали, я всё равно сделал, как мне понятнее.

Цитата:
Сообщение от ruslanischeПосмотреть сообщение
random.randrange(2800, 4000)

Это уже неправильно (раньше было правильно), и по этому признаку можно выловить ботоводов, кроме того, что они не просят &gz=y в запросе. Сейчас на сервер swf-клиентом посылается в первых 2 запросах (TIME и START) время в миллисекундах от запуска флешки. У меня около 13с первое и около 45с второе, если swfки грузятся не из кеша браузера.
А ответ, как правильно, похоже, вот: http://zhyk.ru/forum/showpost.php?p=...postcount=3106

Если кто знает, как правильнее, поправьте, пожалуйста...

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

Объясните, пожалуйста, зачем нужен gz=y? То, что ответ приходит упакованный, но тип octet чего-то там, это я понял.

Добавлено через 3 минуты
И еще, кто-нибудь проверял, сортируются ли данные в запросах к серверу? В оригинальном боте сортировались, я посчитал это черной магией, т.к. json и есть json, нафига там что сортировать.... А щас глянул, и вроде клиент игры отправляет не сортированный запрос.

Добавлено через 11 минут
И почему могут забанить, если не слать в запросах gz=y?

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

Цитата:
Сообщение от ruslanischeПосмотреть сообщение
И почему могут забанить, если не слать в запросах gz=y

Потому что то бот, разумеется, кто не шлёт. А боты официально запрещены, вкладка "правила игры". Оригинальный клиент всегда шлёт, за исключением, может быть, запроса TIME.
Цитата:
Сообщение от ruslanischeПосмотреть сообщение
Объясните, пожалуйста, зачем нужен gz=y?

Цитата:
Сообщение от ruslanischeПосмотреть сообщение
То, что ответ приходит упакованный

Иногда в 10 раз, это существенно.

Ну, для снижения инет-нагрузки на сервер, например. Сравните
bash.im/quote/404955

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

Поправил своего бота, чтобы понимал данные пришедшие от запроса с флагом gz=y, костыль, но пока так...

Добавлено через 16 часов 21 минуту
Потратил немножко времени на изучение как отправляется время клиента:
1. загружается preload.swf
(овца с колокольчиком и прогресс баром)
время время старта вроде считается со старта этой swf-ки, но пруф в ее сорцах не нашел
строится ссылка на актуальную версию игры

2. загружается и запускается zombiefarm.swf (10-20 секунд)
(заставка с прогресс баром)

3. загружается контент игры (10-20 секунд)

4. инициализируется игра (10-20 секунд)
отправляется запрос TIME со временем загрузки zombiefarm.swf
отправляется запрос START уже с временем клиента (к этому времени оно уже 30-60 секунд)

Добавлено через 17 часов 52 минуты
Кстати, все получают упакованный items.txt?
Код:
import zlib
...
    def load_items(self):
        logger.info(u'Загружаем словарь объектов...')
        items_compressed_raw = Connection(u'http://java.shadowlands.ru/zombievk/items').download_raw(data={u'compress': u'true', u'lang': 'ru'})
        items_raw = zlib.decompress(items_compressed_raw)
        items = json.loads(items_raw)
        with open(self.settings.user_data + u'/items.txt', u'w') as f:
                    f.write(items_raw)
        return items
...
У меня скорость загрузки уменьшилась в разы, а то так бесило при отладке.

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

Цитата:
Сообщение от ruslanischeПосмотреть сообщение
Кстати, все получают упакованный items.txt?
Код:
import zlib
...
    def load_items(self):
        logger.info(u'Загружаем словарь объектов...')
        items_compressed_raw = Connection(u'http://java.shadowlands.ru/zombievk/items').download_raw(data={u'compress': u'true', u'lang': 'ru'})
        items_raw = zlib.decompress(items_compressed_raw)
        items = json.loads(items_raw)
        with open(self.settings.user_data + u'/items.txt', u'w') as f:
                    f.write(items_raw)
        return items
...
У меня скорость загрузки уменьшилась в разы, а то так бесило при отладке.

А можно download_raw ?
В принципе и так не напрягает. Получает раз в сутки при первом запуске.
________________

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

vintets
У меня connection.py совсем другой, вам надо видимо сделать так, в items_reader.py заменить
Код:
        data = Connection(url).getChangedDocument(
            data={'lang': 'ru'},
            last_client_time=last_modified_time
        )
на
Код:
        data_compressed = Connection(url).getChangedDocument(
            data={u'compress': u'true', u'lang': 'ru'},
            last_client_time=last_modified_time
        )
        data = zlib.decompress(data_compressed)
и в начало не забыть
Код:
import zlib
  Ответить с цитированием
Старый 14.01.2015, 21:01   #3839
 Разведчик
Аватар для Miha88
 
Miha88 никому не известный тип
Регистрация: 09.07.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Всем привет! А дарение по БП вконтакте из этого поста zhyk.ru/forum/showpost.php?p=5392029&postcount=2305 еще актуально ? а то ни как не получается настроить бот вылетает с ошибкой.
  Ответить с цитированием
Старый 15.01.2015, 02:07   #3840
 Разведчик
Аватар для Shurup240
 
Shurup240 никому не известный тип
Регистрация: 04.02.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]

Ребята! Как исправить ошибку?
Screenshot_1.jpg

PHP код:
# coding=utf-8
import logging
from game_state
.game_types import GameWoodGraveGameWoodGraveDouble,\
    
GamePickItemGameWoodTreeGameStoneGameGainItemGamePickup
from game_state
.game_event import dict2objobj2dict
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):
        
options = [
                
#u'вскрытие сокровищ'
                
]
        
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"]

        
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}))
                        if 
item.item == ('@CHOP_TRIDENT'): #Трезубец
                            
instruments.append(dict2obj({"item":"@CHOP_TRIDENT""count"item.count}))
                        if 
item.item == ('@CHOP_TRIDENT_GOLDEN'): #Золотой Трезубец
                            
instruments.append(dict2obj({"item":"@CHOP_TRIDENT_GOLDEN""count"item.count}))
            else: 
instruments self._get_game_state().get_state().pirate.instruments

            resources_dict 
= {resource resource.for resource in resources}
            
resources_order resources_dict.items()  # ресурсы отсортированные по X
            
resources_order.sort(key=lambda xx[::-1], reverse=True)
            
#print resources_order

            
for resource in resources_order:
                
resource resource[0]
                
#print 'resource ', resource,' ', resource.x 
                #print obj2dict(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:
                    
#print "self._get_item_reader().get(tool.item).chopInstrumentType", self._get_item_reader().get(tool.item).chopInstrumentType
                    #print "type_of_instrument", type_of_instrument
    
                    
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.resource.x)**2+(enemy.resource.y)**2)**0.5 16):
                                    
enemy_here 1
                                    
break
                        if(
enemy_here == 1):
                            
self._get_game_location().remove_object_by_id(resource.id)
                            
logger.info("Сильвер мешает вырубке "+str(resource.id))
                            break
                        
#print 'tool.count ', tool.count, ', tool_needed ', tool_needed
                        
if tool_needed == 100:
                            
tool_needed 50
                            
print 'tool_needed Set 50'
                            
                        
#print "resource ", str(obj2dict(resource))
                        
gain_event = {"type":"chop","objId":resource.id,"instruments":{self._get_item_reader().get(tool.item).id:tool_needed},"action":"chop"}
                        
logger.info(u"Рубим " str(type_of_instrument)+u' instruments:'+str(self._get_item_reader().get(tool.item).id)+', '+str(tool_needed)+u'L, id '+str(gain_event['objId']))
                        
self._get_events_sender().send_game_events( [gain_event] )
                        if 
resource.chopCount == tool_needed:
                            
self._get_game_location().remove_object_by_id(resource.id)
                        else:
                            
resource.chopCount -= tool_needed
                        tool
.count -= tool_needed
                        
break
        else:
            
logger.info("Не осталось ресурсов для добычи")
            
        if 
u'вскрытие сокровищ' in options:
            
resources self._get_game_location().get_all_objects_by_type("pirateCaptureObject")
            if 
resources:
                for 
resource in resources:
                    
enemy_here 0
                    
if enemies:
                        for 
enemy in enemies:
                            if(((
enemy.resource.x)**2+(enemy.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("Сильвер мешает взять "+str(resource.id))
                        continue
                    
gain_event = {"type":"pirateCapture","objId":resource.id,"action":"capture"}
                    print 
gain_event
                    logger
.info("Открываем " str(resource.id))
                    
self._get_events_sender().send_game_events( [gain_event] )
                    
self._get_game_location().remove_object_by_id(resource.id)
            else:
                
logger.info("Нет неоткрытых сокровищ"
Заранее спасибо!
  Ответить с цитированием
Ответ


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

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

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