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

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

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

C_ITEMREACT

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.106
Благодарности
1.052
Баллы
315
В туторе VAM указано что класс C_ITEMREACT не используется, но это ведь не значит что он не работает? Функция Npc_StartItemReactModules(), как я понял должна работать с ним в тандеме, однако нигде не могу найти хоть каких-нибудь зацепок. Может кто-нибудь все же работал с этим классом?


Код:
CLASS C_ITEMREACT
{
    VAR INT        npc;
    VAR INT        trade_item;
    VAR INT        trade_amount;
    VAR INT        requested_cat;
    VAR INT        requested_item;
    VAR INT        requested_amount;
    VAR FUNC    reaction;
};
npc - инстанция нпс
requested_item - это то что проверится у героя в наличие. для тестов я указывал руду.
в requested_amount будет записано кол-во requested_item
reaction
это функция которая запустится. если функция вернётся 1 то будет проиграна анимация. если 0 то не будет.

***

инстанции можно "индивидуальные" создавать. а можно сделать какую универсальную инстанцию про что нибудь.

простенький пример для "продажи" доспехов
Daedalus:
instance Trade_ARMOR_PSI(C_ITEMREACT)
{
    trade_amount     = 1;   
    requested_item     = ItMiNugget;                // у героя
    //requested_amount = 1;                        // факт кол-во у героя. будет перезаписано
    reaction         = Trade_ARMOR_PSI_Check;
};

func int Trade_ARMOR_PSI_Check()
{
      Npc_RemoveInvItems    (hero, Trade_ARMOR.requested_item, item.value);
    CreateInvItem (hero, Trade_ARMOR_PSI.trade_item);
    AI_EquipArmor(hero,item);


    return 1;
};

вызываю в диалоге
Daedalus:
    Trade_ARMOR_PSI.trade_item =   TPL_ARMOR_M;
    Trade_ARMOR_PSI.npc =   Hlp_GetInstanceID(self);
    Npc_StartItemReactModules(self,hero,ItMiNugget);

***

у меня иногда НПС и герой синхроно проигрывают анимацию. иногда нет. практического полезного применения придумать не смог.
 
Последнее редактирование:
Сверху Снизу