From 389b7dfc0ac2d86a60fb307b238799106c55b3c2 Mon Sep 17 00:00:00 2001 From: js6pak Date: Tue, 21 Nov 2023 19:14:58 +0100 Subject: [PATCH] Drop the RpcSnapTo anticheat --- .../Components/InnerCustomNetworkTransform.cs | 49 ++----------------- src/Impostor.Server/Net/State/Game.Data.cs | 5 +- src/Impostor.Server/Net/State/Game.cs | 2 - 3 files changed, 9 insertions(+), 47 deletions(-) diff --git a/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.cs b/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.cs index 294e17a..f7b145d 100644 --- a/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.cs +++ b/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.cs @@ -8,7 +8,6 @@ using Impostor.Api.Net.Custom; using Impostor.Api.Net.Inner; using Impostor.Api.Net.Messages.Rpcs; using Impostor.Server.Events.Player; -using Impostor.Server.Net.Inner.Objects.ShipStatus; using Impostor.Server.Net.State; using Microsoft.Extensions.Logging; using Microsoft.Extensions.ObjectPool; @@ -25,7 +24,6 @@ namespace Impostor.Server.Net.Inner.Objects.Components private readonly ObjectPool _pool; private ushort _lastSequenceId; - private AirshipSpawnState _spawnState; public InnerCustomNetworkTransform(ICustomMessageManager customMessageManager, Game game, ILogger logger, InnerPlayerControl playerControl, IEventManager eventManager, ObjectPool pool) : base(customMessageManager, game) { @@ -103,51 +101,19 @@ namespace Impostor.Server.Net.Inner.Objects.Components Rpc21SnapTo.Deserialize(reader, out var position, out var minSid); - if (Game.GameNet.ShipStatus is InnerAirshipStatus airshipStatus) + if (Game.GameNet.ShipStatus is { } shipStatus) { - // As part of airship spawning, clients are sending snap to -25 40 to move themself out of view - if (_spawnState == AirshipSpawnState.PreSpawn && Approximately(position, airshipStatus.PreSpawnLocation)) - { - _spawnState = AirshipSpawnState.SelectingSpawn; - return true; - } - - // Once the spawn has been selected, the client sends a second snap to the select spawn location - if (_spawnState == AirshipSpawnState.SelectingSpawn && airshipStatus.SpawnLocations.Any(location => Approximately(position, location))) - { - _spawnState = AirshipSpawnState.Spawned; - return true; - } - } - - if (!await ValidateCanVent(call, sender, _playerControl.PlayerInfo)) - { - return false; - } - - if (Game.GameNet.ShipStatus == null) - { - // Cannot perform vent position check on unknown ship statuses - if (await sender.Client.ReportCheatAsync(call, "Failed vent position check on unknown map")) - { - return false; - } - } - else - { - var vents = Game.GameNet.ShipStatus!.Data.Vents.Values; + var vents = shipStatus.Data.Vents.Values; var vent = vents.SingleOrDefault(x => Approximately(x.Position, position + ColliderOffset)); - if (vent == null) + if (vent != null) { - if (await sender.Client.ReportCheatAsync(call, "Failed vent position check")) + if (!await ValidateCanVent(call, sender, _playerControl.PlayerInfo)) { return false; } - } - else - { + await _eventManager.CallAsync(new PlayerVentEvent(Game, sender, _playerControl, vent)); } } @@ -169,11 +135,6 @@ namespace Impostor.Server.Net.Inner.Objects.Components _pool.Return(playerMovementEvent); } - internal void OnPlayerSpawn() - { - _spawnState = AirshipSpawnState.PreSpawn; - } - private static bool SidGreaterThan(ushort newSid, ushort prevSid) { var num = (ushort)(prevSid + (uint)short.MaxValue); diff --git a/src/Impostor.Server/Net/State/Game.Data.cs b/src/Impostor.Server/Net/State/Game.Data.cs index 000ffd1..2761893 100644 --- a/src/Impostor.Server/Net/State/Game.Data.cs +++ b/src/Impostor.Server/Net/State/Game.Data.cs @@ -355,7 +355,10 @@ namespace Impostor.Server.Net.State { foreach (var player in _players.Values) { - player.Character?.NetworkTransform.OnPlayerSpawn(); + if (GameNet.ShipStatus != null) + { + await player.Character!.NetworkTransform.SetPositionAsync(player, GameNet.ShipStatus.GetSpawnLocation(player.Character, PlayerCount, false)); + } } await _eventManager.CallAsync(new MeetingStartedEvent(this, meetingHud)); diff --git a/src/Impostor.Server/Net/State/Game.cs b/src/Impostor.Server/Net/State/Game.cs index dc75cc8..918294a 100644 --- a/src/Impostor.Server/Net/State/Game.cs +++ b/src/Impostor.Server/Net/State/Game.cs @@ -119,8 +119,6 @@ namespace Impostor.Server.Net.State { foreach (var player in _players.Values) { - player.Character?.NetworkTransform.OnPlayerSpawn(); - if (GameNet.ShipStatus != null) { await player.Character!.NetworkTransform.SetPositionAsync(player, GameNet.ShipStatus.GetSpawnLocation(player.Character, PlayerCount, true)); -- 2.39.5