Wake of Gods Forum | Форум Во Имя Богов

Full Version: Плагины. Обсуждение
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
(13.06.2021 12:02)Archer30 Wrote: [ -> ]Hi igrik! A request from a mod maker for WoG Native Dialogs.

Is it possible to improve the behaviour of experience ability dialogue?

When try to disable the 6th ability of Archer

Without WND:
Image: sqwI46C.png

With WND:
Image: e8QmTOQ.png

Code:
ZVSE2
!#EA(MON_ARCHER):B6/0//////////////;

Difference:
1. When there is a vacancy in the experience ability list, the game without WND will display the rest of the abilities. However, with WND, the rest of the abilities would be hidden. Reduce Def. is hidden in this case.
2. Moving the cursor in the vacancy (red square) result in a crash with WND, while there is no crash without WND.

Currently, it is required to rearrange all the slots when disabling abilities, which requires much more script. Rolleyes

Could you help with this?

Fixed! 115

Image: Screenshot-1.png
igrik, 177 спасибо
igrik, can't thank you enough for this 71
Вот, для сравнения, с учётом последних обновлений плагина WND
картинка из WoG/TE (Click to View)
та же, но из ERA3 (Click to View)
XEPOMAHT Привет подскажи плагин Увеличение лимита первичных навыков с 99 до 249 в SoD, HotA как установить
(14.11.2021 10:05)komrad.kazackoff Wrote: [ -> ]Увеличение лимита первичных навыков с 99 до 249 в SoD, HotA как установить

Просто копируешь в папку с игрой (версия игры должна быть обязательно 3.2, если поставишь на какой-нибудь Комплит, работать не будет): https://vk.com/doc-118013293_620137228
XEPOMAHT Спасибо, но у меня к сожелению Комплит.
Привет, у меня возникла идейка, но я не знаю, каким образом ее можно реализовать. Можете подсказать пожалуйста?


Я хочу написать отключалку патчей НD-мода, но не знаю, как отключить патч 148 Сначала я думал, что метод UndoAllAt на это способен, но оказалось, что он работает только с текущим экземпляром PatcherInstance.
(11.12.2021 11:29)Raistlin Wrote: [ -> ]Я хочу написать отключалку патчей НD-мода, но не знаю, как отключить патч 148 Сначала я думал, что метод UndoAllAt на это способен, но оказалось, что он работает только с текущим экземпляром PatcherInstance.

Там только на низком уровне можно (в Тифоне я просто восстанавливаю затёртый патчером код игры там где нужно в рамках ERA+ обычным бинарным патчем как для HD-мода, так и для era.dll), но за подобное надругательство над патчером ни Бараторч, ни Берсеркер не скажут спасибо. На высоком затирать перехваты патчера - вряд ли можно, т.к. хитрый патчер всегда ответит кукишем на подобные вандальные действия. Поэтому я не хочу использовать патчер, т.к. он ограничивает свободу в кодинге игры.

Единственное, что можно сделать на патчере - создание обходного пути в коде игры (в Тифоне так же это практикуется, когда нужен независимый от патчера код, обезопасенный от пользовательских хуков и патчей).
Raistlin,

Code:
    ///////////////////////////////////////////////////
    // Метод GetInstance
    // Возвращает экземпляр TPatcherInstance
    // с именем owner.
    // в качестве аргумента можно передавать имя модуля.
    // метод возвращает nil в случае, если
    // экземпляр с именем owner не существует (не был создан)
    // Используется для :
    // - проверки активен ли некоторый мод, использующий patcher_x86.dll
    // - получения доступа ко всем патчам и хукам
    //    некоторого мода, использующего patcher_x86.dll
       function GetInstance(owner_name: PAnsiChar): TPatcherInstance; virtual; stdcall; abstract;
