public override void update() { if (!this.isStarted()) { WayNet wn = mNPC.getWayNet(); if (wn == null) { Log.Logger.log(Log.Logger.LOG_WARNING, "NPC " + mNPC.Name + " | " + mNPC.ID + ": GOTO WP: WayNet was not found: " + mNPC.Map); stopState(); return; } Waypoints.WayPoint startWP = wn.getNearestWaypoint(mNPC.Position); endWaypoint = mNPC.getWayNet().getWaypoint(endWP); if (startWP == null) { Log.Logger.log(Log.Logger.LOG_WARNING, "NPC " + mNPC.Name + " | " + mNPC.ID + ": GOTO WP: NO WP near Player was found!"); stopState(); return; } else if (endWaypoint == null) { Log.Logger.log(Log.Logger.LOG_WARNING, "NPC " + mNPC.Name + " | " + mNPC.ID + ": GOTO WP: End WP was not found: " + endWP + "!"); stopState(); return; } if (endWaypoint == startWP) { Log.Logger.log(Log.Logger.LOG_INFO, "NPC " + mNPC.Name + " | " + mNPC.ID + ": GOTO WP: Start and END-WP are the same!"); stopState(); return; } route = mNPC.getWayNet().getWayRoute(startWP, endWaypoint); mNPC.getAI().lastPosUpdate = 0; if (route == null)//No route found! { stopState(); return; } } if (mNPC.gotoPosition(route.Waypoints[wpIndex].Position, 100)) { wpIndex += 1; if (route.Waypoints.Length <= wpIndex) { stopState(); } } }
public static void Init() { WayNets.Add("NEWWORLD\\NEWWORLD.ZEN", WayNet.loadFromFile("newworld")); Player.sOnPlayerConnects += new Events.PlayerEventHandler(playerConnects); AI_Events.Init(); }
public static FreeOrWayPoint getWaypoint(String map, String wp) { WayNet wn = null; WayNets.TryGetValue(map.ToUpper(), out wn); if (wn == null) { return(null); } return(wn[wp]); }