Показать сообщение отдельно
Старый 16.10.2007, 16:44   #1887
halogene

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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);

По идее, должны работать оба.
Ответить с цитированием