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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, спешите принять участие в поэтическом конкурсе "Весенние поэты 2024"!
    Ждем именно вас!

    Ссылка на конкурсную тему - тык

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

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
1.930
Благодарности
929
Баллы
275
  • Первое сообщение
  • #1
редакция от 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 · Просмотры: 9
  • оно_2023_01_03_G2_OUTOFMYWAY_scripts.zip
    9,9 KB · Просмотры: 10
  • 2023_03_10_G2_OUTOFMYWAY_scripts.zip
    10,7 KB · Просмотры: 7
  • 2023_03_13_G2_OUTOFMYWAY_scripts.zip
    10,9 KB · Просмотры: 9
Последнее редактирование:

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.339
Благодарности
3.183
Баллы
525
посоветуй что тут добавить убавить
Я не то, чтобы знаток ИИ в Г2. Там ИИ серьёзно порезали и перекроили. Обсуждаемый вопрос тому пример.

В приведённом тобой фрагменте с немецкими комментариями имеет место неточность. Восприятие PERC_ASSESSFIGHTSOUND помечено, как активное, хотя является пассивным. Срабатывает, если наносится или блокируется удар. В Г1 используется полноценное активное восприятие PERC_ASSESSFIGHTER. Оно срабатывает на персонажа в боевом режиме. Также я не вижу в списке восприятий реакцию на факт вытаскивания оружия PERC_DRAWWEAPON. Если работает восприятие ГГ PERC_ASSESSPLAYER, и боевой режим отслеживается там, то это не страшно. Но в данном случае это восприятие, вроде как, не работает.
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
1.930
Благодарности
929
Баллы
275
Вылетит, на первой проверке непися((
не даёшь прям .Unreal , что то написать по существу :)

***

добавил пустые инстанции пару проверок на НВ. Теперь должно работать в Архолос. Вечером посмотрю какие проверки поставить что бы он был совместим с Готика 2 классик.
 

Вложения

  • 2023_02_02_B_MoveNpcWait.vdf
    36,4 KB · Просмотры: 5

.Unreal

Участник форума
Регистрация
21 Июн 2012
Сообщения
658
Благодарности
89
Баллы
210
@.Unreal, не хочешь потестить в Архолос? :)
Мод "Дай пройти"?) Можно попробовать. Но мне бы готовый архив или ссылку на что то подобное. А то тут неопытному и не разобраться что качать и куда закидывать) Правда со временем сейчас не очень, но если не к спеху - могу потестить.
Вылетит, на первой проверке непися((
) Типо рано еще тестить?)
А, блин.. У меня ж Архолос старая версия еще стоит. До новой пока никак не доберусь..(
 

MEG@VOLT

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

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
1.930
Благодарности
929
Баллы
275

.Unreal

Участник форума
Регистрация
21 Июн 2012
Сообщения
658
Благодарности
89
Баллы
210
Уже можно, предыдущее сообщение - архив, распаковать в папку data
Как проверю - отпишусь. Правда у меня старая версия. Но наверно это не столь важно, как я понимаю?
2023_02_02_B_MoveNpcWait.vdf - вот этот файл, да? Там просто выше архивов нет, только этот файл.
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.212
Благодарности
6.195
Баллы
1.565
Как проверю - отпишусь. Правда у меня старая версия. Но наверно это не столь важно, как я понимаю?
2023_02_02_B_MoveNpcWait.vdf - вот этот файл, да? Там просто выше архивов нет, только этот файл.
Да, все верно
 

.Unreal

Участник форума
Регистрация
21 Июн 2012
Сообщения
658
Благодарности
89
Баллы
210
Как проверю - отпишусь. Правда у меня старая версия. Но наверно это не столь важно, как я понимаю?
2023_02_02_B_MoveNpcWait.vdf - вот этот файл, да? Там просто выше архивов нет, только этот файл.
Ребят, вы меня извините.. Времени совсем мало свободного. Реал, да еще и карту на дисы доделываю сейчас. На нее много времени свободного уходит.. В общем залетел в Архолос, немного пробежался. Из того что я увидел: крестьяне ничего не говорят глав. герою. Хотя и реагируют на него - останавливаются, если преградить им путь. Крестьянка Леа из Зильбаха правда совсем никак не реагирует на ГГ, словно его и нет. Тупо обходит его стороной. Это на безгильдийного реакция. Стражу пока не успел проверить. Реакция на гильдийного у многих такая же как и у крестьян на безгильдийного, т.е. просто стоят и смотрят на ГГ. Бойцы из ратуши в городе (конкретно именные) спрашивают постоянно "что ты там делаешь?". Типо того. Вопрос немного странный, особенно если я был бы новичком в игре. Не совсем понятно к чему такой вопрос. Но они не нападают, говорят только эту фразу 1 раз и все. А вот безымянная стража после первого вопроса потом достают оружие и угрожают побить меня. Ну и потом избивают если не пропускаю их. Фразы нужно корректировать еще конечно.. Еще хотел гильдийным проверить магов, но не нашел проходящих пока что. Чуть позже еще потестю. И думаю, все же стоит добавить реакцию как было в 1й готике и на "плотный контакт", т.е. когда ГГ прямо стоит вплотную к НПСу. Чтобы те просили отойти. Как будет еще свободное время - потестю еще и отпишусь!
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.212
Благодарности
6.195
Баллы
1.565
Хотя и реагируют на него - останавливаются, если преградить им путь. Крестьянка Леа из Зильбаха правда совсем никак не реагирует на ГГ, словно его и нет.
Очень похоже на перекрестное смешивание старой версии и новой.
А ты в папке system\autorun почистил следы предыдущей версии? ))
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
1.930
Благодарности
929
Баллы
275
Крестьянка Леа из Зильбаха
надо название инстанции НПС скидывать что бы можно было посмотреть его гильдию и тип.
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.212
Благодарности
6.195
Баллы
1.565
Крестьяне, горожане, наемники(гильдия торговцев), безгильдийные, маги огня ругаются. С ними все нормально.
Послушники, менты, паладины, маги воды только руками машут, не ругаясь. Мне кажется для них просто фраз не существует...
1675577756470.png
1675577874642.png
1675578115386.png
1675578431177.png

