Я отправил файл на анализ с комментариями и пометкой ложной тревоги.
UPD: после установки
(с angel.dll из 2.8.8 такого нет)
и при полном сканировании каталога

AuAu, а точнее? Имеется в виду заброшенная шахта? Там можно проводит бесконечное кол-во боёв?
Algor, пещера приключений - если в ней есть троглодиты, то есть всегда. +кстати если быструю битву с ними проводить, то количество существ у героя багается часто
(18.12.2019 11:27)AuAu Wrote: [ -> ]Algor, пещера приключений - если в ней есть троглодиты, то есть всегда. +кстати если быструю битву с ними проводить, то количество существ у героя багается часто
Скрипт пещеры приключений мной так и не был адаптирован под плагин Переигрываемой битвы. Поэтому такие казусы и выходят.
Вывод: Надо корректировать и подстраивать скрипт.
Berserker, давно пора эту дефку (программу) вырезать из исталятора ЭРЫ (я так и сделал в сборке и проблемы данного вопроса начисто исчезли). Слишком часто пользователи жалуются на ложные срабатывания антивирусов. Всех не переубедишь. Тем более, что удаление defka.exe из инсталятора не нанесёт абсолютно никакого ущерба для игры, а ей если и пользуются, то от силы один-два человека, но жалуются тысячи.
Я видел твою переписку на неделе с челом в ВК в группе ЭРЫ. Сликшом много усилий на переубеждение ты вкладываешь, и это только, заметь, для одного!!! человека. Проще уйти от этой проблемы раз и навсегда. ИМХО.
igrik, скрипт изменён в 2004 году, ошибка была ещё с тех пор, ты мб не так понял. Каждый раз при посещении пещеры где нарандомились троглодиты(там вроде от позиции на карте зависит) - они там есть всегда, а глючит именно быстрая битва и раньше, до эры, глючила. Автоматическая с "закончить в 1 клик" - не глючит
igrik, я пока отвечал парням в ВК, нашёл версию 2.0 на Delphi, более функциональную и с меньшим весом. В сборке сразу и заменил. Сегодня тогда обновление сделаю.
А с angel.dll что? На версию из 2.8.8 антивирь не агрится.
Algor, Angel по сути теперь пустышка без особого кода. Но я умудрился включить промежуточную не Delphi версию в релиз. То-то думаю, откуда ругань.
А антивирус работает по принципу: Virtual Pascal (50% вероятность вируса) + Размер < 15 КБ (ещё 50% вероятность вируса). А так тоже почти пустышка. Исправил. Залью сегодня обновление.
Version 2.9.1
------------------------
#small-fixes #antiviruses-heaven
[+] Replaced Tools\DEFka v1.0 with more feature rich DEFka 2.0.
[+] Replaced Virtual Pascal angel.dll stub with Delphi angel.dll stub.
[+] Added "ErmLegacySupport" option in heroes3.ini. If set to 1, compatibility with old ERM scripts will be better
at the cost of ~15% ERM performance decrease. Options forces local variables reset before each !?XX trigger, even
in DO-loops.
[-] Renamed Mods\WoG\EraPlugins\erm_hooker.dll to *.era.
daemon_n, проблему обнуления локальных переменных перед КАЖДЫМ триггером решил через опцию, которая по умолчанию включена. -15% производительности, -50% сообщений о багах в старых скриптах.
Berserker, спасибо за обновление!
Честно говоря, я думал, что так специально задумано обнулять переменные, чтобы программа выполнялось чётко. Я надеюсь, производительность сильно не упадёт, но так и не понял, зачем это, ведь не во всех скриптах в начале стоит обнуление тех же переменных. Я совсем запутался. Объяснили же мне сперва иначе
Версия в json Вога висит 2.8.3 , если что

daemon_n, версию обновил, спасибо.
1) Явная инициализация лучше неявной.
2) 0/^^ не единственное разумное значение по умолчанию.
3) Многим переменным не нужна инициализация по умолчанию. Они при первом использовании получают значение. Пример:
!?CM0;
!!CM:P?y1/?y2/?y3; y1..y3 — координаты щелчка на карте
Накладные расходы сказываются на производительности. По моим подсчётам ~-15%. С учётом ускорения в 2.9 пользователи этого не заметят вообще. Но полагаться на неявную инициализацию не стоит в новых скриптах.
Спасибо, версию подправил.
Berserker, наверно, я успокоился, поняв большую (?) часть сообщения

Но тогда вопрос, что полезного могу сделать, помимо сбора пофикшенных в сборке скриптов? Сложность в том, что часть из них подразумевает переигрываемую битву, потому не хочется выкладывать просто готовые erm из сборки, да и протестировать сперва надо на 2.9.1, чем сейчас и пытаюсь заняться.
daemon_n, смотри по пунктам:
Quote:1) Явная инициализация лучше неявной.
При явной поднял глаза и видишь строку, где присваивается значение, и откуда. Например, записывается номер героя. При неявной нужно просмотреть весь код до самого верха и убедиться, что нигде значение не устанавливается, отличное от 0/пустой строки.
Quote:2) 0/^^ не единственное разумное значение по умолчанию.
Пусть y1 - число игроков в игре. Если забыть его установить, 0 может приводить к вылету. Минимальное число игроков — 1. Часто нужно именно особое, явно заданное программистом значение.
Quote:3) Многим переменным не нужна инициализация по умолчанию. Они при первом использовании получают значение. Пример:
Тут всё ясно. Первая потребность в переменной возникает в том же месте, где она без условия получает значение.
!!OW:A?y1; цвет активного игрока в y1
daemon_n, тогда не переживай особо. Работать будут и стандартные. Если баг исправляешь — оставь комментарий в коде. Самое важное, что можно сделать — просто поиграть.
Berserker, не хочу присваивать чужую славу - все скрипты исправлены не мной и уже с комментариями

А вот поиграть - это я с удовольствием.
UPD: опция 45 Castle Upgrading (33 erm), который позволял увеличить прирост существ теперь показывает диалоговое окно некорректно:
А вот что будет, если нажать ПКМ на окошке (option 180 buy all creatures button, 53 erm -wog map option):
daemon_n, проверял на 2.9.1?
Можно сохранение?