Rutyna trzymania pochodni. 2079 2

O temacie

Autor Star wars

Zaczęty 4.12.2014 roku

Wyświetleń 2079

Odpowiedzi 2

Star wars

Star wars

Użytkownicy
posty19
Propsy3
  • Użytkownicy
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 ?
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
AI_UseItemToState nie działa z ItlsTorch. Kod odopwiedzialny za obsługę tego konkretnego itemu jest w silniku, nie skryptach. Żeby zrobić taką rutynę, trzeba stworzyć własną pochodnię która wygląda i zachowuje się jak oryginalna, ale jest normalnie zaprogramowana w skryptach. Kiedyś zrobiłem to do SoulFire.

nocnymocny

nocnymocny

Użytkownicy
posty65
Propsy6
Profesjabrak
  • Użytkownicy
 
https://www.youtube.com/watch?v=5HdbLar5Thg


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry