mirror of
https://github.com/daffyyyy/CS2-SimpleAdmin.git
synced 2026-02-17 18:39:07 +00:00
:(
:(
This commit is contained in:
@@ -283,6 +283,15 @@ internal class PlayerManager
|
||||
#endif
|
||||
if (CS2_SimpleAdmin.DatabaseProvider == null)
|
||||
return;
|
||||
|
||||
// Optimization: Get players once and avoid allocating anonymous types
|
||||
var validPlayers = Helper.GetValidPlayers();
|
||||
// Use ValueTuple instead of anonymous type - better performance and less allocations
|
||||
var tempPlayers = new List<(string PlayerName, ulong SteamID, string? IpAddress, int? UserId, int Slot)>(validPlayers.Count);
|
||||
foreach (var p in validPlayers)
|
||||
{
|
||||
tempPlayers.Add((p.PlayerName, p.SteamID, p.IpAddress, p.UserId, p.Slot));
|
||||
}
|
||||
|
||||
var pluginInstance = CS2_SimpleAdmin.Instance;
|
||||
var config = _config.OtherSettings; // Cache config access
|
||||
@@ -291,8 +300,7 @@ internal class PlayerManager
|
||||
{
|
||||
try
|
||||
{
|
||||
// Always run cache and permission refresh, regardless of player count
|
||||
// This ensures bans/mutes status changes are detected even when server is empty
|
||||
// Run all expire tasks in parallel
|
||||
var expireTasks = new[]
|
||||
{
|
||||
pluginInstance.BanManager.ExpireOldBans(),
|
||||
@@ -320,11 +328,6 @@ internal class PlayerManager
|
||||
if (pluginInstance.CacheManager == null)
|
||||
return;
|
||||
|
||||
// Only check players if there are any online
|
||||
var validPlayers = Helper.GetValidPlayers();
|
||||
if (validPlayers.Count == 0)
|
||||
return;
|
||||
|
||||
// Optimization: Cache ban type and multi-account check to avoid repeated config access
|
||||
var banType = config.BanType;
|
||||
var checkMultiAccounts = config.CheckMultiAccountsByIp;
|
||||
@@ -332,7 +335,7 @@ internal class PlayerManager
|
||||
var bannedPlayers = new List<(string PlayerName, ulong SteamID, string? IpAddress, int? UserId, int Slot)>();
|
||||
|
||||
// Manual loop instead of LINQ - better performance
|
||||
foreach (var player in validPlayers)
|
||||
foreach (var player in tempPlayers)
|
||||
{
|
||||
var playerName = player.PlayerName;
|
||||
var steamId = player.SteamID;
|
||||
@@ -348,7 +351,7 @@ internal class PlayerManager
|
||||
|
||||
if (isBanned)
|
||||
{
|
||||
bannedPlayers.Add((playerName, steamId, ip, player.UserId, player.Slot));
|
||||
bannedPlayers.Add(player);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -369,8 +372,8 @@ internal class PlayerManager
|
||||
if (config.TimeMode == 0)
|
||||
{
|
||||
// Optimization: Manual projection instead of LINQ
|
||||
var onlinePlayers = new List<(ulong, int?, int)>(validPlayers.Count);
|
||||
foreach (var player in validPlayers)
|
||||
var onlinePlayers = new List<(ulong, int?, int)>(tempPlayers.Count);
|
||||
foreach (var player in tempPlayers)
|
||||
{
|
||||
onlinePlayers.Add((player.SteamID, player.UserId, player.Slot));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user