• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

Gothic ½ Отключение урона и фокуса по своим | zNoFriendlyFire [плагин для Union]

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
zNoFriendlyFire
Отключение урона и фокуса по своим

Доступно в
Steam Workshop Gothic 1 stimSmall.png
Steam Workshop Gothic 2 stimSmall.png
Менеджер ресурсов 1559419291725.png
Google Drive
Либо посмотреть вложение к сообщению.​



Требования: Union 1.0l или выше
Платформа: Gothic I, Gothic Sequel, Gothic II, Gothic II NoTR
Исходный код:
GitHub

Этот плагин не просто отключает урон и фокус по своим, а скорее анализирует когда и для кого именно его следует отключать.
Программа ситуационно отфильтровывает взятие в фокус и случайное нанесение урона по потенциальным союзникам. К примеру, в фокус не будут браться Partymember'ы, ведь они по факту являются напарниками. Также не будут браться в фокус те NPC, которые атакуют вражеские цели вместе с вами. Дополнительно, если все вражеские цели убиты, то фокус по `своим` будет неактивен еще 2.0 секунды, чтобы случайно не ударить союзника.

Плагин имеет настраиваемые фильтры для NPC, которые будут браться в фокус всегда и никогда не смотря на логику плагина. Примером необходимости такого решения является, например, персонаж Мад в G1, которого невозможно будет прогнать, если принудительно не разрешить на него фокус, поскольку он считается напарником. Фильтры задаются скриптом через папку Autorun.
Синтаксис:
Daedalus:
Делает NPC невидимым для боевого фокуса навсегда (кроме ситуации, когда игрок является его текущим соперником)
func void AI_SetNeverFocusInstance(var C_Npc npc)
func void AI_SetNeverFocusInstanceName(var string instanceName)

Делает NPC видимым для боевого фокуса навсегда
func void AI_SetAlwaysFocusInstance(var C_Npc npc)
func void AI_SetAlwaysFocusInstanceName(var string instanceName)

Пример скрипта для папки Autorun:
Daedalus:
func event GameInit()
{
    AI_SetAlwaysFocusInstanceName("VLK_574_Mud");
};

Примеры возможных игровых ситуаций

Выборочных захват цели в комбинации с напарниками




Захват цели в ситуации, где есть потенциальные враги и союзники



Захват, где в итоге остаются только союзники



 

Вложения

  • zNoFriendlyFire.zip
    13,3 MB · Просмотры: 246
Последнее редактирование модератором:

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.574
Благодарности
4.168
Баллы
915
Лично у меня этот плагин вызывает прямые ассоциации с боевой системой игр на движке Genome, где отключен урон по входящим в свиту ГГ NPC. Например, он значительно усложнит экипировку союзника лучшим оружием, чем изначально имеющегося у него. Например, для повышения урона в ближнем бою я сначала избиваю Диего в главе 2 и Биффа в главе 4, отбираю у них стандартное оружие (грубый меч и грубый боевой топор), а вместо них выбрасываю наносящие больший урон мечи элитных орков.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
Dimus, так а почему бы не сделать это нативными путями, как это реализовано в том же TES? Там напарник может использоваться для переноса предметов. Лучшие вещи он нацепляет на себя до тех пор, пока игрок не заберет их обратно.
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.574
Благодарности
4.168
Баллы
915
Насколько это реализуемо на уровне скриптов без использования расширителей? Например, NPC может подобрать лучшее оружие и экипироваться им не только после того, как заберёт его у побитого противника или потеряет своё после избиения. Поэтому во многих модах для игр серии S.T.A.L.K.E.R. можно выбросить из инвентаря игрока любое оружие, характеристики которого превышают характеристики имеющегося у этого NPC, причём даже с сильным износом - главное, чтобы в его инвентаре были патроны для этого оружия.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
Dimus, ну на сколько это реализуемо без расширителей меня вообще мало интересует, но как 'сюжет' для следующего плагина - самое то *thumbs up*
 

Andr1971

Участник форума
Регистрация
27 Дек 2015
Сообщения
714
Благодарности
574
Баллы
425
Не совместим с плагином на квиклут Ликера. Вылет при нажатии на "V" на рабочий стол.Даже удалив плагин через Юнион проблема не исчезает.Можно что-нибудь сделать?
Видимо все таки что-то у меня не так.Извиняюсь.Буду комп чистить.
 
Последнее редактирование:

Den Kor

Участник форума
Регистрация
13 Авг 2014
Сообщения
142
Благодарности
21
Баллы
185
Дайте самостоятельно этот плаг, пожалуйста!
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
pupil, а теперь перечитай сам что написал.
 

Den Kor

Участник форума
Регистрация
13 Авг 2014
Сообщения
142
Благодарности
21
Баллы
185
Gratt, что не понятно? Попросил плагин самостоятельно, чтобы не качать через менеджер.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
pupil, в следующий раз просто выражайся без наречий :) Обычно используют слова: автономный, оффлайн, без сети и тп
 

Вложения

  • zNoFriendlyFire.7z
    1,6 MB · Просмотры: 70

Den Kor

Участник форума
Регистрация
13 Авг 2014
Сообщения
142
Благодарности
21
Баллы
185
Ну да, хотел сказать автономно. Уже не в первый раз путаю эти слова :)
Спасибо!
Пост автоматически объединён:

Gratt, кстати, в моде на готику 2 НВ тоже работает.
 
Последнее редактирование:

.Unreal

