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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток!
    Стартовал новый литературный конкурс от "Ордена Хранителей" - "Пираты Миртанского моря".
    Каждый может принять в нём участие и снискать славу и уважение, а в случае занятия призового места ещё и получить награду. Дерзайте
  • Дорогие друзья, год подходит к концу, и пришло время подвести его итоги и наградить достойных

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

Готика 2: НВ Out Of My Way

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.011
Благодарности
981
Баллы
295
редакция от 1 марта 2023 года.
один архув с аудио репликами и субтитрами. второй архив со скриптами. два архива лишние, удалить не смог. у правильного архива в название указано "оно"
***
настройки восприятия можно изменить в файле gothic.ini. параметры по умолчанию
DIST_MoveNpc=300
DIST_PERC_MOVENPC=100
***
  • реплики собраны в посте #3 топика Готика 2: НВ - Out Of My Way
  • Сердце "проекта", цикл ZS_MoveNpcWait в посте #4 Готика 2: НВ - Out Of My Way
  • C_AmIFRIENDLY - у героя есть «друзья». Какие то есть изначально, какие то появляются по сюжету, какие то в рамках фракционных отношений. Друзья не бьют героя и не хомят ему на ровном месте. Друзья говорят «Привет друг». пост про друзей #5 Готика 2: НВ - Out Of My Way
  • C_AmIStronger - если НПС не друг героя и достаточно крепок, то он будет угрожать герою. Проверка на то крут НПС или нет в посте #6 Готика 2: НВ - Out Of My Way
 

Вложения

  • 2023_01_03_G2_OUTOFMYWAY_RU_SPEECH.zip
    1,7 MB · Просмотры: 15
  • оно_2023_01_03_G2_OUTOFMYWAY_scripts.zip
    9,9 KB · Просмотры: 15
  • 2023_03_10_G2_OUTOFMYWAY_scripts.zip
    10,7 KB · Просмотры: 9
  • 2023_03_13_G2_OUTOFMYWAY_scripts.zip
    10,9 KB · Просмотры: 10
Последнее редактирование:

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.011
Благодарности
981
Баллы
295
....
 
Последнее редактирование:

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.011
Благодарности
981
Баллы
295
var string YouDeafOrWhat;
YouDeafOrWhat = "SVM_1_YouDeafOrWhat"; //Ты оглох? ДВИГАЙСЯ!
YouDeafOrWhat = "SVM_2_YouDeafOrWhat"; //Исчезни, или я займусь тобой!
YouDeafOrWhat = "SVM_3_YouDeafOrWhat"; //Сколько раз говорить?! Дай мне пройти!
YouDeafOrWhat = "SVM_4_YouDeafOrWhat"; //С дороги, или ты пожалеешь!
YouDeafOrWhat = "SVM_5_YouDeafOrWhat"; //Ты глухой или ищешь неприятностей?
YouDeafOrWhat = "SVM_6_YouDeafOrWhat"; //Исчезни! Мне что - нужно вбить это в твою тупую башку?
YouDeafOrWhat = "SVM_7_YouDeafOrWhat"; //Ищешь неприятностей? Убирайся отсюда!
YouDeafOrWhat = "SVM_8_YouDeafOrWhat"; //Я что - должен вбить это в твою тупую башку? Убирайся отсюда!
YouDeafOrWhat = "SVM_9_YouDeafOrWhat"; //Ну же, отойди с дороги!
YouDeafOrWhat = "SVM_10_YouDeafOrWhat"; //Я что, должен вбить это в твою тупую башку? Убирайся отсюда!
YouDeafOrWhat = "SVM_11_YouDeafOrWhat"; //Я что, должен вбить это в твою тупую башку? Убирайся отсюда!
YouDeafOrWhat = "SVM_12_YouDeafOrWhat"; //Ты глухой или ищешь неприятностей?
YouDeafOrWhat = "SVM_13_YouDeafOrWhat"; //Ты ищешь неприятностей? Убирайся отсюда!
YouDeafOrWhat = "SVM_14_YouDeafOrWhat"; //А теперь исчезни!

