Evil Islands (Add-On) *последняя версия*
(05.11.2025, 23:05)Atom Написал: А для кого я новый стартер в ОБТ выложил и уже почти допилил до релиза

посмотрел потыкал, пока только претензии к внешнему виду, а так вроде все запускается

я так понимаю он теперь autoexec и билиотеки binkw32 mss32 из папки engine берет?
просто я для затеряных в астрале другие версии использую...

UsingINIconfigs пока не работает?

и еще вопрос редактировать меню можно будет? хочу назад кнопку с Демо xDD

и возможность работать с autoexec не нашел, будет?
Ответ
Star 
Уже была версия 0.12.4.2 с Фернео-модом и 0.12.4.1 с новым Жамевю, а перечень чего там как бы и не было.

12) В "Monster Prototypes" столбец "Equipment Weapon №2", альтернативное оружие, могло бы быть жезлы, но как будто не работает. Или в №1 несколько предметов через запятую, но используют только первый. А вот заклинания могут выбрать, если выдать. Надо чтоб стрелковое оружие доставали, когда цель в ближнем бою не достать.
13) Убрать файл AutoRunSpellAddon123.mob, который каждую секунду пишет GetWorldTime() в некую глобальную переменную. Были комментарии, когда почему это делалось. Надо просто сделать просто и успокоиться.
14) CreateParticleSource(id, X, Y, Z, Size, "Type", "TextureName", n1, ... , n16) Дополнительно название текстуры, которая используется заместо чего там у этого типа частиц заложено по умолчанию. У таких текстур структура из 4x4 секторов, поэтому дополнительно 16 чисел от 1 до 16 (либо 0, можно с повторами) в каком порядке какие сектора запускать. Таких текстур с числами можно несколько (всего до 16). Такая вот технология соединения плоских спрайтов и трёхмерных пространств.
Для "Fire" и "Smoke" используются разные части одной текстуры "tendrismoke.mmp", в "CampFire" и то и то вместе.
У "Tornado" Size измеряет клубы песка, какие там крутятся, то есть размеров несколько (Size1, Size2).
Для "VulcanSmoke" отсутствующая в ресурсах текстура называется "vulkan.mmp", такие вот превратности судьбы.
               
