Pages: 1 2 3 4 5 6 7 8 9 10 11
(21.04.2025 08:26)Barin Wrote: [ -> ]Что же там такое обновляется критическо-важное? Чувствую напарюсь я с адаптацией своего мода.
Да, эти обновления нацелены на мелкие ERM-моды. С глобальными, тем более написанными под ERA 2.46, - сейчас геммор, т.к. и сами ERM-скрипты уже пишут совершенно по-другому, да и в самом языке ERM была исправлена тонна ошибок, что повлекло превращение рабыты небезопасных скриптов в тыкву - синтаксис стал более строгим. Особенно это касается небезопасных команд на UN:C, которые, при неправильном использовании, приводят к утечкам памяти, незаметными на старых версиях, и неожиданно всплывающих на новых. Поэтому лучшее решение - встраивать пользовательский код в саму игру с помощью WERD на эровских событиях.
Например в ERA+ переход со 2-й версии ЭРЫ в третью был крайне болезненным - пришлось полгода адаптировать весь код. Авторы глобальника H3:SW вообще париться не стали и мигрировали на обычный SoD, послав платформу ЭРА куда подальше. А когда-нибудь выйдет уже ЭРА 4.0, для которой, скорее всего, ERA+ уже не будет, т.к., во-первых, в текущей ЭРЕ поддержки Windows 2003 уже считай что нет, во-вторых, с каждым обновлением ломается совместимость с теми или иными плагинами, в-третьих, ничего нового и критического для поддержки глобальников нет (последнее, что было сделано - поддержка PNG), в-четвёртых, Тифон уже так сильно заточен конкретно под ERA 2.9.old, что верятность кофликта кода с ERA 4 довольно велик - там очень многое привязано к адресам эровских хуков и если Берсеркер их сменит - будет катастрофа для ERA+.
(21.04.2025 08:26)Barin Wrote: [ -> ]В старой Эре 2.46 скрипт работает как положено. Даю команду атаковать нужного героя(т.е вызвать битву) - всё работает. В новых же Эрах: герой куда-то перемещается, дичь полная. Как будто реально команды ERM поменяли. Или битвенные триггеры поменяли.
Старый ERM корректно работал на ERA 2.8.3, но там нет возможностей ERA 3. В более новых старые скрипты исполняются уже не так - по-другому, но многие старые моды под ERA 3 смогли переписать, чтобы они хотя бы не глючили, поэтому рекомендую так же адаптировать все скрипты под ERA 3, чтобы получить доступ к её возможностям.
(21.04.2025 08:26)Barin Wrote: [ -> ]Там в папке Debug много всяких файлов, какой нужен?
Для отладки главный файл - "exception context.txt", ещё полезен "x86 patches.txt", остальное - непойми что, лично мне ни разу не пригодилось, т.к. Берсеркер никакого хелпа по одладочным файлам не предоставил.
(21.04.2025 11:40)XEPOMAHT Wrote: [ -> ]в-третьих, ничего нового и критического для поддержки глобальников нет (последнее, что было сделано - поддержка PNG)
В ERA 4 будет добавлен важный функционал как раз для глобальных модов.
Barin, ты, если что, всю папку Debug загружай.
(21.04.2025 16:40)Berserker Wrote: [ -> ]Barin, ты, если что, всю папку Debug загружай.
Ок. Скидываю -
https://dropmefiles.com/5OehD
Буду пока тестить на Era 2.46f - а если вновь поймаю ошибку диалогов - попробую ERA 2.8.3
(21.04.2025 19:36)Barin Wrote: [ -> ] (21.04.2025 16:40)Berserker Wrote: [ -> ]Barin, ты, если что, всю папку Debug загружай.
Ок. Скидываю - https://dropmefiles.com/5OehD
Вылет из-за того, что в память не загружен def монстра, без HD-мода можешь узнать имя недостающего def-а, т.к. HD-мод зачем-то убирает сообщения ресурс менеджера.
(21.04.2025 19:58)XEPOMAHT Wrote: [ -> ] (21.04.2025 19:36)Barin Wrote: [ -> ] (21.04.2025 16:40)Berserker Wrote: [ -> ]Barin, ты, если что, всю папку Debug загружай.
Ок. Скидываю - https://dropmefiles.com/5OehD
Вылет из-за того, что в память не загружен def монстра, без HD-мода можешь узнать имя недостающего def-а, т.к. HD-мод зачем-то убирает сообщения ресурс менеджера.
Запустил без HD мода - также вылетает. Ни о каком дефе не предупреждает. Я Санту не подменял. Но почему-то он не подгружается.
(21.04.2025 23:44)Barin Wrote: [ -> ]Ни о каком дефе не предупреждает. Я Санту не подменял. Но почему-то он не подгружается.
Странно. Проверьте наличие графики для Санта-Гремлина в архиве из папки mods/wog/data. Имя боевого def-а из редактора монстров (если вы всё же используете редактор монстров, хотя вряд ли) должно совпадает с именем из архива игры. Если нет - переименуйте def, чтобы игра смогла найти его (в ERA+ графон сант лежит в zm173m.def, в обычном вог-е вроде бы так же).
Кажется я понял почему. Изначально Algor помог мне со скриптом, чтобы у Санты убрать гвардию. Тот скрипт на Эре 2.46f работает. Если коротко, то там Санта подгружается так:
!?BR; гвардия убирается только под этим триггером
!!BU:S173/1/113/1/0/1; установить Санту
Сейчас я переместил подгрузку Санты так:
!?BF;
!!BU:S173/1/113/1/0/1; установить Санту
Во всём моде на стороне противника я подгружаю монстов через !?BF - проблем не видел. А через !?BR очевидно, было сделано чтобы гвардия Санты убиралась. Через !?BF гвардия не убирается, ну и ладно.
Так что проблема не в дефе, а в !?BR на новой Эре. В старой то работает.
(22.04.2025 19:26)Barin Wrote: [ -> ]!?BR; гвардия убирается только под этим триггером
!!BU:S173/1/113/1/0/1; установить Санту
Оно ж срабатывает несколько раз, т.к. Берсеркер добавил допвызовы триггера:
Code:
Erm.v[997] := CombatRound;
Erm.FireErmEventEx(Erm.TRIGGER_BR, [CombatRound]);
В итоге, твой код пытается ставить санту несколько раз в один и тот же гекс. Если ты ставишь санту, то перед этим проверь хотя бы гекс на препятствие, т.к. содовский код после инициализации нового стека сразу бежит рендерить его графику на поле брани без проверок на успех инициализации. Например Тифон вообще полностью отменяет воговский !?BR в тактической фазе, оставляя один лишь эровский !?BR, чтобы перед тактикой не было лишнего срабатывания триггера (т.к. в WERD этот триггер может использоваться, чтобы он срабатывал именно 1 раз в начале каждого настоящего раунда без тактической расстановки из-за содовского бага нумерации раундов).
Отменять установку гвардии монстров можно с помощью UN:C заменой ID Санты на несуществующий и обратно, но такая штука будет несовместима с Тифоном, т.к. Тифон перехватывает все способности монстров в игре, включая и эту.
!?BR ведь и должен работать множество раз в тактической фазе, а дальше по разу за раунд. В оригинальном воге он порой срабатывал дважды за один раунд, в тёмной с светлой фазе, что могло приводить к проблемам. А вот !?BF работает один раз в тёмной фазе.
Новая заметка:
В ходе теста, на новой Эре, через RedirectFile перестал подменяться def героя на карте. Раньше он подменялся у меня на монстра - всё работало. А теперь пишет: "Map drawing error" - не отрисовывает с HD. Без HD сразу вылет.
Не сразу понял что к чему. Другие-то герои на карте подменяются, НО! Они подменяются на def-ы - сделанные по такому же принципу как и оригинал. Я сам такие делал. Тот же витязь к примеру - главный герой. Также я стандартного героя подменил на хотовского - тоже всё работает.
Итог: на старой Эре деф героя на карте можно было подменить на деф монстра. Теперь нельзя. Что-то поменялось.
Вот пример:
!!SN:L^Era.dll^/?y1 Ay1/^RedirectFile^/?y2 Ey2/1/^AH16_.def^/^MyGer.def^; !!VRy1:S0; !!VRy2:S0; Так работает. Мой деф сделан как и оригинал (коняшка бегает) И на хотовского героя тоже подменяется.
!!SN:L^Era.dll^/?y1 Ay1/^RedirectFile^/?y2 Ey2/1/^AH16_.def^/^AVWvamp0.def^; !!VRy1:S0; !!VRy2:S0; Так работало на старой Эре. Деф героя на карте подменялся на деф вампира. Теперь не получается.
p/s думал, может надо, чтобы имя по количеству символов совпадало, но нет, это не влияет. Игра теперь почему-то обращает внимание на тип def-а, в случае с героем на карте.
*************
def героя на карте имеет тип "Герой" (в defTool)
def вампира на карте имеет тип "Объект на карте" (в defTool)
Вот из-за этого наверное и конфликт на новой Эре. Если что-то знаете об этом изменении, напишите пожалуйста.
*************
В общем-то это неприятный факт, но я уже придумал рабочий способ как обойти проблему. Сделаю новый деф монстра, но сохраню его не как "объект на карте", а как "героя".
Главное, что RedirectFile остальное всё обрабатывает. У меня очень много на нём завязано. Надеюсь, что эта волшебная команда больше не притерпит изменений!
Вот ещё одно экспериментальное уточнение:
Сделал def героя (выбрал тип "Герой" в DefTool) - однако, снова отрисовка не сработала. Общее название из 5 символов (DMD02), как положено, а внутри defa-а 6 символов (хотел там кадры менять). Вот поэтому отрисовка и не работала. Оставил внутри defa 5 символов, что соответствует стандартным героям - всё получилось.
Это явное изменение внутри платформы. Раньше подсовывал ей монстра(объект на карте), с количеством символов внутри дефа больше 5-ти - а теперь нельзя.
(25.04.2025 03:54)Barin Wrote: [ -> ]на старой Эре деф героя на карте можно было подменить на деф монстра. Теперь нельзя. Что-то поменялось.
Вообще то тип спрайта "герой" жёстко завязан на адвенчур-менеджере, заменять def-ы целиком в памяти игры следует без изменения их типа группировки спрайтов. Тем более выводом спрайтов лошадки с героем полностью заведует код Бараторча - для добавления плавности хода лошадки он традиционно перехватил функции целиком - просто хуком уже не подлезешь. Та же ERA+ добавляет своих лошадок в код Бараторча чудовищными небезопасными костылями - т.к. Бараторч свой код под платформу ЭРА не меняет десятилетиями (т.к. он давно уже без донатов ничего не делает), поэтому и такое стабильное состояние HD-мода на руку авторам глобальных модов.
Что поменялось в самой ЭРЕ? Да, стало строже и справедливее, старые вольности, на 99% ведущие к утечкам памяти и просто воговским багофичам, уже исправлены многочисленными фагфиксами, даже ERA+ правит кучу ошибок в игре. Если спрайты подменяются, то их структура должна быть такой же как в игре, но в ERA использовать def-ы уже не обязательно - можно использовать формат PNG для подмены самих кадров в памяти игры.
(25.04.2025 12:51)Barin Wrote: [ -> ]Общее название из 5 символов (DMD02), как положено, а внутри defa-а 6 символов (хотел там кадры менять). Вот поэтому отрисовка и не работала. Оставил внутри defa 5 символов, что соответствует стандартным героям - всё получилось.
Имена кадров внутри def-а не должны совпадать с именами из других def-ов - они должны быть уникальными. Это прожорливая VCMI - да, под каждый def выделяет свою память, поэтому ихним моддерам можно не париться, но оригинальный геройский движок грузит спрайты в один общий кэш, в котором поиск нужного кадра происходит по имени. ГрейФэйс у себя в программе добавил рамомизатор имён в Def-tool именно для этого - пользуйтесь, а не изобретайте велосипед.
(25.04.2025 12:51)Barin Wrote: [ -> ]Это явное изменение внутри платформы. Раньше подсовывал ей монстра(объект на карте), с количеством символов внутри дефа больше 5-ти - а теперь нельзя.
Да можно ж, например в ERA+ бегают лошадки с 12-ти символами в именах, спёртые с VCMI, и геройский движок с ними работает без ошибок. Моддерам под ERA нужно приучаться моддить без костылей, даже без команды RedirectFile с помощью не подмены, а добавления новых def-ов, т.к. возможности платформы ERA позволяют делать то, что было нельзя на WoG.
Думаю, Херомант прав, и ошибка именно в совпадении имени кадра. Должны быть уникальные префиксы у имён кадров. Это такой хитрый способ экономить ресурсы или держать в памяти отдельные изображения, отгрузив всё остальное. Не знаю, насколько он практичен и используется ли где игрой доступ именно к конкретному кадру по имени. Если нет, можно было бы сделать реализацию с генерацией случайного имени в процессе выполнения и решить эту проблему навсегда. Херомант, что думаешь?
Не, я экспериментировал. Разные дефы пытался подгрузить, с разными именами. И расширения у них разные, которые DefTool генерирует.
В данном конкретном случае, я на ERA 3.9.26 and HD 5.5 R53
Сделал отдельный деф, но с 6-ю символами получил ошибку. Сделал 5 символов - всё заработало.
Pages: 1 2 3 4 5 6 7 8 9 10 11