var string FriendlyGreetings;
FriendlyGreetings = "SVM_1_FriendlyGreetings"; //Привет.
FriendlyGreetings = "SVM_2_FriendlyGreetings"; //Привет.
FriendlyGreetings = "SVM_3_FriendlyGreetings"; //Эй, парень.
FriendlyGreetings = "SVM_4_FriendlyGreetings"; //Приветствую.
FriendlyGreetings = "SVM_5_FriendlyGreetings"; //Привет, друг!
FriendlyGreetings = "SVM_6_FriendlyGreetings"; //Привет!
FriendlyGreetings = "SVM_7_FriendlyGreetings"; //Привет!
FriendlyGreetings = "SVM_8_FriendlyGreetings"; //Привет!
FriendlyGreetings = "SVM_9_FriendlyGreetings"; //Привет!
FriendlyGreetings = "SVM_10_FriendlyGreetings"; //Привет!
FriendlyGreetings = "SVM_11_FriendlyGreetings"; //Привет!
FriendlyGreetings = "SVM_12_FriendlyGreetings"; //Привет, друг!
FriendlyGreetings = "SVM_13_FriendlyGreetings"; //С тобой все в порядке?
FriendlyGreetings = "SVM_14_FriendlyGreetings"; //Приветствую.
FriendlyGreetings = "SVM_15_FriendlyGreetings"; //Привет!

var string OutOfMyWay;
OutOfMyWay = "SVM_1_OutOfMyWay"; //С дороги, парень!
OutOfMyWay = "SVM_2_OutOfMyWay"; //С дороги!
OutOfMyWay = "SVM_3_OutOfMyWay"; //С дороги, парень!
OutOfMyWay = "SVM_4_OutOfMyWay"; //С дороги!
OutOfMyWay = "SVM_5_OutOfMyWay"; //Ну же, мне нужно пройти!
OutOfMyWay = "SVM_6_OutOfMyWay"; //Эй, посторонись!
OutOfMyWay = "SVM_7_OutOfMyWay"; //С дороги!
OutOfMyWay = "SVM_8_OutOfMyWay"; //В сторону!
OutOfMyWay = "SVM_9_OutOfMyWay"; //Отойди!
OutOfMyWay = "SVM_10_OutOfMyWay"; //Прочь с дороги!
OutOfMyWay = "SVM_11_OutOfMyWay"; //Отойди!
OutOfMyWay = "SVM_12_OutOfMyWay"; //Ну же, мне нужно пройти!
OutOfMyWay = "SVM_13_OutOfMyWay"; //Уйди с дороги!
OutOfMyWay = "SVM_14_OutOfMyWay"; //Дай мне пройти.

var string MakeWay;
MakeWay = "SVM_1_MakeWay"; //Дай мне пройти!
MakeWay = "SVM_2_MakeWay"; //Дай мне пройти!
MakeWay = "SVM_3_MakeWay"; //Дай мне пройти!
MakeWay = "SVM_4_MakeWay"; //Дай мне пройти!
MakeWay = "SVM_5_MakeWay"; //Дай мне пройти!
MakeWay = "SVM_6_MakeWay"; //Дай мне пройти!
MakeWay = "SVM_7_MakeWay"; //Дай мне пройти.
MakeWay = "SVM_8_MakeWay"; //Можно пройти?
MakeWay = "SVM_9_MakeWay"; //Дай мне пройти!
MakeWay = "SVM_10_MakeWay"; //Дай мне пройти!
MakeWay = "SVM_11_MakeWay"; //Можно пройти?
MakeWay = "SVM_12_MakeWay"; //Дай мне пройти!
MakeWay = "SVM_13_MakeWay"; //Дай мне пройти.
MakeWay = "SVM_14_MakeWay"; //Отойди!

Daedalus:
WiseMove = "SVM_1_WiseMove";    //Умный мальчик!
    WiseMove = "SVM_2_WiseMove";    //Правильное решение!
    WiseMove = "SVM_3_WiseMove";    //Ты сам напросился!
    WiseMove = "SVM_4_WiseMove";    //Тебе еще повезло.
    WiseMove = "SVM_5_WiseMove";    //Ты быстро учишься!
    WiseMove = "SVM_6_WiseMove";    //Вот это удача!
    WiseMove = "SVM_7_WiseMove";    //Тебе повезло! Но я бы с удовольствием набил тебе морду!
    WiseMove = "SVM_8_WiseMove";    //Тебе еще повезло.
    WiseMove = "SVM_9_WiseMove";    //Молодец!
    WiseMove = "SVM_10_WiseMove";    //Тебе повезло.
    WiseMove = "SVM_11_WiseMove";    //Хорошо! Больше этого не делай!
    WiseMove = "SVM_12_WiseMove";    //Ты быстро учишься!
    WiseMove = "SVM_13_WiseMove";    //На этот раз тебе повезло! Но я бы с удовольствием набил тебе морду!
    WiseMove = "SVM_14_WiseMove";    //Правильное решение!

Daedalus:
    var string wisemove;
    wisemove = "SVM_1_WiseMove";    //Видишь, это было не так уж сложно.
    wisemove = "SVM_3_WiseMove";    //Умный мальчик!
    wisemove = "SVM_4_WiseMove";    //Умный мальчик!
    wisemove = "SVM_5_WiseMove";    //Видишь, это было не так уж сложно.
    wisemove = "SVM_6_WiseMove";    //Эй, ты не такой тупой, как кажешься!
    wisemove = "SVM_7_WiseMove";    //Умный мальчик!
    wisemove = "SVM_8_WiseMove";    //Умный мальчик!
    wisemove = "SVM_9_WiseMove";    //Эй, ты не такой тупой, как кажешься!
    wisemove = "SVM_10_WiseMove";    //Умный мальчик!
    wisemove = "SVM_11_WiseMove";    //Видишь, это было не так уж сложно.
    wisemove = "SVM_12_WiseMove";    //Эй, ты не такой тупой, как кажешься!
    wisemove = "SVM_13_WiseMove";    //Умный мальчик!
    wisemove = "SVM_14_WiseMove";    //Видишь, это было не так уж сложно.
    wisemove = "SVM_16_WiseMove";    //Умный мальчик!
    wisemove = "SVM_17_WiseMove";    //Умный мальчик!
 

Вложения

  • G1_EG_svm.zip
    23,2 KB · Просмотры: 5
  • G2_SVM.zip
    30,9 KB · Просмотры: 6
Последнее редактирование:

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.011
Благодарности
981
Баллы
295
в ZS_MoveNpcWait_Loop

State TimeДрузьяАгрессивноНейтральноПримечание
0реплика FRIENDLYGREETINGSреплика OUTOFMYWAYреплика MAKEWAY
...
4RandomPlayAniреплика YOUDEAFORWHATRandomPlayAni
4B_SelectWeapon
...
8RandomPlayAniRandomPlayAni
...
13зацикливаниеB_Attackзацикливание
...
ВЫХОДИ ИЗ ЦИКЛАреплика WISEMOVE если агрессор делал предупреждение
 

Вложения

  • 2023_03_01_ZS_MoveNpc.zip
    2,4 KB · Просмотры: 4
Последнее редактирование:

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.011
Благодарности
981
Баллы
295
C_AmIFRIENDLY
проверка на C_AmIFRIENDLY
еще бы составить список друзей что бы делать проверку прям по инстанциям, так как судя по всему типы отношений прописаны не у всех. можно в виде таблицы
ДРУЗЬЯ
неписьинстанцияусловия дружбыпримечание
ВолкSLD_811_Wolfif(Player_GotCrawlerArmor == TRUE || DIA_Wolf_BENGAR_oneTime == TRUE)Агрится if(Wolf_IsOnBoard == LOG_FAILED)
бифDJG_713_Biffхз какоеА наверно в общее - если партнер
сатурасKDW_14000_Addon_Saturas_ADWстать членом КВ
ЛиSLD_800_LeeДруг впринципеАгрится:
if(Npc_KnowsInfo(other,DIA_Lee_StillNeedYou) &&
Lee_IsOnBoard != LOG_OBSOLETE)
БенетSLD_809_Bennetif(MIS_RescueBennet == LOG_SUCCESS)
любой?npc.aivar[AIV_PARTYMEMBER] == TRUEнпс находится в пати с героем
маги - воды Убили Равена - дружелюбно.
герой ментпал (hero)послушник (hero)маг (hero)
GIL_MIL (Npc)За короля!За короля!
Маг (Npc)За Инноса!За Инноса!За Инноса!
Пал (Npc)За короля!За Инноса!За Инноса!За Инноса!


