case MessageType.shoot: { int ProjectileNumber = message.GetInteger(7); int step = message.GetInteger(8); var speed = weapons[player.primaryWeapon].speed; long now = long.Parse(getTime()); if (player.lastShot[ProjectileNumber] != 0) { var timeis = "Delay: " + (now - player.lastShot[ProjectileNumber]); Console.WriteLine("Delay:" + timeis); if (player.shotStep == 0) { player.shotStep = step; } if (step > player.shotStep) { player.shotStep++; if (weapons != null) { var math = now - (player.lastShot[ProjectileNumber]); if (math <= speed/1.1) { Console.WriteLine("disconnected" + math); player.Send(MessageType.disconnect.ToString("D"), "You have been kicked, out of sync " + math + "ms ws" + speed); player.Disconnect(); } else { var playerX = message.GetInteger(2); var playerY = message.GetInteger(3); var bulletX = message.GetInteger(5); var bulletY = message.GetInteger(6); Console.WriteLine("shot"); Broadcast(MessageType.shoot.ToString("D"), player.Id, player.angle, player.X, player.Y, player.primaryWeapon, message.GetInteger(5), message.GetInteger(6)); } } } } player.lastShot[ProjectileNumber] = now; break; }