Example #1
0
 public static void MoveSpeedChange(GameClient client, double newMoveSpeed)
 {
     if (Data.CheckPositionCheatSpeed)
     {
         long          startMoveTicks = ClientCmdCheck.GetClientTicks(client, 0L);
         ClientExtData clientExtData  = client.ClientData.ClientExtData;
         lock (clientExtData)
         {
             if (client.ClientData.MapCode == clientExtData.MapCode)
             {
                 if (!clientExtData.RunStoryboard)
                 {
                     if (clientExtData.EndMoveTicks > clientExtData.StartMoveTicks)
                     {
                         long   elapseTicks = startMoveTicks - clientExtData.StartMoveTicks;
                         double factor      = (double)elapseTicks / (double)(clientExtData.EndMoveTicks - clientExtData.StartMoveTicks);
                         if (factor < ClientCmdCheck.MinDistanceFactor)
                         {
                             int dx = (int)((double)(clientExtData.ToX - clientExtData.FromX) * (1.0 - factor));
                             int dy = (int)((double)(clientExtData.ToY - clientExtData.FromY) * (1.0 - factor));
                             if (Math.Abs(dx) + Math.Abs(dy) > 50)
                             {
                                 clientExtData.FromX = (client.ClientData.PosX = clientExtData.ToX - dx);
                                 clientExtData.FromY = (client.ClientData.PosY = clientExtData.ToY - dy);
                                 dx = clientExtData.ToX - clientExtData.FromX;
                                 dy = clientExtData.ToY - clientExtData.FromY;
                                 clientExtData.MaxDistance2   = dx * dx + dy * dy;
                                 clientExtData.StartMoveTicks = startMoveTicks;
                                 clientExtData.ReservedTicks  = 0L;
                                 if (newMoveSpeed >= 0.05)
                                 {
                                     clientExtData.MoveSpeed    = newMoveSpeed;
                                     clientExtData.EndMoveTicks = startMoveTicks + (long)(Math.Pow((double)clientExtData.MaxDistance2, 0.5) / (ClientCmdCheck.MoveSpeedPerMS * clientExtData.MoveSpeed));
                                 }
                                 else
                                 {
                                     clientExtData.StartMoveTicks = startMoveTicks;
                                     clientExtData.FromX          = client.ClientData.PosX;
                                     clientExtData.FromY          = client.ClientData.PosY;
                                 }
                             }
                             else
                             {
                                 clientExtData.StartMoveTicks = startMoveTicks;
                                 clientExtData.ToX            = client.ClientData.PosX;
                                 clientExtData.ToY            = client.ClientData.PosY;
                             }
                         }
                         else
                         {
                             clientExtData.StartMoveTicks = startMoveTicks;
                             clientExtData.ToX            = client.ClientData.PosX;
                             clientExtData.ToY            = client.ClientData.PosY;
                         }
                     }
                 }
             }
         }
     }
 }
Example #2
0
 public static void ClientStopMove(GameClient client, int x, int y, long startMoveTicks = 0L)
 {
     if (Data.CheckPositionCheat)
     {
         startMoveTicks = ClientCmdCheck.GetClientTicks(client, startMoveTicks);
         bool resetPos = ClientCmdCheck.MoveTo(client, x, y, startMoveTicks, true);
         if (resetPos)
         {
             ClientCmdCheck.ResetClientPosition(client, client.ClientData.PosX, client.ClientData.PosY);
         }
     }
 }
Example #3
0
        public static void ClientAction(GameClient client, long nowTicks, long reserveTicks)
        {
            ClientExtData clientExtData = client.ClientData.ClientExtData;

            lock (clientExtData)
            {
                if (client.ClientData.MapCode == clientExtData.MapCode)
                {
                    clientExtData.CanMoveTicks = ClientCmdCheck.GetClientTicks(client, 0L) + reserveTicks;
                }
            }
        }