Banned players are let in long enough to be told the ban's reason and time left, then kicked after KickTime, instead of only seeing "Your client is not allowed to join this server"; they can't chat, talk or join a team meanwhile. New permission @css/bypassipban (players or groups, implied by @css/root) skips IP and shared-IP bans, leaving only bans on their own SteamID, on join and in the periodic check. Moving to spectators no longer unhides a hidden admin; only joining T or CT does.
88 lines
No EOL
3.4 KiB
C#
88 lines
No EOL
3.4 KiB
C#
using CounterStrikeSharp.API.Core;
|
|
using CounterStrikeSharp.API.Core.Capabilities;
|
|
using CounterStrikeSharp.API.Modules.Memory.DynamicFunctions;
|
|
using CS2_SimpleAdmin.Models;
|
|
using CS2_SimpleAdminApi;
|
|
using MenuManager;
|
|
using Microsoft.Extensions.Localization;
|
|
using Microsoft.Extensions.Logging;
|
|
using System.Collections.Concurrent;
|
|
using CS2_SimpleAdmin.Database;
|
|
using CS2_SimpleAdmin.Managers;
|
|
using Timer = CounterStrikeSharp.API.Modules.Timers.Timer;
|
|
|
|
namespace CS2_SimpleAdmin;
|
|
|
|
public partial class CS2_SimpleAdmin
|
|
{
|
|
// Config
|
|
public CS2_SimpleAdminConfig Config { get; set; } = new();
|
|
|
|
// HttpClient
|
|
internal static readonly HttpClient HttpClient = new();
|
|
|
|
// Paths
|
|
internal static readonly string ConfigDirectory =
|
|
Path.Combine(Application.RootDirectory, "configs/plugins/CS2-SimpleAdmin");
|
|
|
|
// Localization
|
|
public static IStringLocalizer? _localizer;
|
|
|
|
// Voting System
|
|
public static readonly Dictionary<string, int> VoteAnswers = [];
|
|
public static bool VoteInProgress;
|
|
|
|
// Command and Server Settings
|
|
public static readonly bool UnlockedCommands = CoreConfig.UnlockConCommands;
|
|
internal static string IpAddress = string.Empty;
|
|
internal static bool ServerLoaded;
|
|
internal static int? ServerId = null;
|
|
internal static readonly HashSet<ulong> AdminDisabledJoinComms = [];
|
|
|
|
// Player Management
|
|
internal static readonly HashSet<int> SilentPlayers = [];
|
|
// zio: banned players let in only to be told why, then kicked. They can't chat or join a team.
|
|
internal static readonly HashSet<int> PendingBanKicks = [];
|
|
internal static readonly Dictionary<ulong, string> RenamedPlayers = [];
|
|
internal static readonly ConcurrentDictionary<ulong, PlayerInfo> PlayersInfo = [];
|
|
internal static readonly List<CCSPlayerController> CachedPlayers = [];
|
|
internal static readonly List<CCSPlayerController> BotPlayers = [];
|
|
private static readonly List<DisconnectedPlayer> DisconnectedPlayers = [];
|
|
|
|
// Discord Integration
|
|
internal static DiscordManager? DiscordWebhookClientLog;
|
|
|
|
// Database Settings
|
|
internal string DbConnectionString = string.Empty;
|
|
// internal static Database.Database? Database;
|
|
internal static IDatabaseProvider? DatabaseProvider;
|
|
|
|
// Logger
|
|
internal static ILogger? _logger;
|
|
|
|
// Memory Function (Game-related)
|
|
private static MemoryFunctionVoid<CBasePlayerController, CCSPlayerPawn, bool, bool>?
|
|
_cBasePlayerControllerSetPawnFunc;
|
|
|
|
// Menu API and Capabilities
|
|
internal static IMenuApi? MenuApi;
|
|
private static readonly PluginCapability<IMenuApi> MenuCapability = new("menu:nfcore");
|
|
|
|
// Shared API
|
|
internal static Api.CS2_SimpleAdminApi? SimpleAdminApi { get; private set; }
|
|
|
|
// Managers
|
|
internal PermissionManager PermissionManager = new(DatabaseProvider);
|
|
internal BanManager BanManager = new(DatabaseProvider);
|
|
internal MuteManager MuteManager = new(DatabaseProvider);
|
|
internal WarnManager WarnManager = new(DatabaseProvider);
|
|
internal CacheManager? CacheManager = new();
|
|
private static readonly PlayerManager PlayerManager = new();
|
|
|
|
// Timers
|
|
internal Timer? PlayersTimer = null;
|
|
|
|
// Funny list
|
|
private readonly List<string> _requiredPlugins = ["MenuManagerCore", "PlayerSettings"];
|
|
private readonly List<string> _requiredShared = ["MenuManagerApi", "PlayerSettingsApi", "AnyBaseLib", "CS2-SimpleAdminApi"];
|
|
} |