Esempio n. 1
0
        public void Walk(Enums.ConquerAngle Direction)
        {
            int xi = 0, yi = 0;

            switch (Direction)
            {
            case Enums.ConquerAngle.North: xi = -1; yi = -1; break;

            case Enums.ConquerAngle.South: xi = 1; yi = 1; break;

            case Enums.ConquerAngle.East: xi = 1; yi = -1; break;

            case Enums.ConquerAngle.West: xi = -1; yi = 1; break;

            case Enums.ConquerAngle.NorthWest: xi = -1; break;

            case Enums.ConquerAngle.SouthWest: yi = 1; break;

            case Enums.ConquerAngle.NorthEast: yi = -1; break;

            case Enums.ConquerAngle.SouthEast: xi = 1; break;
            }
            X += (ushort)xi;
            Y += (ushort)yi;
        }
Esempio n. 2
0
 public void Handle(byte[] Data, SocketClient Client)
 {
     Enums.ConquerAngle Direction = (Enums.ConquerAngle)(Data[8] % 8);
     Client.Character.Walk(Direction);
     Client.Character.Screen.Send(Data, true);
     Client.Character.Map.PopulateScreen(Client);
 }
Esempio n. 3
0
        public void JumpOver(ushort x, ushort y)
        {
            Enums.ConquerAngle angle = Core.Screen.GetFacing(Core.Screen.GetAngle(Original.X, Original.Y, Target.X, Target.Y));
            ushort             size  = (ushort)Core.Screen.GetDistance(x, y, Original.X, Original.Y);

            size *= 2;
            if (size > 18)
            {
                size = 18;
            }
            Jump(size, angle);
        }
Esempio n. 4
0
        public void Jump()
        {
            if (Core.Screen.GetDistance(Original.X, Original.Y, DestinationX, DestinationY) <= 5)
            {
                Threads.ActionThread.Actions.TryRemove(CurrentJumpAction.ActionID, out CurrentJumpAction);
                CurrentJumpAction = null;
                return;
            }

            Enums.ConquerAngle angle = Core.Screen.GetFacing(Core.Screen.GetAngle(Original.X, Original.Y, DestinationX, DestinationY));
            Maps.MapPoint      point = Packets.MovementPacket.CreateDirectionPoint(Original.X, Original.Y, (byte)angle);
            if (!Original.Map.ValidCoord(point.X, point.Y))
            {
                return;
            }
            const ushort size = 14;

            for (ushort i = size; i > 0; i--)
            {
                Maps.MapPoint npoint = Packets.MovementPacket.CreateDirectionPoint(point.X, point.Y, (byte)angle);
                npoint = new ProjectX_V3_Game.Maps.MapPoint(0, npoint.X, npoint.Y);

                if (Original.Map.ValidCoord(npoint.X, npoint.Y))
                {
                    point = npoint;
                }
                else
                {
                    break;
                }
            }
            ushort x = point.X;
            ushort y = point.Y;

            Packets.GeneralDataPacket general = new ProjectX_V3_Game.Packets.GeneralDataPacket(Enums.DataAction.Jump);
            general.Id        = Original.EntityUID;
            general.Data1Low  = x;
            general.Data1High = y;
            general.Data5     = uint.MaxValue;
            general.Data3Low  = Original.X;
            general.Data3High = Original.Y;
            general.Data4     = (uint)Original.Map.MapID;
            general.Timestamp = ProjectX_V3_Lib.Native.Winmm.timeGetTime();
            Original.SendToScreen(general, false, false);

            Original.X = x;
            Original.Y = y;
        }
Esempio n. 5
0
        public void Jump(ushort size, Enums.ConquerAngle angle)
        {
            Maps.MapPoint point = Packets.MovementPacket.CreateDirectionPoint(Original.X, Original.Y, (byte)angle);
            if (!Original.Map.ValidCoord(point.X, point.Y))
            {
                return;
            }

            for (ushort i = size; i > 0; i--)
            {
                Maps.MapPoint npoint = Packets.MovementPacket.CreateDirectionPoint(point.X, point.Y, (byte)angle);
                npoint = new ProjectX_V3_Game.Maps.MapPoint(0, npoint.X, npoint.Y);

                if (Original.Map.ValidCoord(npoint.X, npoint.Y))
                {
                    point = npoint;
                }
                else
                {
                    break;
                }
            }
            Jump(point.X, point.Y);
        }
Esempio n. 6
0
        private void Jump_Action()
        {
            if (Original.WasInArena)
            {
                Original.WasInArena = false;
                Target = null;
                Dispose();
                return;
            }
            if (Target == null)
            {
                return;
            }
            if (!Original.Alive)
            {
                Original.Revive();
                return;
            }
            bool CanFB = true;

            //if (Calculations.BasicCalculations.ChanceSuccess(95))
            //{
            if (Core.Screen.GetDistance(Original.X, Original.Y, Target.X, Target.Y) > 15)
            {
                Enums.ConquerAngle angle = Core.Screen.GetFacing(Core.Screen.GetAngle(Original.X, Original.Y, Target.X, Target.Y));
                ushort             size  = (ushort)Core.Screen.GetDistance(Target.X, Target.Y, Original.X, Original.Y);
                size /= 3;
                CanFB = false;
                Jump(size, angle);
            }
            else
            {
                ushort             size  = (ushort)ProjectX_V3_Lib.ThreadSafe.RandomGenerator.Generator.Next(10);
                Enums.ConquerAngle angle = (Enums.ConquerAngle)ProjectX_V3_Lib.ThreadSafe.RandomGenerator.Generator.Next(8);
                Jump(size, angle);
            }

            /*}
             * else
             * {
             *      Packets.GeneralDataPacket general = new ProjectX_V3_Game.Packets.GeneralDataPacket(Enums.DataAction.ChangeAction);
             *      general.Id = Original.EntityUID;
             *      general.Data1 = (uint)Enums.ActionType.Sit;
             *      general.Timestamp = ProjectX_V3_Lib.Native.Winmm.timeGetTime();
             *      Original.SendToScreen(general, false, false);
             * }*/
            if (Original.ArenaMatch != null)
            {
                if (!Original.ArenaMatch.MatchStarted)
                {
                    CanFB = false;
                }
            }
            if (Calculations.BasicCalculations.ChanceSuccess(ShootChance) && CanFB)
            {
                if (Core.Screen.GetDistance(Original.X, Original.Y, Target.X, Target.Y) <= 10)
                {
                    #region fb / ss
                    Shoot(Accuracy);
                    #endregion
                }
            }
        }