- fix: Fix gulag again (#37)

This commit is contained in:
Aviu00
2024-02-08 20:38:26 +09:00
committed by GitHub
parent 893911035b
commit 5eac02efa7
3 changed files with 18 additions and 14 deletions

View File

@@ -115,7 +115,7 @@ public sealed class BanManager : IBanManager, IPostInjectInit
{ {
// Clear out players that have disconnected. // Clear out players that have disconnected.
var toRemove = new List<NetUserId>(); var toRemove = new List<NetUserId>();
foreach (var player in _cachedRoleBans.Keys) foreach (var player in _cachedRoleBans.Keys.Concat(_cachedServerBans.Keys)) // Miracle edit
{ {
if (!_playerManager.TryGetSessionById(player, out _)) if (!_playerManager.TryGetSessionById(player, out _))
toRemove.Add(player); toRemove.Add(player);

View File

@@ -31,7 +31,6 @@ public interface IBanManager
public HashSet<ServerBanDef> GetServerBans(NetUserId userId); // Miracle edit public HashSet<ServerBanDef> GetServerBans(NetUserId userId); // Miracle edit
public void RemoveCachedServerBan(NetUserId userId, int? id); // Miracle edit public void RemoveCachedServerBan(NetUserId userId, int? id); // Miracle edit
public void AddCachedServerBan(ServerBanDef banDef); // Miracle edit public void AddCachedServerBan(ServerBanDef banDef); // Miracle edit
/// <summary> /// <summary>

View File

@@ -147,8 +147,8 @@ public sealed partial class GulagSystem : SharedGulagSystem
} }
var banDef = ban.First(); var banDef = ban.First();
var newExpirationTime = banDef.ExpirationTime!.Value.DateTime + TimeSpan.FromDays(1); var newExpirationTime = banDef.ExpirationTime!.Value + TimeSpan.FromDays(1);
_db.EditServerBan(banDef.Id!.Value, banDef.Reason, banDef.Severity, newExpirationTime, banDef.UserId!.Value, DateTime.Now); EditServerBan(banDef, newExpirationTime);
} }
public override void Update(float frameTime) public override void Update(float frameTime)
@@ -379,24 +379,29 @@ public sealed partial class GulagSystem : SharedGulagSystem
continue; continue;
} }
var newExpirationTime = banDef.ExpirationTime!.Value.DateTime - ConvertPointsToTime(points); var newExpirationTime = banDef.ExpirationTime!.Value - ConvertPointsToTime(points);
_db.EditServerBan(banDef.Id!.Value, banDef.Reason, banDef.Severity, newExpirationTime, banDef.UserId!.Value, DateTime.Now); EditServerBan(banDef, newExpirationTime);
// Update time
_banManager.RemoveCachedServerBan(banDef.UserId.Value, banDef.Id.Value);
_banManager.AddCachedServerBan(new ServerBanDef(
banDef.Id, banDef.UserId, banDef.Address, banDef.HWId, banDef.BanTime, newExpirationTime,
banDef.RoundId, banDef.PlaytimeAtNote, banDef.Reason, banDef.Severity, banDef.BanningAdmin,
banDef.Unban, banDef.ServerName));
} }
_pointsPerPlayer.Clear(); _pointsPerPlayer.Clear();
_activeMap = null!; _activeMap = null!;
_mapEntity = null!; _mapEntity = null!;
} }
private void EditServerBan(ServerBanDef banDef, DateTimeOffset newExpirationTime)
{
_db.EditServerBan(banDef.Id!.Value, banDef.Reason, banDef.Severity, newExpirationTime.UtcDateTime, banDef.UserId!.Value,
DateTime.UtcNow);
_banManager.RemoveCachedServerBan(banDef.UserId.Value, banDef.Id.Value);
_banManager.AddCachedServerBan(new ServerBanDef(
banDef.Id, banDef.UserId, banDef.Address, banDef.HWId, banDef.BanTime, newExpirationTime,
banDef.RoundId, banDef.PlaytimeAtNote, banDef.Reason, banDef.Severity, banDef.BanningAdmin,
banDef.Unban, banDef.ServerName));
}
private void OnRoundStarting(RoundStartingEvent ev) private void OnRoundStarting(RoundStartingEvent ev)
{ {
//Spawn Gulag //Spawn Gulag