Показать сообщение отдельно
Старый 16.01.2005, 15:29   #67
B_Wolf

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

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

...

Скомпилировал, проверил... Амулет не работает :( Пожалуйста помогите подправить ошибки...
Хм.. можно ли как-то вставить функцию регенерации непосредственно в скрипт амулета, а не описывать функцию в отдельном файле?
Ответить с цитированием