Chciałem stworzyć rutynę, która by sprawiła, że NPC stałby z pochodnią.
Zrobiłem taki skrypt :
func void ZS_Pochodnia ()
{
Perception_Set_Normal();
B_ResetAll (self);
AI_SetWalkmode (self,NPC_WALK);
if (Npc_GetDistToWP (self,self.wp) > TA_DIST_SELFWP_MAX)
{
AI_GotoWP (self, self.wp);
};
if (Npc_HasItems (self, ItLsTorch) == 0)
{
CreateInvItem (self, ItLsTorch);
};
self.aivar[AIV_TAPOSITION] = NOTINPOS;
};
func int ZS_Pochodnia_Loop ()
{
if (Npc_IsOnFP (self, "STAND"))
{
AI_AlignToFP (self);
if (self.aivar[AIV_TAPOSITION] == NOTINPOS_WALK)
{
self.aivar[AIV_TAPOSITION] = NOTINPOS;
};
}
else if (Wld_IsFPAvailable(self,"STAND"))
{
AI_GotoFP (self, "STAND");
AI_StandUp (self);
AI_AlignToFP (self);
self.aivar[AIV_TAPOSITION] = NOTINPOS_WALK;
}
else
{
AI_AlignToWP (self);
if (self.aivar[AIV_TAPOSITION] == NOTINPOS_WALK)
{
self.aivar[AIV_TAPOSITION] = NOTINPOS;
};
};
if (self.aivar[AIV_TAPOSITION] == NOTINPOS)
{
AI_UseItemToState (self, ItLsTorch, 1);
self.aivar[AIV_TAPOSITION] = ISINPOS;
};
return LOOP_CONTINUE;
};
func void ZS_Pochodnia_End ()
{
AI_UseItemToState (self, ItLsTorch, -1);
};
Ale po wejściu do gry NPC stoi i nic nie robi (ale w ekwipunku ma pochodnię).
Co zrobić, aby działało to poprawnie ?