Участник форума
Регистрация
21 Июн 2012
Сообщения
689
Благодарности
91
Баллы
210
Установил данный плагин через менеджер ресурсов и теперь монстры не реагируют на меня вообще никак.. даже если их начать бить. Удаление не помогает((( Уточнение - плагин затронул старые сейвы, в новой игре вроде как все норм, но я уже много потратил времени на мод и начинать заново как то не охота(( Кто то может мне помочь как то это исправить?...
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
.Unreal, он не трогает ни скрипты, ни сохранения... Больше напоминает старый *баг*, где если криво завершить диалог с нпс, то ломается весь ai.
 

Xeдин


Модостроитель
Регистрация
3 Дек 2008
Сообщения
1.450
Благодарности
1.977
Баллы
365
Установил данный плагин через менеджер ресурсов и теперь монстры не реагируют на меня вообще никак.. даже если их начать бить. Удаление не помогает((( Уточнение - плагин затронул старые сейвы, в новой игре вроде как все норм, но я уже много потратил времени на мод и начинать заново как то не охота(( Кто то может мне помочь как то это исправить?...
Странно что у вас несколько плагинов не работают (до этого квиклут не работал). Может дело не в плагинах, а в неправильной установки Ахсууна? Попробуйте переставить. Как устанавливаете?
 

.Unreal

Участник форума
Регистрация
21 Июн 2012
Сообщения
689
Благодарности
91
Баллы
210
Странно что у вас несколько плагинов не работают (до этого квиклут не работал). Может дело не в плагинах, а в неправильной установки Ахсууна? Попробуйте переставить. Как устанавливаете?
Как и все остальные моды до этого. Я в этом не совсем нуб, если вы об этом. Ахссун он же не просто мод, там еще ж есть используемые расширители: Ikarus, Lego, Spine. И их аж 3.. Думаю отсюда и несовместимости с плагинами. Алтердамаг вообще записан уже в игнорлист в инишке Ахссуна и он не работает в моде. Я подробнее отвечу о своих наблюдениях в той теме где и писал о проблемах мини-плагинов и пожалуй в теме мода Легенда Ахссуна возможно тоже напишу какой то пост по итогу как все выяснится до конца.. По поводу данного плагина - был баг в моде Братство Спящего. Вылечил его сном в любой кровати (можно поспать любое кол-во часов) и мобы снова начинают агриться. Сейчас все работает - как с модом так и без него. Но я еще ставил zParserExtender. Мб из за этого сочетания возник баг, не знаю. Сейчас у меня работают сейвы нормально с плагином zNoFriendlyFire. Но при этом я удалил безвозвратно пока что плагин zParserExtender.
Пост автоматически объединён:

@.Unreal, он не трогает ни скрипты, ни сохранения... Больше напоминает старый *баг*, где если криво завершить диалог с нпс, то ломается весь ai.
Что за баг? Поподробнее можно? Как его вылечить? Может быть у меня оно и сидит?..
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
Вылечил его сном в любой кровати
Ну значит точно оно. Когда ты начинаешь диалог с кем-то, то весь ai переводиться в пассивное состояние. Это такая защита, чтобы тебя не кокнули пока болтаешь. Очень часто такой баг происходит при резком прерывании диалога, в ТЧ мобси.
 

.Unreal

Участник форума
Регистрация
21 Июн 2012
Сообщения
689
Благодарности
91
Баллы
210
Ну значит точно оно. Когда ты начинаешь диалог с кем-то, то весь ai переводиться в пассивное состояние. Это такая защита, чтобы тебя не кокнули пока болтаешь. Очень часто такой баг происходит при резком прерывании диалога, в ТЧ мобси.
Т.е. сейчас у меня уже всё норм? Баг вылечен? Можно выдохнуть?)
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
Т.е. сейчас у меня уже всё норм? Баг вылечен? Можно выдохнуть?)
Ну типа да, он либо есть, либо нет. Больше интересно как ты его поймал, обычно случайно натыкивают, если используют Марвин :)
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.131
Благодарности
5.628
Баллы
910
Ну типа да, он либо есть, либо нет. Больше интересно как ты его поймал, обычно случайно натыкивают, если используют Марвин :)
Никто, кроме нас не исправил это.
Почему-то теряется ссылка на hero и хрен кому назначается aivar
Daedalus:
func void sleepabit_s1()
{
    var C_Npc her;
    her = Hlp_GetNpc (PC_Hero);


    if (Hlp_GetInstanceID (self) == Hlp_GetInstanceID (her))
    {
        self.aivar[AIV_INVINCIBLE] = TRUE;
        PLAYER_MOBSI_PRODUCTION = MOBSI_SleepAbit;
        AI_ProcessInfos (her); //сюда смотри
        if (SC_IsObsessed == TRUE)
        {
            Wld_PlayEffect ("DEMENTOR_FX", hero, hero, 0, 0, 0, FALSE);
        };
    };
};

Правильнее вот так, но я поленился поправить.
Daedalus:
func void sleepabit_s1()
{
    var C_Npc her;
    her = Hlp_GetNpc (PC_Hero);


    if (Hlp_GetInstanceID (self) == Hlp_GetInstanceID (her))
    {
        self.aivar[AIV_INVINCIBLE] = TRUE;
        PLAYER_MOBSI_PRODUCTION = MOBSI_SleepAbit;
        AI_ProcessInfos (self); //сюда смотри
        if (SC_IsObsessed == TRUE)
        {
            Wld_PlayEffect ("DEMENTOR_FX", hero, hero, 0, 0, 0, FALSE);
        };
    };
};
 
Последнее редактирование:
Сверху Снизу