Да, фраз не существует:
Union:
   ZS_MoveNpcWait [Послушник 13817]  -- > B_Say [AIV_StateTime 0]
   ZS_MoveNpcWait [Послушник 13817]  -- > B_Say [AIV_StateTime 0]
   ZS_MoveNpcWait [Послушник 13817]  -- > B_Say [AIV_StateTime 0]
   ZS_MoveNpcWait [Послушник 13817]  -- > ZS_MoveNpcWait_Random_PlayAni [AIV_StateTime 7]
       ZS_MoveNpcWait_Random_PlayAni [Послушник 13817]: AI_PlayAni 'R_SCRATCHHEAD'
   ZS_MoveNpcWait [Послушник 13817]: Npc_SetStateTime [AIV_StateTime 0]
   ZS_MoveNpcWait [Послушник 13817]  -- > B_Say [AIV_StateTime 0]
   ZS_MoveNpcWait [Послушник 13817]  -- > ZS_MoveNpcWait_Random_PlayAni [AIV_StateTime 7]
       ZS_MoveNpcWait_Random_PlayAni [Послушник 13817]: AI_PlayAni 'R_SCRATCHHEAD'
   ZS_MoveNpcWait [Послушник 13817]: Npc_SetStateTime [AIV_StateTime 0]
   ZS_MoveNpcWait [Послушник 13817]  -- > B_Say [AIV_StateTime 0]
надо название инстанции НПС скидывать что бы можно было посмотреть его гильдию и тип.
С ней тоже все хорошо.
Скорее всего так же наложение старой и новой версий.
1675578804851.png

