|
Re: Скриптинг в Готике
По поводу регенерации жизни...
На основе сорцов из мода "Mana Reload" попытался добавить в мод Bumshak амулет, который регенерирует жизнь...
Немного подправил файл ZS_Recharger.d из оригинального "Mana Reload", т.е. вырезал зависимость от обученности к регенерации.
...Содержимое файла ZS_Recharger.d...
func void ZS_Recharger() { //Perception_Set_Normal(); B_ResetAll (self); B_ClearPerceptions (self); };
func int ZS_Recharger_loop() { if (Npc_GetStateTime(self) > 3) { Npc_SetStateTime (self, 4);
if (hero.attribute[ATR_HITPOINTS] < hero.attribute[ATR_HITPOINTS_MAX]) { hero.attribute[ATR_HITPOINTS]=hero.attribute[ATR_HITPOINTS]+10; }; };
return LOOP_CONTINUE; };
func void ZS_Recharger_end() { };
...
Прописал путь ZS_Recharger.d в gothic.src
...
Потом вставил эту функцию " AI_StartState(self,ZS_Recharger,0,""); " для амулета:
...
var int herousingspecam;
instance ITMI_GLUECKSBRINGER(C_Item) { name = "Вестник удачи"; mainflag = ITEM_KAT_MAGIC; flags = ITEM_MISSION | ITEM_AMULET; value = 0; visual = "ItAm_Prot_Fire_01.3ds"; material = MAT_STONE; on_equip = equip_itmi_gluecksbringer; on_unequip = unequip_itmi_gluecksbringer; wear = WEAR_EFFECT; effect = "SPELLFX_ITEMGLIMMER"; description = name; text[0] = "Обладатель этого Вестника удачи"; text[1] = "никогда не будет малодушным"; text[2] = "в бою."; inv_zbias = INVCAM_ENTF_AMULETTE_STANDARD; };
func void equip_itmi_gluecksbringer() { HEROUSINGSPECAM = TRUE; AI_StartState(self,ZS_Recharger,0,""); };
func void unequip_itmi_gluecksbringer() { HEROUSINGSPECAM = FALSE; };
...
Скомпилировал, проверил... Амулет не работает :( Пожалуйста помогите подправить ошибки... Хм.. можно ли как-то вставить функцию регенерации непосредственно в скрипт амулета, а не описывать функцию в отдельном файле?
|