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

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

Вопросы по скриптингу

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
  • Первое сообщение
  • #1
Прежде чем задавать вопросы, ознакомьтесь с документацией..
1) Читать онлайн
2) Архив с офлайн-версией(chm) во вложении
 

Вложения

  • Vam_tutor.rar
    171,6 KB · Просмотры: 574
Последнее редактирование модератором:

Silvwork

Участник форума
Регистрация
14 Мар 2015
Сообщения
168
Благодарности
1
Баллы
180
Формула: уровень монстра умножить на XP_PER_VICTORY (см. B_GiveDeathXP). Можешь менять индивидуальные уровни монстров или общую константу XP_PER_VICTORY (10 по умолчанию).
Спасибо, у меня получилось найти. Сейчас возникла проблема с тем что проект не компилируется обратно, точнее много ошибок. Пробую делачть через GothicSourcer v3.15. (Версия готики стимовская). Мне нужно использовать какой-то другой софт?
 

D36


Модостроитель
Регистрация
3 Дек 2014
Сообщения
2.191
Благодарности
3.376
Баллы
485
Спасибо, у меня получилось найти. Сейчас возникла проблема с тем что проект не компилируется обратно, точнее много ошибок. Пробую делачть через GothicSourcer v3.15. (Версия готики стимовская). Мне нужно использовать какой-то другой софт?
Ошибки - исправлять. Или не декомпилировать и найти чистые исходники.
А если делаешь мелкие точечные изменения, то лучше просто писать их в текстовых .d файлах и подкидывать в system/autorun, чтобы их подхватывал Юнион.

Например, понижение множителя опыта с 10 до 5:
Daedalus:
const int XP_PER_VICTORY = 10;

Или повышение уровня овцы:
Daedalus:
test(Mst_Default_Sheep && Sheep)
{
    instance Sheep(Mst_Default_Sheep)
    {
        Sheep_Old();
        level = 666;
    };
};
 
Последнее редактирование:

Silvwork

Участник форума
Регистрация
14 Мар 2015
Сообщения
168
Благодарности
1
Баллы
180
А если делаешь мелкие точечные изменения, то лучше просто писать их в текстовых .d файлах и подкидывать в system/autorun, чтобы их подхватывал Юнион.
Спасибо, я понял что не уточнил, что параметр пытаюсь поменять для Г1, а там соответственно строка по другому называется. Сейчас скопировал из декомпилированного файла и все заработало

Я таким образом могу подредактировать любой параметр который найду? Например параметров у монстров
 
Последнее редактирование:

RPD

Участник форума
Регистрация
13 Ноя 2023
Сообщения
118
Благодарности
3
Баллы
40
Всегда было интересно как реализовано разделение на ветви в расширенном инвентаре?
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.862
Благодарности
6.742
Баллы
1.625
Я таким образом могу подредактировать любой параметр который найду? Например параметров у монстров
Да
Всегда было интересно как реализовано разделение на ветви в расширенном инвентаре?
mainflag у каждого из предметов
 

Oxbow

Участник форума
Регистрация
22 Дек 2017
Сообщения
265
Благодарности
33
Баллы
200
Здраствуйте подскажите, что делает:
self.aivar[AIV_LastFightComment] = TRUE;
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.003
Благодарности
971
Баллы
295
self.aivar[AIV_LastFightComment] = TRUE;
реплика перед началом диалога с НПС, если перед между ним и и героем была драка
Daedalus:
// ************************************************************
//                         ToughGuy - NEWS
// ************************************************************

INSTANCE DIA_ToughGuy_NEWS (C_INFO)
{
    //npc        = alle;    //wird in ZS_Talk zugeordnet
    nr            = 1;
    condition    = DIA_ToughGuy_NEWS_Condition;
    information    = DIA_ToughGuy_NEWS_Info;
    permanent    = TRUE;
    important     = TRUE;
};                       

FUNC INT DIA_ToughGuy_NEWS_Condition()
{
    if (Npc_IsInState(self, ZS_Talk))
    && (self.aivar[AIV_LastFightAgainstPlayer] != FIGHT_NONE)
    && (self.aivar[AIV_LastFightComment] == FALSE)
    {
        return TRUE;
    };
};

