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

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

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

MaGoth

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

Вложения

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

RPD

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

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Посмотри файл скрипта во вложении.
 

Вложения

  • ZS_MM_SummonedByPC.d.txt
    24,6 KB · Просмотры: 24

RPD

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

Daedalus:
    if(Npc_IsPlayer(other) == true)
    {
        var C_NPC scavenger; scavenger = Hlp_GetNpc(BogdanScavenger);
        var C_NPC keiler; keiler = Hlp_GetNpc(BogdanKeiler);
       
        PrintScreen(ConcatStrings("check ",self.name),1,-1,FONT_Screen,3);
        if(Hlp_IsValidNpc(scavenger) && (Npc_GetDistToNpc(scavenger,other) <= 500))
        {
            PrintScreen("c zsmmattack! ",1,-1,FONT_Screen,3);
            Npc_ClearAIQueue(scavenger);
            Npc_SetTarget(scavenger,self);
            B_ClearPerceptions(scavenger);
            AI_StartState(scavenger,ZS_MM_Attack,0,"");
        };
        if(Hlp_IsValidNpc(keiler) && (Npc_GetDistToNpc(keiler,other) <= 500))
        {
            PrintScreen("c zsmmattack!",1,-1,FONT_Screen,3);
            Npc_ClearAIQueue(keiler);
            Npc_SetTarget(keiler,self);
            B_ClearPerceptions(keiler);
            AI_StartState(keiler,ZS_MM_Attack,0,"");
        };
    };
Внедрил данный код в loop zs_mm_attack, zsattack и zs_mm_threaten.
 
Последнее редактирование:

RPD

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

Upd:
Вызывается почему -то везде, но не в диалогах. Причем я пробовал вызывать ее как просто в info, так и в выборках. Никак не хочет
 
Последнее редактирование:

RPD

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

Oxbow

Участник форума
Регистрация
22 Дек 2017
Сообщения
265
Благодарности
33
Баллы
200
Здраствуйте, я хочу создать зелье для того, чтобы лесное зверьё перестало быть агрессивным к ГГ. Подскажите, есть какой-то атрибут отвечающий за это?
 

Vlad_Torop

Участник форума
Регистрация
2 Май 2014
Сообщения
872
Благодарности
501
Баллы
245
Здраствуйте, я хочу создать зелье для того, чтобы лесное зверьё перестало быть агрессивным к ГГ. Подскажите, есть какой-то атрибут отвечающий за это?
За реагирование зверья на врагов отвечает B_MM_AssessEnemy.
Если тебе нужно,чтобы все зверье не игнорировало на ГГ то, как вариант в инстанции зелья пропиши переменную,типа:
Код:
instance ItPo_xxx(C_Item)
{
    name = NAME_Trank;
    mainflag = ITEM_KAT_POTIONS;
    flags = 0;
    visual = "xxx.3ds";
    material = MAT_GLAS;
    on_state[0] = Use_xxx;
    scemeName = "POTIONFAST";
    description = name;
};

func void Use_xxx()
{
    if(Npc_IsPlayer(self))
    {
        usexxx = true;
    };
};
а в B_MM_AssessEnemy сразу сверху
Код:
if(Npc_IsPlayer(other) && usexxx == true)
    {
        return;
    };
не забыв прописать переменную в сториглоб.
 
Сверху Снизу