Ejemplo n.º 1
0
        private void Navigate(Vector3 destination)
        {
            Vector3 playerPosition = me.Player.Coordinates;

            if (playerPosition.Distance(destination) < 1f)
            {
                previousPosition = Vector3.Zero;
                stuckMeter       = 0;
                return;
            }

            var waypoint = navEngine.GetNextPathNode(me.Player.Coordinates, destination);

            if (waypoint != null)
            {
                Vector3 end = waypoint.Value;

                Int64 ctmGuid = 0;
                me.ControlInterface
                .remoteControl
                .CGPlayer_C__ClickToMove(
                    me.Player.GetAddress(), ClickToMoveType.Move, ref ctmGuid, ref end, 1f);

                if (playerPosition.Distance(previousPosition) < 0.01f)
                {
                    stuckMeter++;
                    if (stuckMeter == stuckToleranceLimit)
                    {
                        me.ControlInterface
                        .remoteControl
                        .FrameScript__Execute("JumpOrAscendStart()", 0, 0);
                        stuckMeter = 0;
                    }
                }
                else
                {
                    stuckMeter = 0;
                }

                previousPosition = playerPosition;
            }
        }