Ethereal, нельзя. Там формат файлов не компонентный. Любой мод включает сразу конфиг всех существ и городов. Потому не совместим ни с чем.
Если изменить доп. прирост существ в тифоне - то ничего не меняется при постройке строений. Проверял на грифонах и постройке Бастиона грифонов (так и осталось +3 грифона).
Кто-нибудь это смог исправить?
(20.12.2021 20:45)AnT Wrote: [ -> ]Если изменить доп. прирост существ в тифоне - то ничего не меняется при постройке строений. Проверял на грифонах и постройке Бастиона грифонов (так и осталось +3 грифона).
Кто-нибудь это смог исправить?
Доприрост для городов - отдельная таблица. Тифон 2.7 её не изменяет.
Появилось несколько отчетов по багам в тифоне. Не знаю, нужны ли и будут исправляться. Проверял на 2.7 и typhonz.
1. Не отображается кол-во доп. ресурсов при найме существ, т.е. кроме золота ничего не показывает, хотя при найме исправно списывает.
2. Сломалась способность Стрельбы вплотную, полученная через опыт. Врожденная, через галочку в тифоне, исправно работает.
3. Не работает Ответный выстрел. Один раз правда сработало, когда стрелок вместо выстрела подошел и ударил врукопашную.
(22.03.2022 12:31)major Wrote: [ -> ]1. Не отображается кол-во доп. ресурсов при найме существ, т.е. кроме золота ничего не показывает, хотя при найме исправно списывает.
Исправлялось в Тифоне 3. Увы, Берсеркер обрабатывает структуру монстров в окне найма ещё до того, как таблица монстров переносится Тифоном.
(22.03.2022 12:31)major Wrote: [ -> ]2. Сломалась способность Стрельбы вплотную, полученная через опыт. Врожденная, через галочку в тифоне, исправно работает.
В ВоГе она наглухо привязана к снайперству. Просто так работать не будет.
(22.03.2022 12:31)major Wrote: [ -> ]3. Не работает Ответный выстрел. Один раз правда сработало, когда стрелок вместо выстрела подошел и ударил врукопашную.
В Тифоне 3 проверял - работает.
(22.03.2022 13:00)XEPOMAHT Wrote: [ -> ]В ВоГе она наглухо привязана к снайперству. Просто так работать не будет.
Проверял со всеми улучшениями стрельбы. Дистанция, преграды. Все равно не работает.
Исправлялось в Тифоне 3.
В Тифоне 3 проверял - работает.
Приветствую, я так понимаю Typhon v3, только для Era+, с новыми городами?
Quote:Исправлялось в Тифоне 3. Увы, Берсеркер обрабатывает структуру монстров в окне найма ещё до того, как таблица монстров переносится Тифоном.
Перенос происходит прямо перед показом диалога?
(07.08.2022 17:13)Aln Wrote: [ -> ]я так понимаю Typhon v3, только для Era+, с новыми городами?
Да, Тифон 3 работает только в ЭРА+. Для добавления новых монстров в купе с новыми городами придётся установить ЭРУ+.
(07.08.2022 18:30)Berserker Wrote: [ -> ]Перенос происходит прямо перед показом диалога?
В AfterWoG-е. Т.е. сначала таблицу переносит ВоГ, увеличивая количество монстров до 197, затем её же второй раз переносит Тифон, увеличивая уже до 1000. Т.е. сама ЭРА похоже видит только самое первое увеличение структуры монстров, поэтому мне в Тифоне 3 пришлось "сказать" эровскому движку, что Тифоновский - первый перенос структуры, хотя на самом деле это не так и в короткий момент времени (т.е. до тифоновских патчей на новых монстров) era.dll будет при попытке обращения к структуре монстров попадать в молоко, точнее в незагруженные из mop-файлов данные в виртуальной памяти, т.к. в начале происходит перенос, а mop-файл с текстовиками монстров грузятся немного позже.
Использование базового адреса на структуру в era.dll решило бы эту проблему. Т.к. сама игра получает доступ к структуре монстров именно с базового адреса (но вот ВоГ да - грешен с использованием прямого адреса, из-за чего 99% всех адресов для переноса структуры монстров - на воговский код, в чистом SoD-е перенос структуры монстров - копейки, как будто сами разработчики в NWC предусматривали и добавление новых монстров в игру, и так же новых городов в игру без изменения кода игры, в отличии от ВоГа, в котором потребовалось сменить тонны кода - к сожалению Слава Сальников предусмотрел только добавление новых героев до лимита в 199, количество же монстров и городов в ВоГе жёстко закорочено воговским кодом).
XEPOMAHT, а по какой причине число героев не может превышать 199?
(08.08.2022 02:59)Raistlin Wrote: [ -> ] а по какой причине число героев не может превышать 199?
Тогда ERM-триггеры, завязанные на номерах героев, придётся переделывать. Т.е. прощай ERM, здравствуй LUA. В том смысле, что ERM-скрипты, основанные на триггерах, завязанных на номерах героев, начнут срабатывать не для тех героев и вообще не в тех случаях, для которых они установлены. В общем, ERM-код без смены номеров соответствующих функций-триггеров, просто сойдёт сума. Например тот же ERM-триггер, катастрофически замедляющий ход ИИ-героев на карте, будет вызывать скрипты с соседних ERM-функций и приводить к фатальным ошибкам или просто к какой-нибудь охинее на карте.
XEPOMAHT, так RedirectMemoryBlock же для Эры должен сообщить новый адрес таблицы и всё путём. Кажется, для TyphonZ я так и сделал одной-двумя строками. В Typhon 3 до сих пор не так? Сообщается ведь не только адрес, но и размер таблицы, что тоже может быть важно.
(08.08.2022 07:53)Berserker Wrote: [ -> ]RedirectMemoryBlock же для Эры должен сообщить новый адрес таблицы и всё путём. Кажется, для TyphonZ я так и сделал одной-двумя строками. В Typhon 3 до сих пор не так? Сообщается ведь не только адрес, но и размер таблицы, что тоже может быть важно.
Должен, но по-факту Эра частично игнорирует RedirectMemoryBlock для таблицы монстров. Как раз в TyphonZ оно и не работает так как нужно. Повторяю, что в Тифоне 3 я правил это костылями,
Raistlin тоже пользуется костылём, чтобы обойти этот баг. Без костылей: либо читать структуру монстров без RedirectMemoryBlock, либо искать ошибки, связанные с RedirectMemoryBlock в самой era.dll.

