Revert "Kicking AFK players (#12812)" (#12909)

This reverts commit ca260ee666.
This commit is contained in:
Kara
2022-12-07 08:07:58 -06:00
committed by GitHub
parent 8ad010ea9b
commit 8bf0d16fad
3 changed files with 4 additions and 29 deletions

View File

@@ -1,6 +1,5 @@
using System.Linq; using System.Linq;
using Content.Server.Afk.Events; using Content.Server.Afk.Events;
using Content.Server.Chat.Managers;
using Content.Server.GameTicking; using Content.Server.GameTicking;
using Content.Shared.CCVar; using Content.Shared.CCVar;
using Robust.Server.Player; using Robust.Server.Player;
@@ -21,20 +20,17 @@ public sealed class AFKSystem : EntitySystem
[Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IPlayerManager _playerManager = default!;
[Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly GameTicker _ticker = default!; [Dependency] private readonly GameTicker _ticker = default!;
[Dependency] private readonly IChatManager _chatManager = default!;
private float _checkDelay; private float _checkDelay;
private float _kickDelay;
private TimeSpan _checkTime; private TimeSpan _checkTime;
private readonly Dictionary<IPlayerSession, TimeSpan> _afkPlayers = new(); private readonly HashSet<IPlayerSession> _afkPlayers = new();
public override void Initialize() public override void Initialize()
{ {
base.Initialize(); base.Initialize();
_playerManager.PlayerStatusChanged += OnPlayerChange; _playerManager.PlayerStatusChanged += OnPlayerChange;
_configManager.OnValueChanged(CCVars.AfkTime, SetAfkDelay, true); _configManager.OnValueChanged(CCVars.AfkTime, SetAfkDelay, true);
_configManager.OnValueChanged(CCVars.AfkKickTime, SetAfkKickDelay, true);
} }
private void SetAfkDelay(float obj) private void SetAfkDelay(float obj)
@@ -42,11 +38,6 @@ public sealed class AFKSystem : EntitySystem
_checkDelay = obj; _checkDelay = obj;
} }
private void SetAfkKickDelay(float obj)
{
_kickDelay = obj;
}
private void OnPlayerChange(object? sender, SessionStatusEventArgs e) private void OnPlayerChange(object? sender, SessionStatusEventArgs e)
{ {
switch (e.NewStatus) switch (e.NewStatus)
@@ -63,7 +54,6 @@ public sealed class AFKSystem : EntitySystem
_afkPlayers.Clear(); _afkPlayers.Clear();
_playerManager.PlayerStatusChanged -= OnPlayerChange; _playerManager.PlayerStatusChanged -= OnPlayerChange;
_configManager.UnsubValueChanged(CCVars.AfkTime, SetAfkDelay); _configManager.UnsubValueChanged(CCVars.AfkTime, SetAfkDelay);
_configManager.UnsubValueChanged(CCVars.AfkKickTime, SetAfkKickDelay);
} }
public override void Update(float frameTime) public override void Update(float frameTime)
@@ -88,25 +78,18 @@ public sealed class AFKSystem : EntitySystem
var pSession = (IPlayerSession) session; var pSession = (IPlayerSession) session;
var isAfk = _afkManager.IsAfk(pSession); var isAfk = _afkManager.IsAfk(pSession);
if (isAfk && _afkPlayers.TryAdd(pSession, _timing.CurTime)) if (isAfk && _afkPlayers.Add(pSession))
{ {
var ev = new AFKEvent(pSession); var ev = new AFKEvent(pSession);
RaiseLocalEvent(ref ev); RaiseLocalEvent(ref ev);
continue;
_chatManager.DispatchServerMessage(pSession, Loc.GetString("afk-system-kick-warning"));
} }
if (!isAfk && _afkPlayers.Remove(pSession)) if (!isAfk && _afkPlayers.Remove(pSession))
{ {
var ev = new UnAFKEvent(pSession); var ev = new UnAFKEvent(pSession);
RaiseLocalEvent(ref ev); RaiseLocalEvent(ref ev);
} continue;
if (isAfk &&
_afkPlayers.TryGetValue(pSession, out var startAfkTime) &&
_timing.CurTime - startAfkTime >= TimeSpan.FromSeconds(_kickDelay))
{
pSession.ConnectedClient.Disconnect( Loc.GetString("afk-system-kick-reason"));
} }
} }
} }

View File

@@ -1161,12 +1161,6 @@ namespace Content.Shared.CCVar
public static readonly CVarDef<float> AfkTime = public static readonly CVarDef<float> AfkTime =
CVarDef.Create("afk.time", 60f, CVar.SERVERONLY); CVarDef.Create("afk.time", 60f, CVar.SERVERONLY);
/// <summary>
/// How long seconds a client can go after being detected as AFK before being kicked.
/// </summary>
public static readonly CVarDef<float> AfkKickTime =
CVarDef.Create("afk.kick_time", 600f, CVar.SERVERONLY);
/* /*
* IC * IC
*/ */

View File

@@ -1,2 +0,0 @@
afk-system-kick-warning = You will be kicked for being AFK soon!
afk-system-kick-reason = You were kicked for being AFK!