Кстати, а зачем ты пиратов и бандитов в функцию test(RavenIsDead) засунул? Бандитов понятно, а пираты зачем?
 
Последнее редактирование:

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
1.930
Благодарности
929
Баллы
275
это является так же и "маркером" для всего Аддона Ночь Ворона. Если этой переменной нет, то нет и Ночи Ворона, то есть нет Бандитов и Пиратов. Таким образом я не стал делать две отдельные проверки(бандиты,пираты), а укрупнив сделал общую. Делалась это опять же для совместимости, с Г2 Классик, Архолос и т.д. :)
 
Последнее редактирование:

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
1.930
Благодарности
929
Баллы
275
Это может случиться в 0,001% случаев... Но да, добавить нужно.
НПС убегают в рамках квестов. по сюжету игру штук 5 наберётся. в неоф. обновление D36 и того больше будет.
1675686209134.png
 
Последнее редактирование:

.Unreal

Участник форума
Регистрация
21 Июн 2012
Сообщения
658
Благодарности
89
Баллы
210

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.212
Благодарности
6.195
Баллы
1.565
А?) Ничего не чистил. Только скинул вдф файл в папку дата и зашел в Архолос как было время.
Ок)
В папке system\autorun удали файл _G2_B_MoveNpcWait.src и папку G2_B_MoveNpcWait
После этого проверь еще раз
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.212
Благодарности
6.195
Баллы
1.565
MW 7, немного подправил ZS_MoveNpcWait_Loop
Daedalus:
func int ZS_MoveNpcWait_Loop ()
{
    var int One_Say;
    if (self.aivar[AIV_StateTime]  > 10)
    {
        Npc_SetStateTime(self,1);
        self.aivar[AIV_StateTime] = 0;
        self.aivar[AIV_TAPOSITION] = 0;
        Hlp_PrintConsole(Str_Format("   ZS_MoveNpcWait [%s %i]: Npc_SetStateTime [AIV_StateTime %i]",self.name, self.id, self.aivar[AIV_StateTime]));
        One_Say = 0;
    };
   
    if (other.aivar[AIV_INVINCIBLE] == true)                // герой с кем то заговорил
    || (Npc_GetDistToNpc(self, other) > DIST_MoveNpc)       // герой уступил дорогу
    //|| (Npc_IsWayBlocked(self) == false)
    // || (self.aivar[AIV_StateTime]  >= 10)
    {
        Npc_ClearAIQueue(self);
        //C_StopLookAt        (self); // da in ZS_MoveNpc() der Blockierer nach dem Waffenziehen angeguckt wird!
        B_StopLookAt (self);
        B_RemoveWeapon      (self);
        AI_ContinueRoutine  (self);
        Hlp_PrintConsole(Str_Format("   ZS_MoveNpcWait [%s %i]  -- > return LOOP_END [AIV_StateTime %i]",self.name, self.id, self.aivar[AIV_StateTime]));
        return LOOP_END;  
    };
   

    if (self.aivar[AIV_StateTime]  >= 7)
    {
        if (self.aivar[AIV_TAPOSITION] == true)
        //&& (C_AmIStronger(self, other) == true)  // общая проверка
        {
            Npc_SetTempAttitude (self,ATT_HOSTILE);
            // B_Say            (self,     other, "$YOUASKEDFORIT"); // реплика есть в ZS_Attack
            Npc_SetTarget    (self,    other);
            //AI_StartState    (self,     ZS_Attack, 1, "");
            Hlp_PrintConsole(Str_Format("   ZS_MoveNpcWait [%s %i]  -- > B_Attack [AIV_StateTime %i]",self.name, self.id, self.aivar[AIV_StateTime]));
            B_Attack (self, other, AR_ReactToWeapon , 0);
            return LOOP_END;      
        }
        else if  (self.aivar[AIV_TAPOSITION] != 7)          
        {
            Hlp_PrintConsole(Str_Format("   ZS_MoveNpcWait [%s %i]  -- > ZS_MoveNpcWait_Random_PlayAni [AIV_StateTime %i]",self.name, self.id, self.aivar[AIV_StateTime]));
            ZS_MoveNpcWait_Random_PlayAni(self);
            self.aivar[AIV_TAPOSITION] = 7;
        };
    }
    else if (self.aivar[AIV_StateTime]  >= 3) // 0,1,2,3. итого 4.
    {
        if (self.aivar[AIV_TAPOSITION] == FALSE)
        {
            if (C_AmIStronger(self, other) == true)  // общая проверка
            {
                B_SelectWeapon    (self,    other);
                //B_Say             (self,    other,  "$YOUDEAFORWHAT"); // G1 MDK
                B_Say             (self,    other,  "$ThenIBeatYouOutOfHere");     //Сейчас я вышвырну тебя отсюда!
                self.aivar[AIV_TAPOSITION] = TRUE; //PlayerHasBeenWarnedTwice
                Hlp_PrintConsole(Str_Format("   ZS_MoveNpcWait [%s %i]  -- > B_SelectWeapon [AIV_StateTime %i]",self.name, self.id, self.aivar[AIV_StateTime]));
            };
        };
    }
    else if ((self.aivar[AIV_StateTime] == 0) && (One_Say != 1))
    {
        if (Npc_GetAttitude ( self, other) == ATT_FRIENDLY)
        || (self.npcType == NPCTYPE_FRIEND)
        {
            B_Say (self, other, "$whereto");  //
        }
        else if (C_AmIStronger(self, other) == true)
        {
            B_Say (self, other, "$WhatDidYouDoInThere");  //Что тебе здесь надо, а?!
        }
        else
        {
            B_Say (self, other, "$GetOutOfHere");   //Убирайся отсюда!
        };
        Hlp_PrintConsole(Str_Format("   ZS_MoveNpcWait [%s %i]  -- > B_Say [AIV_StateTime %i] Убирайся отсюда!",self.name, self.id, self.aivar[AIV_StateTime]));
        One_Say = 1;
    };
   
    // ------ Alle 2 Sekunden zu other ausrichten ------
    if (Npc_GetStateTime (self) != self.aivar[AIV_StateTime])
    {
        if (!Npc_CanSeeNpc (self, other))
        {  
            B_TurnToNpc (self, other);
        };
        //Hlp_PrintConsole(Str_Format(" ZS_MoveNpcWait [%s %i]  -- > return LOOP_CONTINUE [AIV_StateTime %i]",self.name, self.id, self.aivar[AIV_StateTime]));
        self.aivar[AIV_StateTime] = Npc_GetStateTime (self);
    };

    //AI_Wait                (self,1);
    return LOOP_CONTINUE;
};
добавил One_Say, т.к. при self.aivar[AIV_StateTime] == 0, пока первая секунда не пройдет, болванчик пытается сказать фразу. С моей правкой, он говорит сразу.
Так же проверил плагин с модом Вален.
Пришлось добавить еще:
Daedalus:
test(!BDT_1083_Addon_Esteban)    { instance BDT_1083_Addon_Esteban(C_Npc)       { }; };
test(!BDT_1085_Addon_Bloodwyn)    { instance BDT_1085_Addon_Bloodwyn(C_Npc)       { }; };
В архолосе эти двое оказывается существуют))
И не понимаю как добавить проверку существования фраз. Ваще чет вылетаю за это...
test(!whereto) - Не получается у меня))
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
1.930
Благодарности
929
Баллы
275
И не понимаю как добавить проверку существования фраз. Ваще чет вылетаю за это...
на сколько я понимаю в класс C_SVM можно добавлять новые строчки без последствий. но я не знаю как парсер работает с классами :) может Slavemaster подскажет.
Пост автоматически объединён:

тогда проще в том блоке делать Npc_SetStateTime(self,1);
 
Последнее редактирование:
Сверху Снизу