SyDr, ты-то как поживаешь? )
Disclaimer: я по прежнему считаю, что на wforum любая тема подходит для любых обсуждений, на любом языке (хотя, желательно, чтобы собеседник мог читать переписку)
Пару недель назад (ещё до твоего возвращения) я снова взялся за SD MM. Теперь уже с кое-каким багажом опыта на C++ и лучшим пониманием, чего я хочу добиться. Где бы только ещё времени свободного побольше найти.
А жизнь... Ну... Всё по прежнему и ничего не меняется

(17.11.2017 17:12)Berserker Wrote: [ -> ]Это ЕРМ-скрипт? Нет, это новая убер-фича под скромным названием «Отслеживание ЕРМ» (ERM Tracking).
Вставить текст в новый ERM файл в ERM editor и сохранить под уникальным именем в "s" любого из модов?
А тормозить игру он будет? Какие у файла зависимости? Что такое
!!SN:W^algor_csf_stack^/?y1 W^algor_csf_cmndr^/?y2; in bh battle.erm on line 1868 at pos 4?
Требуется ли файл battle.erm, либо это просто пометка о том, откуда позаимствован код?
SyDr, прекрасно! Рад тебя видеть снова вообще и в строю в частности. Скажи, есть последняя версия, которая вполне рабочая и стабильная из тех, что ты писал ранее?
Heromant, нет, этот файл предназначен для анализа с целью определения причины бага или вылета, а то и просто отладки или изучения. Представь себе два файла:
script 1.erm
!?CM0;
!!CM:R0;
script 2.erm
!?CM0;
!!IF:M^Вы щёлкнули мышью^;
При щелчке правой кнопкой на карте приключения генерируется событие
!?CM0; [здесь в виде комментария указаны флаги и часть ЕРМ переменных на момент генерации события]
Дальше выполняется команда-обработчик из первого скрипта:
!!CM:R0; in script 1.erm on line 1
Дальше выполняется команда-обработчик из второго скрипта:
!!IF:M^Вы щёлкнули мышью^; in script 2.erm on line 1
Итого имеем запись, какие события генерировались и какие команды из каких скриптов в каком порядке выполнялись:
!?CM0; [...]
!!CM:R0; in script 1.erm on line 1
!!IF:M^Вы щёлкнули мышью^; in script 2.erm on line 1
Потерплю, конечно. Менеджер отличный!
Вышло обновление до 2.47.8
- Implemented fully featured ERM tracking support: track all executed triggers and commands in order to defeat bugs and learn game mechanics.
- Improvated named functions support. Added programmatical ability to get function name by ID.
Файл настроек прилагается, но дублирую:
Code:
[Era]
CpuPatch = 1; reduce cpu load from 100% to 1-5%, may conflict with high resolution mice
UseOnlyOneCpuCore = 1; if true, only one CPU core will be used, decreasing probability of crashes
FixGetHostByName = 1; if true, current PC IP address detection is improved to exclude local addresses (192.168.x.x, etc)
LoadCD = 0; if true, an attempt to load resources from CD disk will be made, increasing game initialization by about 3-5 seconds
IgnoreInvalidReceivers = 0; not implemented
Debug = 1; allow debugging at all or not, see Debug\Era directory
Debug.Everything = 0; if true, enable all debugging options at once
Debug.AbortOnError = 0; abort on serious, but not critical errors or not
Debug.LogDestination = File; logging driver: File or Console
Debug.LogVirtualFileSystem = 0; if true, Virtual File System work will be logged
Debug.DumpSavegameSections = 0; if true, each game saving will create dump of each Era section in a separate file
Debug.TrackErm = 1; if true, ERM commands and triggers will be tracked for report/debugging purposes
Debug.TrackErm.MaxRecords = 10000; maximal number of commands and events to track (1 record ~= 100 bytes RAM)
Debug.TrackErm.DumpCommands = 1; if true, all commands texts will be saved during execution, allowing to track ERM commands, executed by plugins
Debug.TrackErm.IgnoreEmptyTriggers = 1; if true, trigger start - trigger end pairs without executed commands will be ignored
Debug.TrackErm.IgnoreRealTimeTimers = 1; if true, real time timers (!?TL) will be ignored
Воспользоваться отслеживанием ЕРМ просто — жмите F11 или дождитесь вылета, после чего прямиком в папку Debug\Era.
HD Mod при вылетах сейчас не даёт записаться отладочной информации, но это исправлю.
Berserker, а в этой 2.47.8 по сохранением нет обратной совместимости?
По факту старые сейвы не грузятся - всё виснет при загрузки. Причём новые, где игра начата уже с данной обновой, грузятся нормально.
Забыл сказать, что формат сохранений изменился. Прошу прощения. Понадобилось очень.
Выходит эта новая убер фича со стеком вызовов в логах сейчас полезна только, если запускать без HD mod?
Нет, по F11 работает. Не работает только при вылетах. Это уже исправляю.
К сожалению, обнаружил, что патчи x86_patcher не потокобезопасны. Если несколько потоков вызовут одну и ту же функцию, может быть сбой, вылет или повреждение памяти. Разработчикам плагинов рекомендуется быть к этому готовыми.
Эх, а я выпилил у себя RecallApi во время перехода на патчер.
- Implemented support for multiple UnhandledException handlers, now both HD and Era handlers do their job.
Исправил.
(17.11.2017 18:55)igrik Wrote: [ -> ]Осталось реализовать толковый метод двойного нажатия в окне повышения командира (link)
Сделал. Мод перезалил по той же ссылке.
Т.к. в текстовике добавилось строк (которых не было в оригинальном "znpc00.txt", но без них никак) нужно дополнить английский текстовик. (
txt)
Теперь нужно обкатать диалог с целью проверить его на ошибки и вылеты.
Не мог день зайти на форум, видно, локальные проблемы. Спасибо, выкачал. А в пак текстовик не положил?
Berserker, что-то в последней версии выделение городской постройки контуром пропало и с HD и без.