15) Отслеживать, каким способом изменено состояние рычага, ловкостью рук или квестовым предметом, SwitchLeverState(id), предполагавшимися монтировками и отмычками. Результат зависит от способа. Скажем, сундук открывается ключом (который изымается), без ключа тоже открывается и взрывается, либо не открывается и взрывается. Отслеживать попытку использования. Для рычагов уже есть ячейки памяти, и их можно вытащить тем же самым GetLeverState(id, смещение) с дополнительным параметром. Важно, чтобы факт и способ использования менялись строго до изменения собственно GetLeverState(id).
16) AddMobEx(file.mob, SkipScript, StartId) Не 100, а дополнительный параметр, начальный номер id, с которого назначаются id для объектов без id из моб-файла. Это позволит назначать id ровно какие надо, известные. А для многократного перебора тысяч id уже добавленных объектов ещё помогают квантовые компьютеры. По умолчанию тоже не 100, а точно посмотреть, что реально встречается. Примерно от 1.1 млн до 1 млрд диапазон свободен и от 1.1 млрд.
17) В мультиплеере название прототипа голоса хранится отдельно от названия прототипа юнита. Тогда как повторяющиеся прототипы голосов прописаны для каждой ипостаси Кира, и ещё более 200 для всяких юнитов.
SetVoice(GetObjectByID(UnitId), "VoicePrototype") Чтоб действовало на персонажей в сингле и в мульте, так и на всяких юнитов. Ещё вспомнить про звуки "heroes\Hero" в прототипе юнита. Скорость передвижения и что ещё в CopyStats(...). В HG4 повторены женские голоса для мужчин и мужские для женских.
18) Прототипы голосов прописаны в database.res и для сингла и для мульта. В столбце "Bored" дополнительные индексы, заданные, должно быть, в экзешнике, произносить фразу под дождём, в пещерах, ползком. Было несколько модов, где это регулируется. Подобные индексы нужны для столбца "Cast", на себя и друзей кастуется, или урон на врагов, то есть по сути "Attack". Столбец "AttInDef" в первоначальных ПЗ не включён, и даже этих звуков в ресурсах нет. В ЗвА, похоже, включён, но фразы в том же неверном смысле "атака в ответ", тогда как это произносится во время боя с включённым режимом защиты, поэтому "выжидание в бою и атака по указанию".
19) В новом Жамевю на расширенных участках карт, видимо, нет графа проходимости. Тогда как в Фернео-моде графы проходимости обновляются. Мне казалось, что эту функцию уже делали в каких-то редакторах карт. Но суть в том, что построение графа проходимости надо делать именно в редакторе карт, а не в стартёре уже в игре (и где описание соответствующей настройки?), откуда её разве что извлекать тем же самым реверс-инжинирингом.
20) У орков и орчих модели с 4 причёсками. В былые времена их, наверно, можно было посмотреть перепаковкой с переименованием. Или в HG3 оркам и орчихам персонажам проставить причёски -1, 0, 1, 2. Для них там отдельные модели с дополнительными человеческими анимациями. Надо бы поправить орчихам ступни на уровне земли. Но в новом Жамевю на орчих уже как будто надели доспехи.
21) Новые заклинания в SpellAddon и ПЗ:СТ. Идея Торнадо нравится. Эксплозия по описанию похожа на тот же Огненный шар помощнее с ограничениями. Пожелание делать Вулкан, чтоб размер соответствовал эффекту, детонацию попробовать. Игра с Вулканом вышла лишь на месяц позже ПЗ.
22) Подгон библиотек, там не замена dgVoodoo, а обновлённые версии 4 библиотек из папки с игрой, дата 2005 соответствует как раз ЗвА. В новом Жамевю тоже какие-то версии.
23) lua-скрипты вдруг из ниоткуда появились сразу в каких-то модах.
Ответ
(12.03.2026, 00:59)Zyzyx Написал: Уже была версия 0.12.4.2 с Фернео-модом и 0.12.4.1 с новым Жамевю, а перечень чего там как бы и не было.

