|
Re: М: Скриптинг в Готике
Я изменил немного участок функции func int B_SelectSpell для мага: * * *if((slf.guild == GIL_KDF) || (slf.aivar[AIV_MagicUser] == MAGIC_ALWAYS) || (slf.ID == 100) || (slf.ID == 4) || (slf.ID == 24)) * * *{ * * * * * *if(Npc_GetDistToNpc(slf,oth) > FIGHT_DIST_MELEE) * * * * * *{ * * * * * *if(Npc_HasItems(slf,ItRu_Concussionbolt) == 0) * * * * * *{ * * * * * * * * *CreateInvItems(slf,ItRu_Concussionbolt,1); * * * * * *}; * * * * * *if(Npc_HasItems(slf,ItRu_InstantFireball) == 0) * * * * * *{ * * * * * * * * *CreateInvItems(slf,ItRu_InstantFireball,1); * * * * * *}; * * * * * *if(Npc_HasItems(slf,ItRu_Deathball) == 0) * * * * * *{ * * * * * * * * *CreateInvItems(slf,ItRu_Deathball,1); * * * * * *} * * * * * *else if(C_NpcHasAttackReasonToKill(self)) * * * * * *{ * * * * * * * * *if((self.flags == NPC_FLAG_IMMORTAL) || (Hlp_GetInstanceID(other) == Hlp_GetInstanceID(Raven))) * * * * * * * * *{ * * * * * * * * * * * *B_ReadySpell(slf,SPL_Deathball,SPL_COST_Deathball ); * * * * * * * * *} * * * * * * * * *else * * * * * * * * *{ * * * * * * * * * * * *B_ReadySpell(slf,SPL_InstantFireball,SPL_COST_Ins tantFireball); * * * * * * * * *}; * * * * * * * * *return TRUE; * * * * * *} * * * * * *else * * * * * *{ * * * * * * * * *B_ReadySpell(slf,SPL_ConcussionBolt,SPL_COST_Conc ussionbolt); * * * * * * * * *return TRUE; * * * * * *}; * * * * * * * * *}; * * * * * * * * * * * * * * *if(slf.attribute[ATR_HITPOINTS] < 500) * * * * * *{ * * * * * * * * *if(Npc_HasItems(slf,ItRu_FullHeal) == 0) * * * * * * * * *{ * * * * * * * * *CreateInvItems(slf,ItRu_FullHeal,1); * * * * * * * * *} * * * * * * * * *else * * * * * * * * *{ * * * * * * * * *B_ReadySpell(slf,SPL_FullHeal,SPL_Cost_FullHeal); * * * * * * * * *return TRUE; * * * * * * * * *}; * * * * * *}; * * * * * * * * *}; Цель - заставить мага драться вблизи оружием ближнего боя. Появление руны лечения и кастование лечения должны происходить на любой дистанции 1).Переход на оружие ближнего боя работает, а обратный - нет, но в файле B_select_weapon.d я не нашел ничего, что должно этому помешать. 2). После достижения указанного минимума здоровья выбор руны лечения происходит только в ближнем бою (а факт её появления в инвентаре в любом случае), но NPC не кастует лечение, а замирает. Если же уйти от него, а потом обнажить оружие, то его угрозы приводят к кастованию лечения с последующими обнажением меча и боем. Я очень прошу указать мне на возможные ошибки и причины, которых я не вижу. На мой вопрос о том, что функция регенерации жизни/ маны с кольцами и амулетами в Г2 работает, а с доспехами - нет - прошу не отвечать. Причина очевидна - моя собственная глупость. Всё работает... Спасибо.
|