FUNC VOID DIA_ToughGuy_NEWS_Info()
{   
    if (self.aivar[AIV_LastFightAgainstPlayer] == FIGHT_LOST)
    {
        B_Say (self,other,"$TOUGHGUY_ATTACKLOST"); //Okay, okay, du bist der Bessere von uns beiden! Was willst du?
    }
    else if (self.aivar[AIV_LastFightAgainstPlayer] == FIGHT_WON)
    {
        B_Say (self,other,"$TOUGHGUY_ATTACKWON"); //(selbstgefдllig) Ich nehme an, du hast mittlerweile begriffen, wer von uns beiden der Stдrkere ist... Was willst du?
    }
    else //FIGHT_CANCEL
    {
        B_Say (self,other,"$TOUGHGUY_PLAYERATTACK"); //Ich dachte, du wolltest dich mit mir anlegen. Hast du's dir anders ьberlegt? Willst doch lieber REDEN, was? (lacht)
    };
    
    // ------ AIVAR resetten ------
    self.aivar[AIV_LastFightComment] = TRUE;

    
    //---------Skinner Addon Hack-----------------
    if Hlp_GetInstanceID (self) == Hlp_GetInstanceID (Skinner)
    {
        AI_Output (self, other, "DIA_Addon_Skinner_ToughguyNews_08_00"); //... ich will aber nicht mit dir reden ...

        AI_StopProcessInfos (self);
        B_Attack (self, other, AR_NONE, 1);
    };
};



// *************************************************************************
// -------------------------------------------------------------------------

func void B_AssignToughGuyNEWS (var C_NPC slf)
{
    DIA_ToughGuy_NEWS.npc = Hlp_GetInstanceID(slf);
};
 

Oxbow

Участник форума
Регистрация
22 Дек 2017
Сообщения
265
Благодарности
33
Баллы
200
реплика перед началом диалога с НПС, если перед между ним и и героем была драка
Понятно, спасибо, значит не то)
Не подскажите, скрипт, чтобы НПС в диалоге достал оружие (не нападая)?
 

RPD

Участник форума
Регистрация
13 Ноя 2023
Сообщения
118
Благодарности
3
Баллы
40
Не подскажите темы или статьи на тему редактирования анимаций в .mds файлах?
 

RPD

Участник форума
Регистрация
13 Ноя 2023
Сообщения
118
Благодарности
3
Баллы
40
Такой вопрос: я создал несколько инстанций нпс-питомцев с aivar,[AIV_IsPet] которые по логике должны всегда ходить за героем и атаковать любого монстра (опционально: монстра и человека), который подойдет к нему слишком близко. Пытался прописать в b_mm_assessenemy, но, как я понимаю, функция будет вызываться только на врагов, с которыми у него отношения att hostile. Пробовал с settempattitude - ничего не изменилось, только еще и героя он воспринимает противником. Как это лучше всего реализовать?
 
Последнее редактирование:

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Можно попробовать использовать
которые по логике должны всегда ходить за героем и атаковать любого монстра (опционально: монстра и человека), который подойдет к нему слишком близко.
Просто подойдёт или будет находится в режиме атаки, целью которой является ГГ?
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Не знаю, можно ли такое реализовать. Если бы речь шла о неписях в боевом режиме (монстры всегда находятся в боевом режиме), то можно было бы задействовать восприятие вооружённого непися PERC_ASSESSFIGHTER. Это активное восприятие, срабатывающее на неписей в боевом режиме и возвращающее ссылки на таких неписей. В скриптах Г2 это восприятие, кажется, не используется, но движок его, наверное, ещё поддерживает.

В мод-фиксе у меня призванные создания ведут активный поиск атакующих ГГ неписей с помощью периодического вызова функции Wld_DetectNpc. Но можно ли её использовать вообще без указания инстанции, состояния или гильдии непися, которого нужно обнаружить, я не знаю. Нужно пробовать.
 

RPD

Участник форума
Регистрация
13 Ноя 2023
Сообщения
118
Благодарности
3
Баллы
40
Не знаю, можно ли такое реализовать. Если бы речь шла о неписях в боевом режиме (монстры всегда находятся в боевом режиме), то можно было бы задействовать восприятие вооружённого непися PERC_ASSESSFIGHTER. Это активное восприятие, срабатывающее на неписей в боевом режиме и возвращающее ссылки на таких неписей. В скриптах Г2 это восприятие, кажется, не используется, но движок его, наверное, ещё поддерживает.

В мод-фиксе у меня призванные создания ведут активный поиск атакующих ГГ неписей с помощью периодического вызова функции Wld_DetectNpc. Но можно ли её использовать вообще без указания инстанции, состояния или гильдии непися, которого нужно обнаружить, я не знаю. Нужно пробовать.
Можно ссылку на данный мод фикс? Я не помню, вроде что-то ставил себе
 

RPD

Участник форума
Регистрация
13 Ноя 2023
Сообщения
118
Благодарности
3
Баллы
40
Сверху Снизу