Что ещё надо:
12) В "Monster Prototypes" столбец "Equipment Weapon №2", альтернативное оружие, могло бы быть жезлы, но как будто не работает. Или в №1 несколько предметов через запятую, но используют только первый. А вот заклинания могут выбрать, если выдать. Надо чтоб стрелковое оружие доставали, когда цель в ближнем бою не достать.
13) Убрать файл AutoRunSpellAddon123.mob, который каждую секунду пишет GetWorldTime() в некую глобальную переменную. Были комментарии, когда почему это делалось. Надо просто сделать просто и успокоиться.
14) CreateParticleSource(id, X, Y, Z, Size, "Type", "TextureName", n1, ... , n16) Дополнительно название текстуры, которая используется заместо чего там у этого типа частиц заложено по умолчанию. У таких текстур структура из 4x4 секторов, поэтому дополнительно 16 чисел от 1 до 16 (либо 0, можно с повторами) в каком порядке какие сектора запускать. Таких текстур с числами можно несколько (всего до 16). Такая вот технология соединения плоских спрайтов и трёхмерных пространств.
Для "Fire" и "Smoke" используются разные части одной текстуры "tendrismoke.mmp", в "CampFire" и то и то вместе.
У "Tornado" Size измеряет клубы песка, какие там крутятся, то есть размеров несколько (Size1, Size2).
Для "VulcanSmoke" отсутствующая в ресурсах текстура называется "vulkan.mmp", такие вот превратности судьбы.
15) Отслеживать, каким способом изменено состояние рычага, ловкостью рук или квестовым предметом, SwitchLeverState(id), предполагавшимися монтировками и отмычками. Результат зависит от способа. Скажем, сундук открывается ключом (который изымается), без ключа тоже открывается и взрывается, либо не открывается и взрывается. Отслеживать попытку использования. Для рычагов уже есть ячейки памяти, и их можно вытащить тем же самым GetLeverState(id, смещение) с дополнительным параметром. Важно, чтобы факт и способ использования менялись строго до изменения собственно GetLeverState(id).
16) AddMobEx(file.mob, SkipScript, StartId) Не 100, а дополнительный параметр, начальный номер id, с которого назначаются id для объектов без id из моб-файла. Это позволит назначать id ровно какие надо, известные. А для многократного перебора тысяч id уже добавленных объектов ещё помогают квантовые компьютеры. По умолчанию тоже не 100, а точно посмотреть, что реально встречается. Примерно от 1.1 млн до 1 млрд диапазон свободен и от 1.1 млрд.
17) В мультиплеере название прототипа голоса хранится отдельно от названия прототипа юнита. Тогда как повторяющиеся прототипы голосов прописаны для каждой ипостаси Кира, и ещё более 200 для всяких юнитов.
SetVoice(GetObjectByID(UnitId), "VoicePrototype") Чтоб действовало на персонажей в сингле и в мульте, так и на всяких юнитов. Ещё вспомнить про звуки "heroes\Hero" в прототипе юнита. Скорость передвижения и что ещё в CopyStats(...). В HG4 повторены женские голоса для мужчин и мужские для женских.
18) Прототипы голосов прописаны в database.res и для сингла и для мульта. В столбце "Bored" дополнительные индексы, заданные, должно быть, в экзешнике, произносить фразу под дождём, в пещерах, ползком. Было несколько модов, где это регулируется. Подобные индексы нужны для столбца "Cast", на себя и друзей кастуется, или урон на врагов, то есть по сути "Attack". Столбец "AttInDef" в первоначальных ПЗ не включён, и даже этих звуков в ресурсах нет. В ЗвА, похоже, включён, но фразы в том же неверном смысле "атака в ответ", тогда как это произносится во время боя с включённым режимом защиты, поэтому "выжидание в бою и атака по указанию".
19) В новом Жамевю на расширенных участках карт, видимо, нет графа проходимости. Тогда как в Фернео-моде графы проходимости обновляются. Мне казалось, что эту функцию уже делали в каких-то редакторах карт. Но суть в том, что построение графа проходимости надо делать именно в редакторе карт, а не в стартёре уже в игре (и где описание соответствующей настройки?), откуда её разве что извлекать тем же самым реверс-инжинирингом.
20) У орков и орчих модели с 4 причёсками. В былые времена их, наверно, можно было посмотреть перепаковкой с переименованием. Или в HG3 оркам и орчихам персонажам проставить причёски -1, 0, 1, 2. Для них там отдельные модели с дополнительными человеческими анимациями. Надо бы поправить орчихам ступни на уровне земли. Но в новом Жамевю на орчих уже как будто надели доспехи.
21) Новые заклинания в SpellAddon и ПЗ:СТ. Идея Торнадо нравится. Эксплозия по описанию похожа на тот же Огненный шар помощнее с ограничениями. Пожелание делать Вулкан, чтоб размер соответствовал эффекту, детонацию попробовать. Игра с Вулканом вышла лишь на месяц позже ПЗ.
22) Подгон библиотек, там не замена dgVoodoo, а обновлённые версии 4 библиотек из папки с игрой, дата 2005 соответствует как раз ЗвА. В новом Жамевю тоже какие-то версии.
23) lua-скрипты вдруг из ниоткуда появились сразу в каких-то модах.

3) Этот файл подгружается только если включена соответствующая настройка, в чём вообще смысл просить убрать его у тех, кто не имеет к нему никакого отношения? И он не пишет ничего каждую секунду в глобальную переменную. На этом форуме нет авторов СпеллАддона
19) Там есть граф проходимости. Видимо - это где оно "видимо"? И зачем кидать ссылку на совершенно другие карты, которые отличаются от карт в Жамевю, в которых тоже есть граф проходимости?
21) А сам СпеллАддон взять и настроить там под себя заклы не судьба? В AutoRunMobFile123.mob как раз настройки заклов. Функции все в инструкции расписаны были.

А еще, вот програмка для генерации асков от Плейхардыча


