# Исправляем game_state, чтобы при следующем цикле он не посчитал рыбака не рабочим
grave.started = True
# Если есть мешки у рыбака
if grave.materials:
logger.info("Собираем мешки " + str(grave.materials) + ' шт.')
for _ in range(grave.materials):
self._pick_material(grave, None)
grave.materials -= 1
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
[Ссылки могут видеть только зарегистрированные пользователи. ]Ребят на счет работы не знаю, последний раз работал , настроен чисто на маил, пробуйте, пишите если что, есть отправка б\п по фильтру с сообщением и...не помню что еще)
Последний раз редактировалось Cheater-84; 28.03.2015 в 20:42.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Ребята есть вопрос:
Боты стоят в игноре, но вот что делает ходилка
Почему так?
Цитата:
19:37:13
19:37:22
---------- ИДЁМ К ДРУГУ [BOT]friend1 ник:" " ---------- 1/466
19:37:33
---------- ИДЁМ К ДРУГУ [BOT]friend2 ник:" " ---------- 2/466
19:37:43
---------- ИДЁМ К ДРУГУ id ник:" " ---------- 3/466
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Уважаемые гуру! Помогите разобраться в том, как отключить вскрытие сокровищ на пиратском острове, но оставить захват рулеток.
Если это, конечно, возможно. код chop.py
PHP код:
# coding=utf-8
import logging
from game_state.game_types import GameWoodGrave, GameWoodGraveDouble,\
GamePickItem, GameWoodTree, GameStone, GameGainItem, GamePickup
from game_state.game_event import dict2obj
from game_actors_and_handlers.base import BaseActor
##############################
from ctypes import windll
import sys
# пиратские острова : Остров сокровищ , Таинственный , Жуткий , Северный полюс , Остров сокровищ , Древний
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
#pirate_locs_id = ["exploration_furry1","exploration_furry2","exploration_furry3","exploration_isle_un1_1","exploration_isle_un1_2","exploration_glade"]
if not enemies:
open('.\counts\\SilverHit.txt','w').write('')
for object in self._get_game_location().get_game_objects():
''' moveto = self._get_item_reader().get(object.item).moved
if object.item == '@D_BUOY_BIGSHIP' :
print object.item
print moveto
#if object.item == '@WEALTH_VASE' :
#continue
print 'FIND: ', object.item, 'id = ', object.id
self._get_events_sender().send_game_events([{"type":"item","action":"moveToStorage","objId":object.id}])
self._get_game_location().remove_object_by_id(object.id)'''
if object.type == 'pirateEnemy':
hitsilver = open('.\counts\\SilverHit.txt','r').read()
if not str(object.id) in hitsilver:
gain_event = {"action":"hit","objId":object.id,"type":"pirateEnemy"}
open('.\counts\\SilverHit.txt','a').write(str(object.id)+',')
self._get_events_sender().send_game_events( [gain_event] )
counthealt = object.health-1
self.cprint(u'5БЬЮ СИЛЬВЕРА^7_id:%s^2_осталось добить^6_%d^2_раз(а)'%(str(object.id),counthealt))
#logger.info(u'БЬЮ СИЛЬВЕРА %s осталось добить %d раз(а)'%(str(object.id),counthealt))
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:
tool_needed = resource.chopCount
type_of_res = resource.item
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от Shurup240
Уважаемые гуру! Помогите разобраться в том, как отключить вскрытие сокровищ на пиратском острове, но оставить захват рулеток.
Если это, конечно, возможно. код chop.py
PHP код:
# coding=utf-8
import logging
from game_state.game_types import GameWoodGrave, GameWoodGraveDouble,\
GamePickItem, GameWoodTree, GameStone, GameGainItem, GamePickup
from game_state.game_event import dict2obj
from game_actors_and_handlers.base import BaseActor
##############################
from ctypes import windll
import sys
# пиратские острова : Остров сокровищ , Таинственный , Жуткий , Северный полюс , Остров сокровищ , Древний
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
#pirate_locs_id = ["exploration_furry1","exploration_furry2","exploration_furry3","exploration_isle_un1_1","exploration_isle_un1_2","exploration_glade"]
if not enemies:
open('.\counts\\SilverHit.txt','w').write('')
for object in self._get_game_location().get_game_objects():
''' moveto = self._get_item_reader().get(object.item).moved
if object.item == '@D_BUOY_BIGSHIP' :
print object.item
print moveto
#if object.item == '@WEALTH_VASE' :
#continue
print 'FIND: ', object.item, 'id = ', object.id
self._get_events_sender().send_game_events([{"type":"item","action":"moveToStorage","objId":object.id}])
self._get_game_location().remove_object_by_id(object.id)'''
if object.type == 'pirateEnemy':
hitsilver = open('.\counts\\SilverHit.txt','r').read()
if not str(object.id) in hitsilver:
gain_event = {"action":"hit","objId":object.id,"type":"pirateEnemy"}
open('.\counts\\SilverHit.txt','a').write(str(object.id)+',')
self._get_events_sender().send_game_events( [gain_event] )
counthealt = object.health-1
self.cprint(u'5БЬЮ СИЛЬВЕРА^7_id:%s^2_осталось добить^6_%d^2_раз(а)'%(str(object.id),counthealt))
#logger.info(u'БЬЮ СИЛЬВЕРА %s осталось добить %d раз(а)'%(str(object.id),counthealt))
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:
tool_needed = resource.chopCount
type_of_res = resource.item
sklad = False
if resources:
if _loc not in pirate_locs_id:
sklad = True
st_items = self._get_game_state().get_state().storageItems # Предметы на складе
#print u'СКЛАД!'
for item in list(st_items):
if hasattr(item, "item"):
if '@CHOP_' in item.item:
instruments.append(dict2obj({"item":item.item, "count": item.count}))
# или
# reader = self._get_item_reader().get(item.item)
# if reader.type == 'chopInstrument':
# instruments.append(dict2obj({"item":item.item, "count": item.count}))
# или
# 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 hasattr(item, "item") and item.item in ['@CHOP_MACHETE','@CHOP_AXE','@CHOP_HAMMER','@CHOP_TRIDENT','@CHOP_TRIDENT_GOLDEN']:
# instruments.append(item)
else: instruments = self._get_game_state().get_state().pirate.instruments
CHOP_MACHETE = 0
CHOP_AXE = 0
CHOP_HAMMER = 0
CHOP_TRIDENT = 0
for tool in instruments:
if hasattr(tool, "item"):
if tool.item == '@CHOP_MACHETE': CHOP_MACHETE = tool.count
if tool.item == '@CHOP_AXE': CHOP_AXE = tool.count
if tool.item == '@CHOP_HAMMER': CHOP_HAMMER = tool.count
if tool.item == '@CHOP_TRIDENT': CHOP_TRIDENT = tool.count
print u'Инструмента перед рубкой М-Т-К-Тр:', str(CHOP_MACHETE)+'-'+str(CHOP_AXE)+'-'+str(CHOP_HAMMER)+'-'+str(CHOP_TRIDENT)
if (CHOP_MACHETE > 250 and CHOP_HAMMER > 250):
self._get_game_state().many_chop = 1 # проставили many_chop если мачете и кирки за 250
resources_dict = {resource : resource.x for resource in resources}
resources_order = resources_dict.items()
if not hasattr(self._get_game_state(), 'many_chop'): # рублено не много, будем сортировать
resources_order.sort(key=lambda x: x[::-1], reverse=True) # ресурсы отсортированные по X
#print resources_order
# Пинатель
if enemies:
if not hasattr(self, 'enemies'):self.enemies = []
for enemy in enemies:
if enemy.id in self.enemies:continue
print u'Шуганём сильвера '+str(enemy.id)
self._get_events_sender().send_game_events([{"type":"pirateEnemy","objId":enemy.id,"action":"hit"}])
self.enemies.append(enemy.id)
#self._get_game_location().remove_object_by_id(enemy.id)
# сортируем что рубим, а что нет
if (not hasattr(self._get_game_state(), 'many_chop')): # рублено не много, ограничиваем траты
if type_of_instrument == '@CIT_MACHETE': # мачете
pass
elif type_of_instrument == '@CIT_TRIDENT': # трезубец
pass
elif type_of_instrument == '@CIT_AXE': # топоры
if CHOP_AXE > 600 or tool_needed == 10 or tool_needed == 15 or tool_needed == 16 or tool_needed > 49:
pass
else: continue
elif type_of_instrument == '@CIT_HAMMER': # кирки
if ('CH_BLACKSTONE' in type_of_res) or ('CH_GREENSTONE' in type_of_res) or ('CH_WHITESTONE' in type_of_res) or ('CH_CRYSTALSTONE' in type_of_res) or tool_needed > 49:
pass
else: continue
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 not hasattr(tool, "item"):
print u'Нет итема', obj2dict(tool)
continue
if self._get_item_reader().get(tool.item).chopInstrumentType == type_of_instrument and tool.count > 0: #= tool_needed:
enemy_here = 0
if enemies:
for enemy in enemies:
if(((enemy.x - resource.x)**2+(enemy.y - 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
# if type_of_instrument == '@CIT_HAMMER' and tool_needed == 100:
# tool_needed = 50
# logger.info(u'Снижаем удар киркой до 50')
if tool.count < tool_needed:
if type_of_instrument == '@CIT_TRIDENT':
tool_needed = tool.count
logger.info(u'Рубим неполный')
else: continue
gain_event = {"type":"chop","objId":resource.id,"instruments":{self._get_item_reader().get(tool.item).id:tool_needed},"action":"chop"}
logger.info(u"Рубим " +str(self._get_item_reader().get(tool.item).id).ljust(13, ' ')+str(tool_needed).rjust(3, ' ')+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
if sklad:
#print 'type_of_instrument', type_of_instrument, 'tool.item', tool.item, 'ins', ins
self._get_game_state().remove_from_storage(tool.item, tool_needed)
break
CHOP_MACHETE2 = 0
CHOP_AXE2 = 0
CHOP_HAMMER2 = 0
CHOP_TRIDENT2 = 0
for tool in instruments:
if hasattr(tool, "item"):
if tool.item == '@CHOP_MACHETE': CHOP_MACHETE2 = tool.count
if tool.item == '@CHOP_AXE': CHOP_AXE2 = tool.count
if tool.item == '@CHOP_HAMMER': CHOP_HAMMER2 = tool.count
if tool.item == '@CHOP_TRIDENT': CHOP_TRIDENT2 = tool.count
if CHOP_MACHETE-CHOP_MACHETE2 or CHOP_AXE-CHOP_AXE2 or CHOP_HAMMER-CHOP_HAMMER2 or CHOP_TRIDENT-CHOP_TRIDENT2:
print u'Инструмента после рубки М-Т-К-Тр:', str(CHOP_MACHETE2)+'-'+str(CHOP_AXE2)+'-'+str(CHOP_HAMMER2)+'-'+str(CHOP_TRIDENT2)
else:
logger.info("Не осталось ресурсов для добычи")
#raw_input('------------- END ---------------')
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.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("Сильвер мешает взять "+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("Нет неоткрытых сокровищ")
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Здравствуйте я на счет бота,есть пару вопросов отпишите в лс пожалуйста я про зф)
Большое спасибо.....
[Ссылки могут видеть только зарегистрированные пользователи. ]
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от doubleaggent
люди добрые, у кого есть скрипт для стука в корзинки и разбития яиц кролика, поделитесь пожалуйста, заранее спасибо!!
взял за основу стук в шатер -
PHP код:
### Кладем конфету в корзинку ###
if u'korzina' in action:
for object in self._get_game_state().gameObjects:
if object.item == '@B_BASKETS_EASTER_2015':
remoteTrick = self._get_game_state().get_state().remoteThanksgiving
if len(remoteTrick)>0:
for cot in remoteTrick:
if frend_users == cot.user :
baranka = 1
break
if baranka == 0:
if self._get_game_state().countCircus < 100 and self._get_game_state().tentCircus == True :
self._get_events_sender().send_game_events([{"objId":object.id,"type":"item","itemId":"EASTER_BOX_1","action":"remoteThanksgiving"}])
self.cprint(u'8Кладем конфету в корзинку')
self._get_game_state().countCircus+=1
self._get_game_state().tentCircus = False
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от Cheater-84
взял за основу стук в шатер -
PHP код:
### Кладем конфету в корзинку ### if u'korzina' in action: for object in self._get_game_state().gameObjects: if object.item == '@B_BASKETS_EASTER_2015': remoteTrick = self._get_game_state().get_state().remoteThanksgiving if len(remoteTrick)>0: for cot in remoteTrick: if frend_users == cot.user : baranka = 1 break if baranka == 0: if self._get_game_state().countCircus < 100 and self._get_game_state().tentCircus == True : self._get_events_sender().send_game_events([{"objId":object.id,"type":"item","itemId":"EASTER_BOX_1","action":"remoteThanksgiving"}]) self.cprint(u'8Кладем конфету в корзинку') self._get_game_state().countCircus+=1 self._get_game_state().tentCircus = False
что то не чего не происходит
Последний раз редактировалось Just1cEE; 03.04.2015 в 21:04.