(26.06.2020 02:22)daemon_n Wrote: [ -> ]Как узнать позицию текущего отряда на поле боя?
1. Dword combatManager.Структура_атакующего
2. Dword Структура_стека.Позиция
На ERM:
1. !!BG:N
2. !!BM:P
Algor, тянуть не нужно. Обновляются библиотеки централизованно. Каждый баг вручную во всех модах править — извольте. Так точно никто и нигде не делает.
(25.06.2020 23:48)Algor Wrote: [ -> ]Я НЕ рассматриваю библиотеку как мод, который, как когда-то "базовый WoG", надо использовать целиком.
Если тебе/твоему моду нужны 2 события и 4 функции, ты скопируешь себе 6 файлов и будешь счастлив.
Тянуть себе в зависимости полный набор все-в-одном гораздо более хреновый вариант, с какой стороны не посмотри.
Вот тут я категорически не согласен. Я вижу правильным: библиотека как одно целое, а не тонна мелких файлов.
Я вживую не видел ни одного примера, чтобы библиотека распрастранялась деталями. Только целиком. По этому пути я и буду идти.
igrik Wrote:
а как получить в z1 имя озвучки указанного существа?
поменять местами источник и получатель?
!!SN:K4/y3/?z1/1;

Monstre => Monster
Bes, это функция установки, не получения. Для получения изменить её нужно.
(26.06.2020 10:12)igrik Wrote: [ -> ]Я вживую не видел ни одного примера, чтобы библиотека распрастранялась деталями. Только целиком.
И это самая большая болезнь современного программирования - тонна неиспользуемого кода в любом, по сути, крошечном проекте

Да, это упрощает сопровождение библиотеки и ускоряет разработку - для разработчиков сплошные плюсы. Сплошные минусы падают на пользователя который вынужден терпеть тормоза, тратить время, нервы и деньги на электроэнергию и новое железо.
Печальная правда жизни. Но если для коммерческих проектов это оправдано - их задача делать деньги, то для фанатского - нет.
Вон, в соседней теме как-то не очень была воспринята привязка к 4му дотнету...
(26.06.2020 15:50)Algor Wrote: [ -> ]И это самая большая болезнь современного программирования - тонна неиспользуемого кода в любом, по сути, крошечном проекте 
Да, это упрощает сопровождение библиотеки и ускоряет разработку - для разработчиков сплошные плюсы. Сплошные минусы падают на пользователя который вынужден терпеть тормоза, тратить время, нервы и деньги на электроэнергию и новое железо.
Полностью согласен. Когда есть исходники, то лучше включать в программу только отдельные необходимые функции, а не валить весь код в одну кучу (которую потом хрен разгребёшь, особенно когда код слабо комментирован или не комментирован вообще). А в ERM с её лимитом на память это ещё сильнее влияет на разработку мода. А искусством сжатия кода обладают не многие (к примеру, код от SoD у меня сжимается примерно на 5-20%, а код WoG - в 1,5-10 раз

, вот что значит хорошая/плохая сборка кода

).
А что далеко ходить - 10 лет назад работал с данными на PS2/PSP, там оперативная память - больная мозоль, проклинаемая многими разработчиками (ради удешевления консолей инженеры идут на всё), в итоге - жесткая экономия каждого байта, различные извращенные оптимизации/методы кодирования/архивирования и прочие консольные приблуды, целиком завязанные на железе и конструктивных пороках консолей, по сравнению с чем разработка на ПК, особенно в высокоуровневых средах, где работа программиста максимально упрощена (но это не повод расслабляться, об оптимизации тоже думать надо), - раздолье и свобода.
Но оборотная сторона медали - время. Когда работаешь не от души, а за деньги, то обычно наплевать: лишь бы работало и отстаньте от меня. Во времена, когда ИИ обучится писать софт, количество монстрософта вырастет в разы и настанет время сервисов (когда штатные компы уже не будут тянуть "современные" программы

).
Algor, ты пробовал копаться в тысячах файлах, рефакторить их, писать функции с зависимостью от 5-и других функций и т.д.? Модули придумали как раз оттого, что сотни констант, функций и структур данных взаимосвязаны. Дробить их на полностью автономные части нет никаких возможностей. Есть определённый предел разумного разделения.
И очень проблемно, когда какой-то мод содержит древнюю версию одной скопированной функции, которая перекрывает версию из основного мода.
XEPOMAHT, спасибо - странно, что я сам не нашел.
Кстати, есть ли возможность отпраить существо его ножками (крылышками), а не телепортом?
(26.06.2020 19:16)daemon_n Wrote: [ -> ]Кстати, есть ли возможность отпраить существо его ножками (крылышками), а не телепортом?
Вызов функции Battle_Stack_MoveToPosition или переходника на неё:
// монстр идет в позицию
//esi -> CombatManager
//ebx -> Monster Structure
mov ecx,[esi+44]
push 00000001
push ecx
mov ecx,ebx
call H3WOG.00445A30
Или можно отредактировать BR:P, убрав мгновенное перемещение монстра (т.к. телепорт в координаты сделан костылями).
(26.06.2020 17:30)Berserker Wrote: [ -> ]Algor, ты пробовал копаться в тысячах файлах, рефакторить их, писать функции с зависимостью от 5-и других функций и т.д.?
Berserker, а что не в миллиардах и с тысячными зависимостями? Утрировать, так утрировать.
У нас тут, напоминаю всем кто забыл/не следил, несколько новых событий. Событий, Карл! Какой к хренам рефакторинг и множественные зависимости?
Я еще не смотрел, как сделал
igrik, но, подозреваю, все также: один адрес - один хук, + минимальная стандартная обвязка.
Что там рефакторить? Сложил в один маленький файл Event_xxx и всё - пользуйся до скончания века или пока не поменяется адресация в связи с какими-нить глобальными изменениями платформы.
Один файл с
одним неделимым и нерасширяемым функционалом.
Это не постоянно растущая библиотека все-в-одном-листать-устанешь, которая куда вероятнее окажется в нескольких модах одной сборки в различных ипостасях-версиях и породит неработоспособность.
Algor, затем этот один файл изменён, изменён адрес хука, исправлена ошибка, добавлено два параметра. А в твоём моде старая версия. Обновлять во всех модах? Серьёзно? Никто даже не будет сравнивать файлы. Смысл разбиения на файлы? В редакторе в разы удобнее навигацией пользоваться, массовое редактирование использовать, автодополнение.
Quote:которая куда вероятнее окажется в нескольких модах одной сборки в различных ипостасях-версиях и породит неработоспособность.
Библиотека должна быть отдельной зависимостью. Если кому-то нужно выдрать кусок в свою уникальную мод-карту, то почему не сделать CTRL + R, не найти функцию за секунду и не скопировать?
По созданию событий я планирую создать новый скрипт 80 wog - base functions.erm и убрать данный функционал из 78 wog. Но разделять каждое событие на отдельные файлы я не буду. Я не считаю это правильным. Если кто-то захочет использовать одну единственную функцию - пусть вытаскивает ее из файла и использует в своём моде со своим уникальным названием функции. Я вижу это так, и буду делать так.
А мод Wog Scripts уже на данный момент сам по себе уникальная библиотека
igrik, логичнее уж назвать 80 ERA - base functions.erm.

daemon_n, нет, wog префикс лучше для мода со скриптами WoG.