Проверил. По коду ничего не игнорирует. А код Typhon 3 ты не публиковал.
В событии OnAfterStructRelocations (после релокаций структур), которое срабатывает после AfterWoG я получаю конечные адреса массивов:
Code:
procedure OnAfterStructRelocations (Event: GameExt.PEvent); stdcall;
begin
SecSkillNames := GameExt.GetRealAddr(SecSkillNames);
SecSkillDescs := GameExt.GetRealAddr(SecSkillDescs);
SecSkillTexts := GameExt.GetRealAddr(SecSkillTexts);
MonInfos := GameExt.GetRealAddr(MonInfos); // Вот здесь
ArtInfos := ppointer(ArtInfos)^;
Spells := GameExt.GetRealAddr(Spells);
end;
А в реализации перехвата диалога найма монстров использую сохранённый указатель:
Code:
function GetMonCost (MonType: integer; out ResType, ResCost: integer): integer;
var
i: integer;
begin
result := Heroes.MonInfos[MonType].CostRes[Heroes.RES_GOLD];
ResType := -1;
ResCost := 0;
for i := Heroes.RES_FIRST to Heroes.RES_LAST - 1 do begin
if Heroes.MonInfos[MonType].CostRes[i] <> 0 then begin
ResType := i;
ResCost := Heroes.MonInfos[MonType].CostRes[i];
exit;
end;
end;
end;
Quote:Как раз в TyphonZ оно и не работает так как нужно.
Примеров не было. У Third Upgrades Mod проблем вроде бы нет.
(08.08.2022 10:53)Berserker Wrote: [ -> ]В событии OnAfterStructRelocations (после релокаций структур), которое срабатывает после AfterWoG я получаю конечные адреса массивов:
Тифоновский патч на структуру монстров срабатывает сразу после загрузки era.dll в 701013h, скорее всего эровское событие OnAfterStructRelocations выполняется где-то в моменте загрузки era.dll, а его следует выполнять позднее, т.к. в эровском AfterWoG приоритет исполнения кода зашит в самой era.dll, поэтому единственное решение - выполнить код уже после era.dll. Так было сделано Мастером, я данную вещь в Тифоне не менял (т.к. все патчи в AfterWoG-е Тифона написаны именно под это место и в другом месте велик риск, что они будут затёрты другими патчами).
(08.08.2022 10:53)Berserker Wrote: [ -> ]Примеров не было. У Third Upgrades Mod проблем вроде бы нет.
Там Аметист, а не Тифон. В Аметисте была та же проблема, но Маячок вроде как-то исправил.