Файлы вложений
.gz   AcksMake.exe.gz (Размер: 8.12 KB / Загрузок: 34)
Ответ
Star 
13) В той версии AutoRunSpellAddon123.mob, которая с новым Жамевю, и правда нет никакого GetWorldTime(), что к лучшему. Не помню, при каких обстоятельствах мне такое показалось, может когда этот файл там впервые появился, а может и никогда нигде такого не было. Смысл в том, что авторы СпеллАддона это прочитают и примут к сведению. Главное, надо делать Вулкан. А меня тоже нет нигде, если что.
В этом файле из Жамевю много про некромантию.
Script Spell#1g
(
  if
  (
    IsDead( this )
  )
  then
  (
    KillScript(  )
    RemoveUnitFromServer( this )
    CreateParticleSource( unitID, GetX( this ), GetY( this ), GetZValue( GetX( this ), GetY( this ) ), 1.5, "Mushroom" )
  )
)

Есть подозрение, что рисует по координатам отсутствующего объекта 0,0,GetZValue(0,0).
VSS#i#val плохое слово. NULL тоже излишне.
А что такое kaTurbo?
19) "Видимо", это в каком-то репортаже по Жамевю кого-то из уже многих блогеров. В начале в Развалинах полез далеко к верху (к северу) от Посёлка на расширенные участки, где лазил по холмам. Поиск пути, зелёная линия, прокладывался только на близком расстоянии от персонажа. А на дальнем расстоянии показывалось как будто туда не пройти, хотя на самом деле можно пройти постепенно приближаясь. Такое бывает без графа проходимости. То есть, граф проходимости как таковой может быть, но не распространяется на какие-то участки.
Ещё ВГГ где-то изучала этот граф проходимости, и тогда средств построения у неё не было.
21) Фактически на данный момент не судьба настраивать под себя, только в каких-то модах, где уже настроено. Кстати, в addon.dll в config/ai.reg с настройкой UnlockExperimentalSpell=1 не замечено, что включается.
Ответ
(12.03.2026, 19:52)Zyzyx Написал: 13) В той версии AutoRunSpellAddon123.mob, которая с новым Жамевю, и правда нет никакого GetWorldTime(), что к лучшему. Не помню, при каких обстоятельствах мне такое показалось, может когда этот файл там впервые появился, а может и никогда нигде такого не было. Смысл в том, что авторы СпеллАддона это прочитают и примут к сведению. Главное, надо делать Вулкан. А меня тоже нет нигде, если что.
В этом файле из Жамевю много про некромантию.
Script Spell#1g
(
  if
  (
    IsDead( this )
  )
  then
  (
    KillScript(  )
    RemoveUnitFromServer( this )
    CreateParticleSource( unitID, GetX( this ), GetY( this ), GetZValue( GetX( this ), GetY( this ) ), 1.5, "Mushroom" )
  )
)

Есть подозрение, что рисует по координатам отсутствующего объекта 0,0,GetZValue(0,0).
VSS#i#val плохое слово. NULL тоже излишне.
А что такое kaTurbo?
19) "Видимо", это в каком-то репортаже по Жамевю кого-то из уже многих блогеров. В начале в Развалинах полез далеко к верху (к северу) от Посёлка на расширенные участки, где лазил по холмам. Поиск пути, зелёная линия, прокладывался только на близком расстоянии от персонажа. А на дальнем расстоянии показывалось как будто туда не пройти, хотя на самом деле можно пройти постепенно приближаясь. Такое бывает без графа проходимости. То есть, граф проходимости как таковой может быть, но не распространяется на какие-то участки.
Ещё ВГГ где-то изучала этот граф проходимости, и тогда средств построения у неё не было.
21) Фактически на данный момент не судьба настраивать под себя, только в каких-то модах, где уже настроено. Кстати, в addon.dll в config/ai.reg с настройкой UnlockExperimentalSpell=1 не замечено, что включается.

13) Этот скрипт не вызывается. Мало быть написанным - надо быть вызванным. Ничего лишнего не вызывается, ВГГшка величайшая скриптерша ПЗ

19) Миллиарды раз говорилось уже что граф проходимости не влияет на проходимость. Можешь хоть всё поставить как непроходимое - и ходить сможешь. И наоборот тоже работает. https://habr.com/ru/articles/769050/ - статья. Там она код редактора графа прям даёт, какое "не было", пхпх?

