|
Re: Скриптинг в Готике
Vam, еще раз великий респект тебе, за "Уроки скриптологии", в особенности за статью "Уроки скриптологии (Ответ #115)" - Тема первая: Глобальные константы.
Итак просмотрев данный урок, я заметил очень интересные... // Индексы атрибутов НПС const int ATR_HITPOINTS * * * * * * * * *= 0; //Текущая жизнь const int ATR_HITPOINTS_MAX * * * * * *= 1; //Макс. жизнь const int ATR_MANA * * * * * * * * * * * *= 2; //Текущая мана const int ATR_MANA_MAX * * * * * * * * *= 3; //Макс. мана const int ATR_STRENGTH * * * * * * * * *= 4; //Сила const int ATR_DEXTERITY * * * * * * * * *= 5; //Ловкость const int ATR_REGENERATEHP * * * * * *= 6; //Регенерация жизни в секунду const int ATR_REGENERATEMANA * * *= 7; //Регенерация маны в секунду
И тут на меня нашло озарение! Оказывается все совершенное просто!
Через пол часа я изготовил следующий предмет:
instance ITAM_HEALTHBRINGER(C_Item) { * * *name = "Милость Аданоса"; * * *mainflag = ITEM_KAT_MAGIC; * * *flags = ITEM_MISSION | ITEM_AMULET; * * *value = 0; * * *visual = "ItAm_Hp_01.3ds"; * * *material = MAT_STONE; * * * * * *on_equip * * *= * * *Equip_ITMI_HEALTHBRINGER; * * *on_unequip * * *= * * *UnEquip_ITMI_HEALTHBRINGER; * * * * * *wear = WEAR_EFFECT; * * *effect = "SPELLFX_ITEMGLIMMER"; * * *description = name; * * *text[0] = "Милость Аданоса"; * * *text[1] = "будет оберегать тебя в бою."; * * *inv_zbias = INVCAM_ENTF_AMULETTE_STANDARD; };
func void Equip_ITMI_HEALTHBRINGER () { * * *self.attribute[ATR_REGENERATEHP] = 1; };
func void UnEquip_ITMI_HEALTHBRINGER () { * * *self.attribute[ATR_REGENERATEHP] = 0; };
Амулет регенерации жизни... И не нужно никаких громоздкий скриптов с летающим подзарядником, или проверки присутствия амулета у НПЦ (http://forums.gothic.ag/showthread.php?&s=35&t=1105030050&start=75) :)
Амулет просто работает :)
Далее вставляем код амулета в IT_Amulette.d, компилируем... И вызываем любыми доступными средствами, например через MARVIN. Insert ITAM_HEALTHBRINGER
|