Спасибо большое! У меня все получилось - как оказалось, все-таки существует глобальное затирание, но я просто не знал, как его использовать: надо было обращаться к объекту класса GlobalPatcher, а не PatcherInstance. Когда я сделал это, чтобы воспользовать функцией GetInstance, я увидел глобально работающую функцию UndoAllAt.
(20.01.2022 09:35)igrik Wrote: [ -> ]
(20.01.2022 07:18)XEPOMAHT Wrote: [ -> ]Ага, при этом получится та же история, что и с game bug fixes от igrik/Ben/RK - несовместимость с ERA+.
Дай мне список того, что конфликтует в плагине с ERA+, я запилю совместимость.

1. Конфликт с ненавистью монстров - Тифон подменяет адрес кейса на монстров, а game bug fixes extended ставит хук, полностью игнорируя содовскую адресацию кейса, в итоге, ненависти из Тифона не будут работать. Ну это я могу исправить сам в Тифоне, уничтожив соотвествующий хук game bug fixes extended, но для совместимости со старыми версиями Тифона лучше было бы, чтобы хук отменялся в самом game bug fixes extended.

2. Так делать не надо:

Code:
if ( heroID < 0 && heroID > 155 )
        return 0; // выход, если номер героя неправильный

Если номер героя неправильный, игра вылетит намного раньше.

3. Запреты заклов уже исправлены в Тифоне, там же их количество увеличено до 95. Поэтому функции, адресующиеся к o_GameMgr->disabled_spells всегда будут попадать в молоко, т.к. эти таблицы в ERA+ перемещены в память Тифона бинарным патчем, а сам UN:J Тифон вовсе выключает, т.е. функции Игрика Y_ArtGive_Spell, Y_ArtGive_LoadSpells и Y_ArtGive_AllSpells могут приводить к ошибкам в игре. Ну а если кто-то попытается адаптировать плагин Алекса под Эру на новые заклы... там совместимость вообще нулевая.

4. Исходник RK primary skill overflow.cpp должен быть выключен целиком, т.к. он конфликтует и с Тифоном, и с Примой, входящей в сборки Демона.
XEPOMAHT, хорошо. Сегодня вечером сделаю:
1. Сделаю проверку на Тифон, если Тифон включен - данный хук НЕ будет устанавливаться вообще.
2. Это то понятно. Просто я давно не лез в этот участок кода. Сделаю проверку на максимальный номер героя
3. Сделаю проверку на Тифон, если Тифон включен - данный хук НЕ будет устанавливаться вообще.
4. Этого кода никогда не было в плагине: исходник лежит чисто для информации, но код не используется и никогда не использовался.
(20.01.2022 12:01)Raistlin Wrote:я выкладывал плагин, позволяющий убирать хуки, поставленные патчером, с помощью патчера - может быть, попробуешь добавить его в ERA+? Несовместимостей с ним быть не может, а для использования достаточно просто записать адреса в конфиге, и хуки будут убраны.

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

Тифон умеет убирать чужие хуки с помощью обычного бинарного патча или непосредственной подмены хука патчера хуком WERD, т.к. Мастер, скорее всего намеренно, запитал в Тифон установку хуков позднее патчера, чтобы получить больше свободы для манипуляции с игрой. Конечно, сам патчер будет думать, что хук там якобы есть, и в лог запишет эти несуществующие хуки, но просто отмена хука мне не требуется - часто нужен именно оригинальный содовский код, без влияния патчера, который... всё равно ставит хук, независимо от того, отменён он или нет (при отмене хука, патчер выполнит затёртый код и вернётся обратно, но физически при этом хук никуда не денется).

(20.01.2022 12:04)igrik Wrote: [ -> ]Сделаю проверку на Тифон, если Тифон включен - данный хук НЕ будет устанавливаться вообще.

Ок, буду ждать результата. Надеюсь, проверка будет не по имени dll (т.к. Берсеркер в своём релизе Тифона переименовывал dll, если скляроз не изменяет).
XEPOMAHT, помимо самого плагина есть конфиг, где нужно в первой строчке указать количество убираемых патчей и хуков, а затем просто перечислить все адреса, откуда нужно что-то убрать. Единственное, писать адреса надо в десятичной, а не шестнадцатиричной системе счисления.
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
Reference URL's