21) Ну так система в СпеллАддоне уже есть, зачем заказывать инактивным разрабам Аддона то что уже сделано?
Ответ
Star 
19) По идее, граф проходимости полностью строится по карте высот, с дополнительным указанием, где там деревья, вода, двери, возможность проползти... В мемуарах сценариста ПЗ Свиридова затрагивается вода. ВГГ определённо большая молодец. Я вот себе в заслуги могу только указать, что меня нигде нет. Где там в её статье про карты высот. Прямо не сказано, но есть картинки, похожие на карты перепадов высот рельефа без учёта объектов. Код рисует картинки по готовому графу проходимости, визуализирует, и обратно.
21) Есть подозрение, что разрабы Аддона.длл только здесь на своём форуме инактивны, а где то ещё (ТГ, Дискорд) экспериментальные версии клепают.
Ответ
(12.03.2026, 23:06)Zyzyx Написал: 19) По идее, граф проходимости полностью строится по карте высот, с дополнительным указанием, где там деревья, вода, двери, возможность проползти... В мемуарах сценариста ПЗ Свиридова затрагивается вода. ВГГ определённо большая молодец. Я вот себе в заслуги могу только указать, что меня нигде нет. Где там в её статье про карты высот. Прямо не сказано, но есть картинки, похожие на карты перепадов высот рельефа без учёта объектов. Код рисует картинки по готовому графу проходимости, визуализирует, и обратно.
21) Есть подозрение, что разрабы Аддона.длл только здесь на своём форуме инактивны, а где то ещё (ТГ, Дискорд) экспериментальные версии клепают.

В этой статье https://habr.com/ru/articles/769050/ объясняется вся работа графа проходимости на практике и показывается что перс может ходить по поверхности, помеченной как непроходимая. Карт высот там нет. Там же в статье прямо код написан для проги переводящей граф в картинку и картинки вроде этой там и показаны ВГГшенькой
Ответ
Star 
Нашлось чудесное обсуждение про построение графа проходимости с ЕИ_Плагином, заходить на карту с включённой настройкой GraphGen=1, сгенерированный граф сохраняется в моб-файл карты, после чего настройку отключать. Для брифинговых зон не известно, временно делать их игровыми.
По идее, "быстрый" алгоритм, который используется в экзешнике игры, только тогда быстрый, когда просчитывает отдельные фрагменты карты, где что-то переместилось или повернулось. А в целом должен выдавать тот же граф, что и оригинальный редактор.

Пришлось проверить карту Развалины из Жамевю. Место на возвышенности ровно к северу от Посёлка. В текущей версии карты не замечено недостатков с графом проходимости, и, наверно, их там и не было, а проблемы с проходимостью объясняются сложностью рельефа. В другом варианте расширенных карт от ПХГП на эту возвышенность и вовсе не залезть.

Надо думать, и в Фернео-моде, и в Жамевю, и от ПХГП для графов проходимости применён ЕИ_Плагин, нежели чем какая-то альтернативная собственная разработка ВГГ. В её статье, на этом пути можно дойти и до готового алгоритма, но его там ещё не было.
Ответ
(16.03.2026, 00:27)Zyzyx Написал: Нашлось чудесное обсуждение про построение графа проходимости с ЕИ_Плагином, заходить на карту с включённой настройкой GraphGen=1, сгенерированный граф сохраняется в моб-файл карты, после чего настройку отключать. Для брифинговых зон не известно, временно делать их игровыми.
По идее, "быстрый" алгоритм, который используется в экзешнике игры, только тогда быстрый, когда просчитывает отдельные фрагменты карты, где что-то переместилось или повернулось. А в целом должен выдавать тот же граф, что и оригинальный редактор.

Пришлось проверить карту Развалины из Жамевю. Место на возвышенности ровно к северу от Посёлка. В текущей версии карты не замечено недостатков с графом проходимости, и, наверно, их там и не было, а проблемы с проходимостью объясняются сложностью рельефа. В другом варианте расширенных карт от ПХГП на эту возвышенность и вовсе не залезть.

Надо думать, и в Фернео-моде, и в Жамевю, и от ПХГП для графов проходимости применён ЕИ_Плагин, нежели чем какая-то альтернативная собственная разработка ВГГ. В её статье, на этом пути можно дойти и до готового алгоритма, но его там ещё не было.