Daedalus:
func int C_FurKihg(var C_Npc slf, var C_Npc oth)   // oth это герой
{
    if (slf.guild == GIL_MIL)
    {
        if (oth.guild == GIL_MIL)    { return true; };
        if (oth.guild == GIL_PAL)    { return true; };
    };
  
    if (slf.guild == GIL_PAL)
    {
        if (oth.guild == GIL_MIL)    { return true; };
    };
    Hlp_PrintConsole(Str_Format("   C_FurKihg [%s %i] -- >  false",slf.name, slf.id));
  
    return false;
};
Daedalus:
func int C_FurINNOS(var C_Npc slf, var C_Npc oth)   // oth это герой
{
    if (slf.guild == GIL_PAL)
    || (slf.guild == GIL_KDF)
    || (slf.guild == GIL_NOV)
    {
        if (oth.guild == GIL_NOV)   { return true; };
        if (oth.guild == GIL_PAL)   { return true; };
        if (oth.guild == GIL_KDF)   { return true; };
    };
      
    Hlp_PrintConsole(Str_Format("   C_FURINNOS [%s %i] -- >  false",slf.name, slf.id));
    return false;
};
 

Вложения

  • C_AmIFRIENDLY.zip
    1,1 KB · Просмотры: 3
  • 2023_03_10_C_AmIFRIENDLY.zip
    1,4 KB · Просмотры: 4
Последнее редактирование:

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.011
Благодарности
981
Баллы
295
C_AmIStronger
надо найти таблицу МегаВольта и вставить в этот пост.
 
Последнее редактирование:

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.011
Благодарности
981
Баллы
295
...

надо удалить приложенный файл к этому посту
 

Вложения

  • 2023_03_10_C_AmIStronger.zip
    2,2 KB · Просмотры: 3
Последнее редактирование:

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.011
Благодарности
981
Баллы
295
....
 
Последнее редактирование:

.Unreal

Участник форума
Регистрация
21 Июн 2012
Сообщения
689
Благодарности
91
Баллы
210
Вы лучше г2екст юзайте для улучшения г2а:D
Что за прога?

Ещё давно хотел спросить.. Как вернуть поведение НПСов из Г1? Я про знаменитую фразу "дай пройти". Помню очень давно, когда только начинал знакомиться с Готикой - друг дал диски с немецкой Г2. Так вот там, если полазить в готик.ини, можно было вернуть эту фразу в игру. Есть ли такое в лицензии? В общем, если кто то знает как вернуть эту фишку - буду очень признателен!
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.900
Благодарности
6.777
Баллы
1.625
Ещё давно хотел спросить.. Как вернуть поведение НПСов из Г1? Я про знаменитую фразу "дай пройти".
Некоторые не просто говорили эту фразу. Чаще наемники или стражники говорили "отойди" два раза, и потом начинали пинать ГГ...
Хм...
ElderGamer в последних твоих фиксах неписи друг друга пинают если мешают пройти?
 

.Unreal

Участник форума
Регистрация
21 Июн 2012
Сообщения
689
Благодарности
91
Баллы
210
Некоторые не просто говорили эту фразу. Чаще наемники или стражники говорили "отойди" два раза, и потом начинали пинать ГГ...
Хм...
ElderGamer в последних твоих фиксах неписи друг друга пинают если мешают пройти?
Вот, да-да) Очень хочется вернуть это в Г2. Было бы здорово!
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
@ElderGamer в последних твоих фиксах неписи друг друга пинают если мешают пройти?
Зависит от сочетания, кто кому мешает. Вор не будет наезжать на мага Воды, а рудокоп на стражника. В отдельных случаях непись просто попросит отойти. В других случаях может вытащить саблю или активировать заклинание и атаковать ГГ.

Очень хочется вернуть это в Г2.
Это делается через правку функций ИИ в скриптах. Но ИИ - это такая скользкая область, в которую многие моддеры залезать не хотят. Увы.
 

.Unreal

Участник форума
Регистрация
21 Июн 2012
Сообщения
689
Благодарности
91
Баллы
210
Это делается через правку функций ИИ в скриптах. Но ИИ - это такая скользкая область, в которую многие моддеры залезать не хотят. Увы.
А в готик.ини не настроить? В акеловской лицензии так не выйдет?.. У меня когда то давно в немецкой версии через готик.ини настраивалось помню это всё. Очень хочется вернуть это в Г2.. Очень атмосферная фишка!
 
