Kradar
-
Posts
30 -
Joined
-
Last visited
Posts posted by Kradar
-
-
В итоге, я заменил простенький загрузчик - res_mods\0.9.3\scripts\client\gui\Scaleform\locale\__init__.py на тот, что тут советовали - res_mods\0.9.3\scripts\client\CameraNode.py. Теперь g_windowsManager импортируется без проблем. Всем огромное спасибо!
Однако, было бы здорово, если бы кто-то смог логично объяснить, в чем была причина всего этого безобразия.
-
Ау! Вопрос еще открыт.
-
Обязательно. Без него игра не может понять, откуда загружать ресурсы.
Хм... И где его брать?
-
../paths.xml
А что это за файл? Он тоже нужен? Зачем такие огороды нагорожены?
-
Загрузчик модов не закинул на своё место скорее всего.
Э... Какой загрузчик? Кроме файла res_mods\0.9.3\scripts\client\mods\SampleMod.pyc должно быть еще что-то?
-
Запустил WoT, всё гуд.
А мой вариант у вас какой результат давал?
Лог норм:Ваш вариант у меня выдал такое:
/------------------------------------------------------------------------------------------------------------------------\ BigWorld Release Client (compiled at 15:29:52 Sep 3 2014) starting on Wed Oct 08 00:58:05 2014 Content Type: content Checking ./res_mods/0.9.3: mods found [NOTE] (scripts/common/fortified_regions.py, 188): fortified_regions.init() [WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read fractureEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole.model [WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read touchdownEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole.model [WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read fractureEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole10.model [WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read touchdownEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole10.model [NOTE] (scripts/client/post_processing/__init__.py, 267): The quality = 2 was selected. [NOTE] (scripts/client/post_processing/__init__.py, 267): The quality = 3 was selected. PostProcessing.Phases.fini() \------------------------------------------------------------------------------------------------------------------------/
Т.е. нету строчки:
Load mods: SampleModПочему?
-
А в чем особая надобность именно в __init__.py это делать?
Это я ради эксперимента упростил мод до одного файла, содержащего одну строчку. А изначально эта проблема была обнаружена вовсе не в__init__.py. А вообще - почему нет? Результат-то везде одинаков.
-
Ошибка точно не тут.
А вот не знаю. Провел эксперимент:
- Удалил все моды.
- Создал файл res_mods\0.9.3\scripts\client\gui\Scaleform\locale\__init__.py с единственной строчкой:
from gui.WindowsManager import g_windowsManager
-
Скомпилировал этот файл и запустил WoT.
Картина та же. Сами попробуйте.
-
Товарищи, а что не так с g_windowsManager? Как его правильно импортировать?
Я пытаюсь так:
from gui.WindowsManager import g_windowsManager
Но мне говорят:
Traceback (most recent call last): File "scripts/client/Account.py", line 10, in <module> File "scripts/client/ConnectionManager.py", line 9, in <module> File "scripts/client/predefined_hosts.py", line 13, in <module> File "scripts/client/gui/shared/__init__.py", line 3, in <module> File "scripts/client/gui/shared/server_events/EventsCache.py", line 17, in <module> File "scripts/client/gui/shared/server_events/modifiers.py", line 15, in <module> File "scripts/client/gui/shared/server_events/formatters.py", line 14, in <module> File "C:\Path\To\Project\Core\src\Scaleform\locale\__init__.py", line 6, in <module> import gui.qwerty File "C:\Path\To\Project\Core\src\qwerty\__init__.py", line 7, in <module> from gui.WindowsManager import g_windowsManager File "scripts/client/gui/WindowsManager.py", line 5, in <module> File "scripts/client/BattleReplay.py", line 21, in <module> ImportError: cannot import name connectionManager
Кто нибудь с таким сталкивался? Как решали?
-
Товарищи, я тут уже писал, что если мод открывает сокеты, но не закрывает их, то при попытке пользователя закрыть клиент (в бою или в ангаре, через меню или по Alt-F4 - не важно) он повиснет в процессах.
Вопрос: по какому событию можно отследить попытку пользователя закрыть клиент, чтобы вовремя закрыть сокет?
-
Там все трудно =)
Ничего там трудного, кроме вашей жажды добраться до исходников.
Пишите тут, нам тоже интересно)По порядку:
После выхода из игры WoT частенько подвисает в процессах, не оставляя в логе ничего подозрительного.Это вызвано тем, что мод не закрывал сокет. При попытке закрыть игру, клиент какое-то время ждет закрытия всех соединений.
Иногда, WoT падает, опять же не оставляя в логе ничего подозрительного. Обычно, это происходит при выходе из боя в ангар.В Python-коде было много неиспользуемых импортов т.е. код, который их использовал, давно закомментирован или удален, а импорты остались. Импорты в Python -штука опасная тем, что в импортируемых файлах может быть код прямого исполнения. Забудете почистить импорты - будете долго гадать о причинах всяких странностей.
Временами, когда Python вызывает какую-то Flash-функцию в GUI ангара, эта функция вызывается дважды. По крайней мере, я делаю такой вывод из лога, в котором вижу повторяющиеся записи. Как правило, это приводит к вылету из WoT, но иногда игра может выдержать 2-3 таких дублирующихся вызова.Эта странность пропала сама и я не нашел ей объяснения.
- 2
- 1
-
Подмазывается, шпион, тс держи с ним ухо востро )))))
Да я понял уже. Он сегодня доступ к исходникам у меня выпытывал. :)
Именно так я столкнулся с висением в ОЗУ когда работал с GUI.Text и BoundingBox, я их создавал но не удалял. Как результат из игры выходишь, а процесс висит.У меня, скорее всего, открытый сокет мешается. Позже расскажу.
-
Кстати...
После выхода из игры WoT частенько подвисает в процессах, не оставляя в логе ничего подозрительного.Если в этот момент посмотреть на процесс игры через анализ цепочки ожидания в мониторе ресурсов, то там можно увидеть, что...
Один или несколько потоков WorldOfTanks.exe ожидают завершение сетевого ввода-вывода.
А через какое-то время в логе появится строчка:
[WARNING] (scripts/client/account_helpers/CustomFilesCache.py, 33): Method "close" takes too much time 0.18799996376
...и процесс завершит работу.
Что бы это могло значить?
-
DebugUtils.LOG_ERROR
Это ваш логгер или есть что-то стандартное?
они тут еще с 2011 года тусуются, думаете за столько лет ничего не знают?А, эти... Этим просто лень снисходить и кому-то что-то объяснять.
-
(траи-кетчи) поставь в AS в каждой функции.
Пробовал. Не ловится туда ничего. Да и по логам было бы видно, если бы были какие-то необработанные исключения. А тут по логам видно только то, что...
когда Python вызывает какую-то Flash-функцию в GUI ангара, эта функция вызывается дважды. По крайней мере, я делаю такой вывод из лога, в котором вижу повторяющиеся записи.И вот это волнует меня больше всего. Я решительно не понимаю как и почему это происходит.
сколько раз вопрос задавал все жмут делится инфойДумаю, дело в том, что мало у кого она есть. Чем делиться, когда сам толком нифига не понимаешь?
возожно, не убираются при выходе из боя и/или ангара созданные модом объекты, потом повторно создаются, накапливаются в памяти... А может я бред написал.Нет, это вполне логичное предположение. Но как его проверить?
-
Товарищи, мне на доработку дали один препаршиво написанный мод. Мод весьма сложен - GUI в ангаре и в бою, Python, взаимодействие с серверной частью... т.е. переписать с нуля - не вариант. Нужно было просто пофиксить болячки. Часть я пофиксил, но я решительно не понимаю, что делать с основной проблемой - общей нестабильностью мода. Проявляется она в следующем:
- После выхода из игры WoT частенько подвисает в процессах, не оставляя в логе ничего подозрительного.
- Иногда, WoT падает, опять же не оставляя в логе ничего подозрительного. Обычно, это происходит при выходе из боя в ангар.
- Временами, когда Python вызывает какую-то Flash-функцию в GUI ангара, эта функция вызывается дважды. По крайней мере, я делаю такой вывод из лога, в котором вижу повторяющиеся записи. Как правило, это приводит к вылету из WoT, но иногда игра может выдержать 2-3 таких дублирующихся вызова.
Вы стакивались с подобным? Как решали? Известны ли какие-то типовые причины возникновения таких ситуаций или типовые решения?
-
поищи тотал коммандером фалик с sys.argv
У-у-у... ептить! Сколько там всего интересного открывается. Спасибо!
Только "тотал коммандером" - не айс. Рекомендую IntelliJ IDEA.
-
Т.е. вы хотите сказать, что при разработке XVM не используются других методов отладки - только логи, только хардкор? Что используют раздаботчики WG - никто не знает и не интересуется?
Ребят, кто-то из вас занимался проф. разработкой приложений на базе Flash/Flex/AIR или Python? Вас не напрягает такой скудный инструментарий отладки?
-
Вообще с отладкой не все так плохо, как ты считаешь.
Почему? Все именно так плохо. Можно что-то принтить в лог. И все. Как узнать, например, что у тебя необработанный эксепшен в AS3? Никак.
-
...python.log - это файл ввода-вывода питона... ...На сегодняшний день я знаю два способа отладки. Непосредственное тестирование мода...... ...Второй - использовать PjOrion... ...для проверки работоспособности отдельных функций. Некоторые функции можно проверять в реплее (некоторые базовые даже в ангаре), некоторые придется проверять в реальном бою. Насчет перезапуска клиента - ну с этим ничего не поделаешь...
М-да... Грустно. Как-то даже не верится, что с таким инструментарием можно отлаживать что-то серьезное, наподобие XVM.
-
Товарищи, подскажите наиболее эффективные методы отладки модов. Разработку модов для WoT я изучаю совсем недавно и для меня ситуация с отладкой выглядит совсем печально. Сами судите:
Python:
- Как подключить к нему отладчик, я не знаю. Это возможно?
- Эксепшенов нигде не видно.
- Можно принтить что-то в python.log.
AS3/2:
- Как подключить к нему отладчик, я не знаю. Сомневаюсь, что есть способ, но таки спрошу. Это возможно?
- Эксепшенов нигде не видно.
- Трейсы не работают. Или работают? Я их не нашел. Где они?
- Можно связаться с питоном, чтобы он напринтил что-то в python.log.
Ко всему этому, еще и после каждой правки нужно перезапускать клиент WoT. Финиш!
Что, все и правда так печально? Или есть возможность организовать процесс отладки более удобным образом?
-
Смотри тут, может, найдёшь (открытый исходный код).
Это я уже смотрел. Там доступность результата боя проверяется отдельным потоком в бесконечном цикле. Это несколько расходится с моими представлениями о хорошем программировании. Т.ч. я теперь сомневаюсь - автор сделал это по некомпетентности или по-другому это сделать просто невозможно. Этим и вызван мой вопрос.
-
Как только бой окончился, можно узнать все остальное, включая точный урон всех союзников и противников, ждать при этом в самом бою необязательно.
А вот если вышел из боя (или даже ушел в другой бой), из какого события достать его результаты?
-
Урон отлавливается из маркеров и оттуда же пишется в хитлог. Если враг за пределом видимости, урон не определить
Я видел код, но не понял до конца и не думал, что оно тупо с маркеров. М-да... :)
Ну, ладно. А по этому вопросу...
Допустим игрок вышел из незавершенного боя А в ангар, после чего начал бой Б или остался в ангаре. Через какое-то время бой А кончился, клиент получил его результаты и показал игроку соотв. сообщение. Эти результаты содержат входящий/исходящий урон для каждого участника боя? Как получить эти результаты? Из какого события?...что-то сказать можете? Просто хочется получить достоверный исходящий урон для каждого участника боя (или хотя бы свой), не заставляя игрока сидеть в бою до его окончания. Это вообще возможно?
По какому событию можно отследить попытку пользователя закрыть клиент?
in Modding General Discussion
Posted
На всякий случай отмечу, что game.fini() не подходит т.к. вызывается по факту выхода из игры, который не произойдет, пока сокеты открыты. Поэтому я и хочу отловить ПОПЫТКУ выхода, а не факт выхода.