Ты в целом всё понял правильно.  В Фернео не знаю, наверное, а в Жамевю точно ПХ_ГП не один раз генерил граф с этой утилитой. Для ПЗ СТ же граф генерился ВГГшкой - можно сказать уверенно что генерация графа это заложенная в движок ПЗ штука (например, когда ты открываешь ворота, то граф в этом месте пересчитывается "сплешем"), и если накинуть на всю карту ворота, можно из памяти граф взять
Ответ
Star 
   
5) Дракон пуляет обычную синеватую молнию по Проклятию, и Проклятие пуляет свою рыжеватую молнию по Дракону. И то, и то рисуется откуда надо, но не в куда надо, а очень ниже высоты полета цели. Это с аддоном.длл 0.12.4.2, где доделаны rick_magic и curse_magic, чтоб по альт+цифра летели куда надо, а не на себя. И со СпеллАддоном версии из нового Жамевю, где, и без соответствующих настроек это надо исправлять.
24) В инфо-окне у дальности Зрения определенно не хватает одного (или двух) знаков после запятой, как у Брони даже без настройки ImproveInfoWindows=1 в ai.reg. В оригинале у всяких монстров зрение пишут 8 м, а на самом деле оно 8.5 м, и это чрезвычайно важно для понимания происходящего (если вдруг оно надо).
25) Атака и Защита тоже на самом деле не целые числа, но, наверно, лучше так и оставить, либо опционально.
26) Урон у дракона на картинке на самом деле в несколько раз выше, чем там указано, и это известная проблема, что слишком высокий урон как-то не так передается в инфо-окне, не знаю точно как.
27) Для показателя действий тоже надо хотя бы один знак после запятой, это не целое число, и у дракона на картинке тоже на самом деле немного выше. Это такой Дракон-Повелитель из оригинального мультиплеера. А что там рядом в скобках % добавили, так это не ровно по показателю действий, а сначала его округлили до целого, и от этого уже посчитали /15 и *100%. Опционально в скобках можно в другом формате, скажем, не (1267%), а (в 12.67 раз), (x 12.67).
Ответ
Star 
28) Заклинание Слабоумие feeblemind багнутое. Не только в том, что запрет колдовать срабатывает только на персонажей, и не срабатывает на прочих юнитов. Звук не исчезает с убитых, и может даже с подобранных/удаленных юнитов. При наложении возле головы цели появляются отлетающие пузырьки и соответствующий звук журчания. Если заклинание благополучно провисело всю свою продолжительность и завершилось на живом юните, то звук исчезает вместе с заклинанием. Но если юнита с этим заклинанием убить, и может даже подобрать/удалить, то звук остается, обнаруживается в каком-то месте и на других картах, и в главном меню.
В Спелладдоне не замечено, чтоб включалось это заклинание на всех юнитов, но это возможно, либо даже совсем убрать этот эффект для всех.
29) Звук заклинания Регенерация появляется только при наложении 2 такта. Можно было бы запускать звук всякий раз, когда здоровье не полное и на самом деле восстанавливается, и когда этого звука еще не запущено. Аналогично Ускорение и что-нибудь еще.
30) Когда один раз ткнуть на иконку заклинания, или один раз нажать соответствующую кнопку с цифрой, то есть выбрать заклинание, далее предлагается выбрать цель. В этом состоянии срабатывает только либо ткнуть на цель, либо ткнуть еще раз на заклинание и отменить выбор, либо на другое заклинание. Надо чтобы выбор заклинания отменялся, если ткнуть куда угодно еще вместо выбора цели.
31) Больше заклинаний экипировать для использования, больше 8. Возможность (в Спелладдоне) захода в Лагерь везде несколько снижает недостаток слотов под заклинания.
Ответ
26) В Жамевю инфоокно грамотно переписано
28) Срабатывает только на тех у кого тип ведения сражения изначально руки (в которые можно давать оружие, например), а не на персонажей. В Жамевю и ПЗ СТ фича уже сделанная Нивалом была грамотно использована
30) Не надо, различать ещё и сплешовые с несплешовыми заклами мутная тема, лень чтоль нажать на 1 клавишу?
Ответ
Star 
26) В Жамевю для дальности зрения еще указывается в скобках, сколько это %. Может объясняться спецификой мода и вкусом авторов. Не знаю точно, как это воспроизвести, в аддоне.длл добавлено несколько настроек специально для Жамевю, а в Спелладдоне есть "заготовка" под улучшенное инфо-окно, атака и защита в одну строчку и еще слух.
28) Суть в том, что звук от заклинания не отключается при смерти юнита, на которого наложено это заклинание, и это очень осложняет какое-бы то ни было его использование. Если в момент смерти юнит удаляется, звук остается, похоже, во всех случаях. Если не удаляется, а остается лежать труп, который лутается, подбирается через некоторое время, то иногда журчащий звук Слабоумия все таки пропадает, но иногда и не пропадает, достаточно часто, чтобы это было заметно. Предположительно, для других заклинаний тоже так, только, скажем, звук Регенерации сам по себе не бесконечный и прекращается.
30) Да, придется различать заклинания по площади и не по площади. Отмена выбора заклинания происходит кнопкой Esc, а вот по правой кнопке мыши запускается вращение камерой. Это "надо" возникает из практики игры, когда много раз вдруг оказалось, что этого нет. Скажем, заклинание выбрано, а запаса сил на него не хватает, и тогда надо паузу и перемещать персонажа.
Ответ
Star 
13) Надо сказать, что AutoRunSpellAddon123.mob со Спелладдоном грузится всегда, даже когда это отключить настройкой autorunmobfile=0.
Там ещё рядом в настройках extendedmerc=1, чтоб менять максимальное число наёмников, выглядит странно, потому что это управляется скриптами в моб-файлах без вмешательства в экзешник, там какие-то глобальные переменные. Собственно ограничение на число наемников устанавливается скриптами, и достаточно убрать эти скрипты, чтоб брать сразу всех фактически доступных наемников.
Ещё disableexppenalty=1, чтоб без пенальти по экспе в сетевой игре. Настройка для потери опыта и денег есть в Config/ai.reg, причем это оригинальная нивальская настройка, если это важно.
13) Это было специально для Минор-мода, где Спелладдон версии 8.5, и AutoRunSpellAddon123.mob каждую секунду пишет GetWorldTime() в глобальную переменную lua_time. Чтобы через луа-скрипты добавлять к атаке бонус от ночного зрения именно ночью. Тогда как снижение атаки и защиты ночью тоже включается в последующих версиях Спелладдона. В Классик-моде такие бонусы оформлены проще.
Если не непосредственно время, могло бы помочь знание у юнита фактического радиуса зрения, того самого, который в инфо-окне. Если отличается от полного, значит время для ночного зрения (если оно вообще включается).
32) Динамическое изменение заметности юнита в зависимости от общей освещенности точки с его координатами на карте. Как альтернатива механике ночного зрения этого вашего гениального Нивала, которая в оригинальной сетевой игре даже не задействована. Или как дополнение к оригинальным механикам.
В луа-скриптах (или как угодно) пересчитывать заметность через значение освещенности по координатам юнита.
Ответ
Star 
33) Чтобы начать использовать луа-скрипты (в стартере с аддоном.длл), надо из какого-нибудь (Классик-)мода любого с этими скриптами скопировать всю папку lua к себе в мод, оттуда файл default.lua скопировать в основную папку своего мода и переименовать в main.lua, EnableLuaScripts=1 в Config/ai.reg.