Последнее редактирование:

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.900
Благодарности
6.777
Баллы
1.625

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.011
Благодарности
981
Баллы
295
Сможешь подсказать, где в Г1 это в скриптах зарыто?
в perception.d

Npc_PercEnable (self, PERC_MOVENPC , B_MoveNpc );

Daedalus:
        else if    (Npc_GetAttitude ( self, other) == ATT_ANGRY || Npc_GetAttitude ( self, other) == ATT_NEUTRAL )
        &&         C_AmIStronger(self, other)
        &&         !C_NpcIsGuard(self)
        &&         !C_NpcIsGuardArcher(self)
        {
            B_FullStop         (self);
            B_SmartTurnToNpc(self,    other);
            B_Say             (self, other, "$OUTOFMYWAY");
            AI_StartState     (self,ZS_MoveNpcWait, 0, ""); 
            return;
        }
        else
        {
            B_FullStop        (self);
            B_SmartTurnToNpc(self,    other);
            B_Say             (self, other, "$MAKEWAY");
            AI_StartState     (self, ZS_MoveNpcFriendlyWait, 0, "");
            return;
        };
 
Последнее редактирование:

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.011
Благодарности
981
Баллы
295
для НВ надо будет адаптировать
  • ZS_MoveNpcFriendlyWait
  • ZS_MoveNpcWait
  • B_MoveNpc

и включить PERC_MOVENPC в файле perception.d

1674076624477.png

Пост автоматически объединён:

Но ИИ - это такая скользкая область, в которую многие моддеры залезать не хотят. Увы.
это потому что ты опытом не делишься. про ИИ только из твоих правок zs_ в рамках фикса Готики 1 что то можно подчеркнуть ;-)
 

Вложения

  • ZS_MoveNpc.zip
    1,1 KB · Просмотры: 7
  • B_MoveNpc.zip
    1,1 KB · Просмотры: 8
Последнее редактирование:

.Unreal

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

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
это потому что ты опытом не делишься.
Делюсь. Но это происходит, в основном, в привате. В открытых темах на форуме вопросы по ИИ возникают не часто.

Я писал выше, что просто в ини-файле раньше можно было эту фишку включить и всё
Думаю, память тебя подводит. В скриптах Г2НВ нет даже упоминания необходимых для предупреждения ГГ фраз. Ну и восприятие нужное, как уже сказано, не используется. Возможно, это было доработано в каком-то моде.
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.900
Благодарности
6.777
Баллы
1.625
.Unreal, ElderGamer, Ну в пиратке обычной Г2 такое возможно и было, честно уже не помню.
В Г2НВ такого точно нет.
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.011
Благодарности
981
Баллы
295
Ну в пиратке обычной Г2 такое возможно и было, честно уже не помню.
ну это было бы в MDK. там даже намёка на это нет. Мне кажется Пираньи просто поленились так как пришлось бы прописывать большое кол-во вариантов. Это касается ряда скриптов ИИ что не было перенесено в Готику 1. а так же прототипов персонажёй.

Восстановить это не сложно, а вот именно описать все поведенческие особенности между НПС с точки зрение иеархий, отношений между фракциями и так далее, что бы в самой игре это выглядело убедительно это прям большое дело. вот например кто будет после второго предупреждение переходить в атаку по слабому ГГ за то что тот не уступил дорогу?
ГГ нейтралГГ ментГГ наёмГГ ОНДГГ палГГ послушникГГ маг
НПС ментхзнетхзхзнетнетнет
НПС наёмдададаскорее даскорее дадахз
НПС онд
НПС бандит
НПС пират
НПС крестьянин
НПС послушник
НПС друг
НПС горажанин
НПС зэк
НПС маг
НПС высший маг
НПС Ватрас
НПС Ксардас
НПС рабочий
НПС раб
если это мент то вроде как по закону ему не положено, с другой стороны он при исполнение и находится в патруле и в таком случае это уже может быть не выполнение законного требования, т.е. преступление и вроде как он уже обязан "присечь незаконное бездействие" ГГ.
 
Последнее редактирование:
Сверху Снизу