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

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

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

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
1.990
Благодарности
967
Баллы
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 · Просмотры: 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
Сообщения
1.990
Благодарности
967
Баллы
275
НПС пал говорит герою милиционеру "за короля" или "за инноса" ?
после смерти Сильвио наверное Булко должен прийти в чувства ранга? :)
Пост автоматически объединён:

дружеское обращение послушника к герою паладина / магу: наверное тоже "за Инноса". просто "привет" в игре выглядит слишком фамильярдно.
 
Последнее редактирование:

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.832
Благодарности
6.716
Баллы
1.625
НПС пал говорит герою милиционеру "за короля" или "за инноса" ?
не помню, чуть позже посмотрю.
после смерти Сильвио наверное Булко должен прийти в чувства ранга? :)
не, не получится, они в минентале, оба выступают в роли бандитов. т.е. когда Сильвио нападет, то нападет и Булко, оба огребут и оба будут мертвые(без добивания)
дружеское обращение послушника к герою паладина / магу: наверное тоже "за Инноса". просто "привет" в игре выглядит слишком фамильярдно.
Согласен.
 

Beowulf

Участник форума
Регистрация
21 Ноя 2010
Сообщения
1.930
Благодарности
1.439
Баллы
465
НПС пал говорит герою милиционеру "за короля" или "за инноса" ?
"За Инноса" я бы оставил только если нпс послушник либо маг. В оригинале все вояки вроде как говорят только "За короля". Излишне загоняться на этот счет ну вообще не надо :)
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
1.990
Благодарности
967
Баллы
275
не, не получится, они в минентале, оба выступают в роли бандитов. т.е. когда Сильвио нападет, то нападет и Булко, оба огребут и оба будут мертвые(без добивания)
там есть сценарий когда Булко остаётся жив. после этого есть диалоги с героем и Булко куда то его ведёт к реке. надо будет это перепроверить. может я что то путаю.

**
НПС пал говорит герою милиционеру "за короля" или "за инноса" ?
не помню, чуть позже посмотрю.
переформулирую вопрос: в данном проекте НПС пал должен говорит герою менту "за короля" или "за инноса" ?
 

MEG@VOLT

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

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
1.990
Благодарности
967
Баллы
275
//подкидывает яблоко и затем съедает
Daedalus:
// случайная анимация
func void B_RandomPlayAniFRIENDLY(var c_npc slf)
{
    var int rnd_max;    rnd_max = 5;
    var int random;     random = (Hlp_Random(rnd_max) + 1);
    var string RandomAni;      RandomAni = "";
   
    Npc_ClearAIQueue(slf);
 
    if      (random == 1)    { RandomAni = "T_DONTKNOW";    }   //пожимает плечами
    else if (random == 2)    { RandomAni = "T_GREETCOOL";   }   //"Хехей" дружественно(типа молодец/круто)
    else if (random == 3)    { RandomAni = "R_SCRATCHEGG";  }   //чешет яйца
    else if (random == 4)    { RandomAni = "R_SCRATCHHEAD"; }   //чешет затылок
    else
    {
        //подкидывает яблоко и затем съедает
        if(Npc_HasItems(self,ItFo_Apple) == 0)
        {
            CreateInvItem(self,ItFo_Apple);
        };
        AI_UseItemToState(self,ItFo_Apple,0);
        AI_PlayAni(self,"T_FOOD_RANDOM_2");
        AI_UseItemToState(self,ItFo_Apple,-1);
    };
   
    if random <= 4
    {
        AI_PlayAni(slf,RandomAni);
    };
   
    Hlp_PrintConsole(Str_Format("       B_RandomPlayAniFRIENDLY [%s %i]: AI_PlayAni '%s' ",slf.name, slf.id, RandomAni));
};
Пост автоматически объединён:

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;
};
Пост автоматически объединён:

Daedalus:
...
if (self.aivar[AIV_StateTime] == 0)
    {
        if (C_AmIFRIENDLY(self, other) == true)
        {
            // Дружеские приветствия
            if      C_FurKihg (self, other)     { B_Say_nigga(self, other, "MILGREETINGS");}
            else if C_FurINNOS(self, other)     { B_Say_nigga(self, other, "PALGREETINGS"); }
            else                                { B_Say_FRIENDLYGREETINGS(self, other); };
            //B_Say (self, other, "$whereto");      // G2
        }
        ...
Пост автоматически объединён:

upd
сделал сборку. добавил в первый пост.
 
Последнее редактирование:

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.925
Благодарности
556
Баллы
275
там есть сценарий когда Булко остаётся жив. после этого есть диалоги с героем и Булко куда то его ведёт к реке. надо будет это перепроверить. может я что то путаю.
В неоф. обновлении, после убийства ледяного дракона, Сильвио мы убиваем (без добивания), а Буллко только оглушаем. Когда он встаёт, то говорит что-то типа "Чёрт! Сильвио мёртв.", после чего можно повторно сагрить его через диалог, либо договориться, чтобы он отвёл ГГ к стоянке остальных ОнД, которая там совсем рядом.
В любом случае, после избиения в Долине, Буллко НЕ будет первым атаковать ГГ.
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.832
Благодарности
6.716
Баллы
1.625
Пока разбирался с функциям Npc_IsPlayer. Добрался до того, если игрок трансформирован - то болванчик все равно как дурак говорит - убирайся.
Надо это тоже в исключения добавить.
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
1.990
Благодарности
967
Баллы
275
Добрался до того, если игрок трансформирован - то болванчик все равно как дурак говорит - убирайся.
а если овца блокирует проход, то что НПС должен делать?
Пост автоматически объединён:

если игрок трансформирован
такую проверку использовать?
Daedalus:
    if (Npc_IsPlayer(self) == true)        // нпс управляет герой
    && (self.guild > GIL_SEPERATOR_HUM)    // нпс не человек
 
Последнее редактирование:

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.832
Благодарности
6.716
Баллы
1.625
а если овца блокирует проход, то что НПС должен делать?
Вот как раз на овце я и тестировал))
Просто сам представь:
Стоишь перед овцой, а овца - тупое создание, и спокойно говоришь ей: "Дай пройти"
Как-то глупо получается))
Думаю просто мимо проходить...
такую проверку использовать?
Можно, но вроде в оригинале было, что-то на проверку того, что ГГ-оптимуспрайм.
Щас даже не вспомню в каких условиях это....
 

.Unreal

Участник форума
Регистрация
21 Июн 2012
Сообщения
686
Благодарности
91
Баллы
210
Ок)
В папке system\autorun удали файл _G2_B_MoveNpcWait.src и папку G2_B_MoveNpcWait
После этого проверь еще раз
MEG@VOLT, дико извиняюсь.. Времени и возможности пока не было проверить. С компом что то не так. Видимо совсем уже устал он. Надо наверно новый брать.. Сейчас иногда захожу в моды на готику 1 (они, как не странно, идут на ура, даже на макс. настройках). А вот моды на Готику 2 комп уже почти не тянет( И еще занят был.. созданием карты своей (выше уже писал об этом, на Дисы 2 - эту игру комп тоже пока еще тянет). Карту доделал, а вот с компом пока еще не разбирался. Кстати файлы эти не совместимы с модом "Возвращение Ксереса". Когда в последний раз пытался запустить этот мод (не допрошел его еще) - обнаружил, что он ругается на вдф файл B_MoveNpcWait.
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
1.990
Благодарности
967
Баллы
275
Щас даже не вспомню в каких условиях это....
попробуй так

Daedalus:
func void B_MoveNpc ()
{    
        if (Npc_IsPlayer(other) == true)   // НПС управляет игрок
        {
            if (other.guild > GIL_SEPERATOR_HUM)    { return; }; // НПС не человек
        };[
...
 
Сверху Снизу