|
Re: М: Скриптинг в Готике
Вот небольшой пример (для 1 готики) как определить одетые на ГГ доспехи и одеть некого НПЦ в такие же (к слову, можно определять не только доспехи, но и носимое оружие) Итак:
var C_NPC AlbinoTmp; *//Это переменная для нашего "некого" нпц var C_Item AlbinoItem; //Это для получения инстанции предмета var int AlbinoArmor; * * *//Это для доспехов - фактически та же инстанция но в цифровом представлении.
if (Npc_HasEquippedArmor(hero)) { AlbinoItem=Npc_GetEquippedArmor(hero); * * * //Сначала получаем имя одетой броньки (ф-ция Npc_GetEquippedArmor возвращает C_Item) AlbinoArmor = Hlp_GetInstanceID(AlbinoItem); //Потом извлекаем её идшник - геморой, но иначе не выходит. Грубо говоря конвертируем C_item в integer. * * * * * * };
if (AlbinoArmor!=0) { * * * CreateInvItem(AlbinoTmp,AlbinoArmor); //Если ГГ одет в броню - т.е. AlbinoArmor не ноль, то создаем у нашего *AlbinoTmp такую же броньку, обратите внимание - используется переменная типа int a НЕ С_item. AI_EquipBestArmor(AlbinoTmp); * * * * * *//Экипируем лучшую броню. * * * };
Что то вроде этого что ли?
Касательно n1 - в данном случае имеется в виду не id предмета, а *именно ссылка на инстанцию предмета. Не буд врать, я не знаю, но, кажется, id предмета можно получить только через Hlp_GetInstanceID (c_item item).
Уж не знаю как, но в случае с предметами вполен можно написать CreateInvItem(hero,ItFoBeer); (где *ItFoBeer - instance ItFoBeer(C_Item)) и ошибки не будет ;)
Если есть желание можете попробовать другой, "честный" метод: var int AlbinoBeer; AlbinoBeer = Hlp_GetInstanceID(ItFoBeer); CreateInvItem(hero,AlbinoBeer);
По идее, должны работать оба.
|