Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
выложите кто нить клиент ля контакта плиз рабочий запарился не запускается ни в какую хотя все по инструкции делаю заранее спасибо. операционка 32х разрядная
Последний раз редактировалось dexin; 05.02.2014 в 23:09.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от Anch665
У кого нибудь бот рубит на новых островах? Бот от Cheater84 игнорит все, но рулетки крутит.
Вероятнее всего потому, что в game_engine.py этот модуль закоментирован. Потратьте немного времени и разберитесь, где что включается и выключается. А лучше сделайте копии директорий - одну для "повседневной работы", другую для копания у друзей, третью для поездок на пиратские острова...
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от mike4kz
Вероятнее всего потому, что в game_engine.py этот модуль закоментирован. Потратьте немного времени и разберитесь, где что включается и выключается. А лучше сделайте копии директорий - одну для "повседневной работы", другую для копания у друзей, третью для поездок на пиратские острова...
У меня тоже не рубит... надо что-то в chope добавить чтобы рубило. Что-то там не так... походу то, что инструмент не в сундуке, а просто на складе
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от vintets
Кто нибудь разбирается в JS ?
Подскажите, где вот этот код берёт private_key
Нет там такого куска кода. Private_key должен отдавать mail.ru в ответ на запрос от app. Такого запроса в коде нет. Как и места где происходит вызов app.init(). Код не полный, это мое мнение!
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от eTorres
Нет там такого куска кода. Private_key должен отдавать mail.ru в ответ на запрос от app. Такого запроса в коде нет. Как и места где происходит вызов app.init(). Код не полный, это мое мнение!
Да что же Мэйл как проклятый... В одноклассниках Private_key передаётся при запросе параметров приложения, в ВКонтакте хз походу и не нужен, на мыле - нет. Я думал он в яву встроен или получает откуда.
session_key передают, а это не видно.
Ведь подпись использующая Private_key идёт от меня, пишет что от флэшки.
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, но поскольку яблони квадратные, то ставится норм.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от lokanaft
Вот такой примерно, включая старый вариант со словарями получился:
...
Составил список координат только для острова мечты. С яблонями работает нормально. Я мог напутать с X и Y, но поскольку яблони квадратные, то ставится норм.
Что-то кода много получилось. Что там можно было столько делать? Не всё понятно.
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.
Причина: Добавлено сообщение
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
есть вопрос на миллион =)
сейчас на системе основной (язык системы стоит - Китайский), соответственно бот не запускается, мб есть вариант решения(запуска) без смены языка? =)