public override void OnUpdate() { if (WorldUtils.CalculateDistance(personalAI.client.UserChar, targetSpot) < PersonalAI.MOVE_TO_SPOT_DISTANCE) { personalAI.SwitchToPreviousInStack(); } else if (DateTime.Now - lastSend >= TimeSpan.FromMilliseconds(1000)) { client.SendMoveToCommand(targetSpot.x, targetSpot.y, targetSpot.z); lastSend = DateTime.Now; } }
public override void OnUpdate() { if (DateTime.Now - lastSend < TimeSpan.FromMilliseconds(1000)) { return; } if (WorldUtils.CalculateDistance(personalAI.client.UserChar, target.live) > PersonalAI.MOVE_TO_TARGET_DISTANCE) { client.SendMoveToCommand(target.live.X, target.live.Y, target.live.Z); lastSend = DateTime.Now; } }
/// <summary> /// Looks for a valid target to attack in range. /// </summary> /// <returns>Actor that is in rage of attack.</returns> public ActorScript LookForTarget(int range) { var query = from npc in SM.npcActorManager.npcProperties let dist = WorldUtils.CalculateDistance(actor.live, npc.Key) where dist <= SEARCH_TARGET_DISTANCE && !npc.Key.Dead && npc.Key.Attackable orderby dist select new { npc.Value.actorScript, dist }; var closest = query.FirstOrDefault(); return(closest?.actorScript); }
public override void OnUpdate() { // check for attackers or look for target if (DateTime.Now - lastCheck > checkInterval) { lastCheck = DateTime.Now; if (CheckForTargetsAndSwitch()) { return; } } // check for destination if (WorldUtils.CalculateDistance(personalAI.client.UserChar, targetSpot) < PersonalAI.MOVE_TO_SPOT_DISTANCE) { personalAI.SwitchToPreviousInStack(); } else if (DateTime.Now - lastSend >= TimeSpan.FromMilliseconds(200)) { client.SendMoveToCommand(targetSpot.x, targetSpot.y, targetSpot.z); lastSend = DateTime.Now; } }