В этом дефолтном файле остается ошибка с регенерацией здоровья, которая так или иначе исправляется в конкретных модах (см. Минор-мод).
В main.lua в функции RegenerateHp строки
    hp.regen = hp.regen + hp.regen * unit_stats:perkModifier(PerkType.Vitality) * 0.01
        hp.regen = hp.regen * regen_spell
    unit_stats:heal(common_server_stats_addr, hp.max * hp.regen)
исправить на
    local hp_regen = hp.regen + hp.regen * unit_stats:perkModifier(PerkType.Vitality) * 0.01
        hp_regen = hp_regen * regen_spell
    unit_stats:heal(common_server_stats_addr, hp.max * hp_regen)

Опыт для взятия навыка уровня level с нуля GetSkillPrice(level) почему-то там
    return 46 * 1.61 ^ (level / 5)
Тогда как если
    return 50 * 1.61 ^ (level / 5)
То при прокачке навыка с 0 до 100 затраты опыта отличаются от оригинала только на 1, это с той округляющей функцией GetSkillPriceDiff(from, to), какая там предложена
    return math.floor(GetSkillPrice(to) - GetSkillPrice(from))

Из непонятного, мне не понятно, зачем понадобилось создавать массив с эффектами заклинаний, наложенных на юнита.
    local spell_effect_mods = Array(spell_effect_mods_addr, Memory.Type.Float, 40, true)
