W G1 rutyny nazywały się
TA_GuardWheelOpen
TA_GuardWheelClosed
NPC musiał znajdować się przy kołowrocie połączonym z bramą i NPC operował tylko na kołowrocie
Liste rutyn w G2 masz w _Work\data\Scripts\Content\AI\Human\Ta.d ale z tego co widze nie masz tych rutyn więc bedziesz musiał dodać je sam te z G1 powinny pasować już ci je daje.
Do pliku Ta.d dopisz
func void TA_GuardWheelOpen (var int start_h, var int start_m, var int stop_h, var int stop_m, VAR string waypoint) {TA_Min (self, start_h,start_m, stop_h, stop_m, ZS_GuardWheelOpen, waypoint);};
func void TA_GuardWheelClosed (var int start_h, var int start_m, var int stop_h, var int stop_m, VAR string waypoint) {TA_Min (self, start_h,start_m, stop_h, stop_m, ZS_GuardWheelClosed, waypoint);};
ZAMYKANIE:
/************************************
* Wächter soll Drehrad bewachen *
* dass es zu bleibt *
************************************/
func void ZS_GuardWheelClosed()
{
PrintDebugNpc (PD_TA_FRAME,"ZS_GuardWheelClosed");
GuardPerception ();
AI_StandUp (self);
AI_SetWalkmode (self, NPC_WALK); // Walkmode für den Zustand
AI_GotoWP (self, self.wp); // Gehe zum Tagesablaufstart
if (Wld_GetMobState (self, "VWHEEL") == 0) // Tor offen?
{
PrintDebugNpc (PD_TA_CHECK, "...Tor offen!");
AI_UseMob (self, "VWHEEL", 1); // ...dann wieder zumachen!
AI_UseMob (self, "VWHEEL", -1); //und vom Mobsi abmelden
AI_AlignToWP (self);
};
};
func int ZS_GuardWheelClosed_Loop()
{
PrintDebugNpc (PD_TA_LOOP,"ZS_GuardWheelClosed_Loop");
if (Npc_GetDistToWP(self,self.wp)>200)
{
AI_SetWalkmode (self,NPC_RUN);
AI_GotoWP (self, self.wp);
return LOOP_CONTINUE;
}
else if (Npc_GetDistToNpc(self,hero) > HAI_DIST_GUARDPASSAGE_ATTENTION)
{
AI_AlignToWP (self);
};
AI_Wait (self,1);
return LOOP_CONTINUE;
};
func void ZS_GuardWheelClosed_End ()
{
PrintDebugNpc (PD_TA_FRAME,"ZS_GuardWheelClosed_End");
};
OTWIERANIE:
/************************************
* Wächter soll Drehrad bewachen *
* dass es auf bleibt *
************************************/
func void ZS_GuardWheelOpen()
{
PrintDebugNpc (PD_TA_FRAME,"ZS_GuardWheelOpen");
GuardPerception ();
AI_StandUp (self);
AI_SetWalkmode (self,NPC_WALK); // Walkmode für den Zustand
AI_GotoWP (self, self.wp); // Gehe zum Tagesablaufstart
if (Wld_GetMobState (self, "VWHEEL") == 1) // Tor geschlossen?
{
PrintDebugNpc (PD_TA_CHECK,"...Tor geschlossen!");
AI_UseMob (self, "VWHEEL", 0); // ...dann wieder aufmachen!
AI_UseMob (self, "VWHEEL", -1); //und vom Mobsi abmelden
AI_AlignToWP (self);
};
};
func int ZS_GuardWheelOpen_Loop()
{
PrintDebugNpc (PD_TA_LOOP,"ZS_GuardWheelOpen_Loop");
if (Npc_GetDistToWP(self,self.wp)>200)
{
AI_SetWalkmode (self,NPC_RUN);
AI_GotoWP (self, self.wp);
return LOOP_CONTINUE;
}
else if (Npc_GetDistToNpc(self,hero) > HAI_DIST_GUARDPASSAGE_ATTENTION)
{
AI_AlignToWP (self);
};
AI_Wait (self,1);
return LOOP_CONTINUE;
};
func void ZS_GuardWheelOpen_End ()
{
PrintDebugNpc (PD_TA_FRAME,"ZS_GuardWheelOpen_End");
};
Nie wiem czy nie wywali błedu w linijce z GuardPerception(); jest to funkcja nadająca odpowiednie zachowania bez tego NPC będzie tępy i będzie trzeba dać coś z G2 ale spokojnie w czasie testów możesz to wywalić jak nei ebdzie działać.