Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Папку vkontakte.zip закинул
Traceback (most recent call last):
File "D:\zombot\src\main.py", line 3, in <module>
from game_engine import Game
File "D:\zombot\src\game_engine.py", line 6, in <module>
import vkontakte
ImportError: No module named vkontakte
>>>
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.
C:\Python27>python d:/zombot/src/main.py -c
Traceback (most recent call last):
File "d:/zombot/src/main.py", line 3, in <module>
from game_engine import Game
File "d:\zombot\src\game_engine.py", line 6, in <module>
import vkontakte
ImportError: No module named vkontakte
C:\Python27>
Последний раз редактировалось xapos; 02.10.2015 в 01:13.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от Mat-eria
Добрый день. Я, конечно, понимаю что меня могут закидать камнями, но...
python main.py -c
2013 (c) github.com/Vanuan/zombot
version 0.9.2 stable
Traceback (most recent call last):
File "D:\Program Files\Python27\lib\logging\__init__.py", line 874, in emit
stream.write(fs % msg.encode("UTF-8"))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 24: ordinal not in range(128)
Logged from file main.py, line 70
Traceback (most recent call last):
File "main.py", line 93, in <module>
run_game()
File "main.py", line 72, in run_game
site, settings = get_site(gui_input)
File "main.py", line 57, in get_site
settings = Settings()
File "D:\zombot\src\settings.py", line 8, in __init__
self.parser.read(filename)
File "D:\Program Files\Python27\lib\ConfigParser.py", line 305, in read
self._read(fp, filename)
File "D:\Program Files\Python27\lib\ConfigParser.py", line 512, in _read
raise MissingSectionHeaderError(fpname, lineno, line)
ConfigParser.MissingSectionHeaderError: File contains no section headers.
file: settings.ini, line: 1
'\xef\xbb\xbf[global_settings]\n'
Может быть кто-нибудь подскажет что это и как это устранить.
P.S Читаю всё с самого начала в данный момент нахожусь на 7 странице этой ветки, если я что-то пропустила или найду позже по своей проблеме, то извиняюсь в первом случаи за невнимательность, во втором за не терпеливость.
Чем редактировали файл ini? В редакторе сохранить в формате UTF-8 без BOM
ini можно сохранять и в обычной кодировке 1251 она же ANSI.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от vintets
Чем редактировали файл ini? В редакторе сохранить в формате UTF-8 без BOM
ini можно сохранять и в обычной кодировке 1251 она же ANSI.
У вас сохранено в UTF-8 с BOM
Добавлено через 3 минуты
default_user= - это НОМЕР секции в ini стартующий по умолчанию.
В большинстве сборок начинается с 0. Т.е. первая запись это 0, вторая - 1...
Да обычным текстовым редактором. Кодировку сменила не помогло. По умолчанию пользователя не выбирает. Но у меня сборка zombot 0.9.2. Может быть есть что-то новее, да я упустила?!
И ещё заметила половина файлов имеют кодировку utf-8, а половина ASCII. Может привести всё к одной?
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от vintets
PHP код:
fr_dict = {info.id : info.level for info in players_info}
friends_order = fr_dict.items()
friends_order.sort(key=lambda x: x[:-1], reverse=True)
friends = [fr[0] for fr in friends_order]
players_info соответственно - твоя база друзей
friends список id отсортированный
vintets, подскажи как здесь сделать отсечение от такого то по такой-то уровень?
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Цитата:
Сообщение от vintets
В def add_users_info(self, event_to_handle): добавляем (всё в кучу для простоты)
PHP код:
try:
with open('low_level.txt', 'r') as f:
self.__game_state_.low_level = eval(f.read())
except:
self.__game_state_.low_level = []
try:
with open('banned.txt', 'r') as f:
self.__game_state_.banned = eval(f.read())
except:
self.__game_state_.banned = []
lovl = []
banned = []
for n in event_to_handle.players:
if hasattr(n, 'level') and int(n.level) < 20 and (n.id not in self.__game_state_.low_level): lovl.append(n.id)
if hasattr(n, 'banned') and n.banned and (n.id not in self.__game_state_.banned): banned.append(n.id)
if lovl:
self.__game_state_.low_level.extend(lovl)
with open('low_level.txt', 'w') as f:
f.write(str(self.__game_state_.low_level))
if banned:
self.__game_state_.banned.extend(banned)
with open('banned.txt', 'w') as f:
f.write(str(self.__game_state_.banned))
Получаем список с уровнем до 20 low_level.txt
И список забаненных banned.txt
vintets, благодарю за предыдущий ответ. Подскажи плз, что изменить чтоб заместо забаненных был список "зеленых" т.е. по атрибуту haveTreasure? пробовал так
PHP код:
try:
with open('haveTreasure.txt', 'r') as f:
self.__game_state_.haveTreasure = eval(f.read())
except:
self.__game_state_.haveTreasure = []
haveTreasure = []
for n in event_to_handle.players:
if hasattr(n, 'haveTreasure') and n.haveTreasure and (n.id not in self.__game_state_.haveTreasure): haveTreasure.append(n.id)
if haveTreasure:
self.__game_state_.haveTreasure.extend(haveTreasure)
with open('haveTreasure.txt', 'w') as f:
f.write(str(self.__game_state_.haveTreasure))
и не выходит, там надо еще внутрь атрибута liteGameState лезть, а это у меня еще пока не получается.
Re: Zombot (Клиент для игры Зомби ферма) [Обсуждение]
Всем привет, по поводу парсера, вот кодик, нужно только его как то прикрутить к okutils
PHP код:
# -*- coding:utf-8 -*-
from grab import Grab # импортируем Grab библиотеку
def get_key(login, password):
g = Grab() # создаем объект Grab, своего рода сессию
g.go('http://ok.ru/') # переходим на указанный URL
g.set_input("st.email", login) # задаем параметры для входа, в этой строке указываем логин
g.set_input("st.password", password) # в этой строке указываем пароль
g.submit() # прикрепляем указанные параметры
g.go("http://ok.ru/") # входим на сайт с указанными параметрами
g.setup(method='POST', reuse_cookies=True) # задаем тип запроса POST, reuse_cookies указывает передавать куки в запросе или нет. reuse_cookies = True - передача куков включена
g.request(url="http://ok.ru/game/zm") # отправляем POST запрос с куками по указаному URL
text = str((g.response.body)) # извлекаем тело запроса и переводим его в строку
pos = text.find('gwtHash') # в строке ищем подстроку "gwtHash"
# в цикле проходим по строке от позиции на которой нашли gwtHash + 9 символов(длина фразы - gwtHash:"), до позиции pos+50 символов. В этом промежутке точно будет весь нужный ключ.
end_pos = 0
for i in range(pos+9, pos+50):
if text[i] == '"': # находим кавычку
end_pos = i # запоминаем позицию кавычки в строке
break # дальше искать не нужно, потому просто выходим из цикла
srez = text[pos+9:end_pos] # берем срез строки по полученным позициям от gwtHash:" до первой кавычки после gwtHash:"
return srez # передаем результат выполнения функции
выходит ошибка
[Ссылки могут видеть только зарегистрированные пользователи. ]
отключаю проверку атрибута, тогда такая картинка.
[Ссылки могут видеть только зарегистрированные пользователи. ]
как сие можно исправить?
upd
посмотрел через чарли, не успевает обработать что-ли принятую информацию и уже идет копать.
PHP код:
def load_info_users(self): friends_copy = self.__friendsid[:] players = [] while len(friends_copy): players.append(friends_copy.pop()) if len(players) == 100: events = {"type":"players","id":3,"action":"getInfo","players":players} self.__game_events_sender.send_game_events([events]) self.handle_all_events() players = [] if players: events = {"type":"players","id":3,"action":"getInfo","players":players} self.__game_events_sender.send_game_events([events]) self.handle_all_events()
здесь поменял на длину в 20 друзей и тогда малыши заработали, но основа тяжело грузится т.к. разбиваем в каждый запрос по 20 друзей. как сделать чтоб при большом количестве запрашивало по 100, а при малом меньшее количество. или я не в том направлении иду?
Добавлено через 12 часов 11 минут
Цитата:
Сообщение от vintets
PHP код:
min_level = 20
max_level = 100
fr_dict = {str(info.id) : info.level for info in players_info}
fr_dict2 = {}
for fr in friends:
try:
level = fr_dict[str(fr)]
except:
level = 0
if min_level <= level <= max_level:
fr_dict2[str(fr)] = level
friends_order = fr_dict2.items()
friends_order.sort(key=lambda x: x[::-1], reverse=True)
friends = [fr[0] for fr in friends_order]
Много уважаемый vintets, я извиняюсь за столь большой поток просьб и вопросов, не мог бы ты подсказать как получить список friends отобрав их по атрибуту haveTreasure = true ?
Последний раз редактировалось alser2; 10.10.2015 в 09:07.
Причина: Добавлено сообщение