Тогда как эффекты заклинаний вполне себе берутся и без этого массива из
    local unit              = UnitServer(unit_addr)
    local regen_spell = unit : spellEffect(SpellType.Regeneration)
И зачем и откуда этот массив передается в аргументы функций CalcAttackParamsOnServer и CalcAttackParamsOnClient, где без этого массива тоже можно обойтись.

В Жамевю традиция использования этого массива продолжена, размерность увеличена с 40 до 53.

Ещё в Жамевю появилось (и включаются в настройках) несколько новых функций с дополнительными аргументами вроде unitname (прототип юнита), в безопасности, сколько выбрано штук оружия. Предположительно, достаточно было определить адреса в памяти всех этих новых аргументов, как уже было для прежних всяких значений. И использовать прежние основные функции RecalcUnitStats и прочие, которые только повод, чтобы что угодно посчитать и поменять.

Надо отметить, что с нынешними луа-скриптами больше не предусмотрено распределение получаемого опыта между персонажами как в оригинальной сетевой игре в зависимости от относительного общего набранного опыта персонажей, а только в зависимости от числа персонажей.
Ответ
Star 
34) Механику прицеливания в отдельные части тела, как и всю механику меткости, по-хорошему, можно было бы переделать напрочь. Скажем, как вариант, прицеливание в выбранную часть тела уже не отменяет совсем возможность попадания в остальные части, а увеличивает относительную вероятность попасть, куда выбрано, замедляя общую скорость ударов. Или, тоже по-хорошему, придерживаться оригинальной механики меткости.

Меткость = Вероятность попасть = (Атака - Сдвиг - Защита + nawToHitRandom - Штраф) / ( 2 * nawToHitRandom )

В этой формуле Сдвиг=1, потому что по реализации гениального Нивала Атака должна на 1 превышать Защиту цели, чтобы Вероятность попасть была равна Вероятности не попасть и равна 1/2. Имеет смысл это переделать, чтоб Сдвиг=0.
nawToHitRandom так названо в луа-скриптах, а в таблице MonsterPrototypes называется "Tuning To hit Random", в оригинале 40.
Штраф от прицеливания в голову 25.
Штраф от прицеливания в руки и ноги 10.
Штраф от прицеливания в туловище и без прицеливания 0.

Без прицеливания шансы попасть в голову 10%, когда вообще сработали шансы попасть, в голову урон х3.
Меткость прицеливания в голову должна превышать Меткость без прицеливания не менее чем в 0.4 раза при уроне в голову х3 (и не менее чем в 0.55 раз при уроне х2 в каких-то модах).
Тогда получается, что бить прицельно в голову выгодно при превышении Атаки над Защитой цели уже от 3 и выше, включать соответствующую настройку в ЕИ_Плагине.
Если бы так делали монстры, они бы победили.
У магов некоторый аналог такой возможности это заклинания урона по площади на несколько целей.
Зато у монстров тоже бывают параметры, которые не доступны персонажам.

Поэтому меняем механику штрафов от прицеливания в голову и прочие части тела.
Если есть шанс попасть в голову без прицеливания, то с прицеливанием и подавно должен быть шанс попасть.

Штраф = Const1 - Const2 * (Атака - Сдвиг - Защита)

При самом малом шансе попасть этот штраф тоже должен быть почти 0, поэтому получается
Const2 = Const1 / nawToHitRandom

Const1=24 и Const2=0.6 всегда равноэффективно прицельно в голову и неприцельно для урона в голову х3.
Const1=18 и Const2=0.45 всегда равноэффективно прицельно в голову и неприцельно для урона в голову х2.

Штраф = 23.6 - 0.59 * ( Атака - Защита) = 23.6 - 0.59 * Сдвиг - 0.59 * ( Атака - Сдвиг - Защита)
Становится немного более эффективно бить прицельно в голову при превышении Атаки над Защитой более 20.
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)