Показать сообщение отдельно
Старый 23.02.2009, 12:33   #2162
niccolo

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

По умолчанию 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 работает, а с доспехами - нет - прошу не отвечать. Причина очевидна - моя собственная глупость. Всё работает...
Спасибо.
Ответить с цитированием