Drop the RpcSnapTo anticheat

This commit is contained in:
js6pak committed 2023-12-16 23:55:58 +01:00
1 parent 5b14c7b64e
commit 389b7dfc0a
3 files changed
+9 -47

No files matched your search

@@ -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<PlayerMovementEvent> _pool;
private ushort _lastSequenceId;
private AirshipSpawnState _spawnState;
public InnerCustomNetworkTransform(ICustomMessageManager<ICustomRpc> customMessageManager, Game game, ILogger<InnerCustomNetworkTransform> logger, InnerPlayerControl playerControl, IEventManager eventManager, ObjectPool<PlayerMovementEvent> 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);
+4 -1
View File
@@ -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));
-2
View File
@@ -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));