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; }
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); }
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); }
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; }
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); }
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 } } }