From 5e6286b667798a995810e310b25a38b14bcef5b1 Mon Sep 17 00:00:00 2001 From: daffyyyy Date: Mon, 4 Dec 2023 21:00:24 +0100 Subject: [PATCH] Update for cssharp 101 --- Commands.cs | 18 ++++++++--- Events.cs | 66 +++++++++++++++++++++++++++++++--------- PlayerInfo.cs | 11 +++++++ WeaponPaints.cs | 39 ++++++++++++++++-------- WeaponPaints.csproj | 2 +- WeaponSynchronization.cs | 40 ++++++++++-------------- 6 files changed, 119 insertions(+), 57 deletions(-) create mode 100644 PlayerInfo.cs diff --git a/Commands.cs b/Commands.cs index fc6d6474..c235706d 100644 --- a/Commands.cs +++ b/Commands.cs @@ -13,29 +13,39 @@ namespace WeaponPaints string temp = ""; if (player == null || player.Index <= 0) return; int playerIndex = (int)player!.Index; + + PlayerInfo playerInfo = new PlayerInfo + { + UserId = player.UserId, + Index = (int)player.Index, + SteamId = player?.AuthorizedSteamID?.SteamId64.ToString(), + Name = player?.PlayerName, + IpAddress = player?.IpAddress?.Split(":")[0] + }; + if (playerIndex != 0 && DateTime.UtcNow >= commandCooldown[playerIndex].AddSeconds(Config.CmdRefreshCooldownSeconds)) { commandCooldown[playerIndex] = DateTime.UtcNow; if (weaponSync != null) - Task.Run(async () => await weaponSync.GetWeaponPaintsFromDatabase(playerIndex)); + Task.Run(async () => await weaponSync.GetWeaponPaintsFromDatabase(playerInfo)); if (Config.Additional.KnifeEnabled) { if (weaponSync != null) - Task.Run(async () => await weaponSync.GetKnifeFromDatabase(playerIndex)); + Task.Run(async () => await weaponSync.GetKnifeFromDatabase(playerInfo)); RefreshWeapons(player); } if (!string.IsNullOrEmpty(Config.Messages.SuccessRefreshCommand)) { temp = $" {Config.Prefix} {Config.Messages.SuccessRefreshCommand}"; - player.PrintToChat(Utility.ReplaceTags(temp)); + player!.PrintToChat(Utility.ReplaceTags(temp)); } return; } if (!string.IsNullOrEmpty(Config.Messages.CooldownRefreshCommand)) { temp = $" {Config.Prefix} {Config.Messages.CooldownRefreshCommand}"; - player.PrintToChat(Utility.ReplaceTags(temp)); + player!.PrintToChat(Utility.ReplaceTags(temp)); } } diff --git a/Events.cs b/Events.cs index 09e30a39..7cdeb45b 100644 --- a/Events.cs +++ b/Events.cs @@ -12,12 +12,25 @@ namespace WeaponPaints CCSPlayerController? player = Utilities.GetPlayerFromIndex(playerIndex); - if (player == null || !player.IsValid || player.IsBot || player.IsHLTV) return; + PlayerInfo playerInfo = new PlayerInfo + { + UserId = player.UserId, + Index = (int)player.Index, + SteamId = player?.AuthorizedSteamID?.SteamId64.ToString(), + Name = player?.PlayerName, + IpAddress = player?.IpAddress?.Split(":")[0] + }; - if (Config.Additional.SkinEnabled && weaponSync != null) - _ = weaponSync.GetWeaponPaintsFromDatabase(playerIndex); - if (Config.Additional.KnifeEnabled && weaponSync != null) - _ = weaponSync.GetKnifeFromDatabase(playerIndex); + if (player == null || !player.IsValid || player.IsBot || player.IsHLTV || weaponSync == null) return; + + Task.Run(async () => + { + if (Config.Additional.SkinEnabled) + await weaponSync.GetKnifeFromDatabase(playerInfo); + }); + + //if (Config.Additional.KnifeEnabled && weaponSync != null) + //_ = weaponSync.GetKnifeFromDatabase(playerIndex); } private void OnClientDisconnect(int playerSlot) @@ -92,7 +105,6 @@ namespace WeaponPaints RemovePlayerKnife(player, true); AddTimer(0.3f, () => GiveKnifeToPlayer(player)); - } } return HookResult.Continue; @@ -111,6 +123,8 @@ namespace WeaponPaints if (Config.GlobalShare) GlobalShareConnect(); + + weaponSync = new WeaponSynchronization(DatabaseConnectionString, Config, GlobalShareApi, GlobalShareServerId); }); g_hTimerCheckSkinsData = AddTimer(10.0f, () => @@ -122,27 +136,49 @@ namespace WeaponPaints if (player == null || !player.IsValid || player.IsBot || player.IsHLTV || player.AuthorizedSteamID == null) continue; if (gPlayerWeaponsInfo.ContainsKey((int)player.Index)) continue; + PlayerInfo playerInfo = new PlayerInfo + { + UserId = player.UserId, + Index = (int)player.Index, + SteamId = player?.AuthorizedSteamID?.SteamId64.ToString(), + Name = player?.PlayerName, + IpAddress = player?.IpAddress?.Split(":")[0] + }; + if (Config.Additional.SkinEnabled && weaponSync != null) - _ = weaponSync.GetWeaponPaintsFromDatabase((int)player.Index); + _ = weaponSync.GetWeaponPaintsFromDatabase(playerInfo); if (Config.Additional.KnifeEnabled && weaponSync != null) - _ = weaponSync.GetKnifeFromDatabase((int)player.Index); + _ = weaponSync.GetKnifeFromDatabase(playerInfo); } }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE | CounterStrikeSharp.API.Modules.Timers.TimerFlags.REPEAT); + } private HookResult OnPlayerConnectFull(EventPlayerConnectFull @event, GameEventInfo info) { CCSPlayerController? player = @event.Userid; - if (player == null || !player.IsValid || player.IsBot || player.IsHLTV) return HookResult.Continue; - if (!gPlayerWeaponsInfo.ContainsKey((int)player.Index)) + if (player == null || !player.IsValid || player.IsBot || player.IsHLTV || weaponSync == null) return HookResult.Continue; + + PlayerInfo playerInfo = new PlayerInfo + { + UserId = player.UserId, + Index = (int)player.Index, + SteamId = player?.AuthorizedSteamID?.SteamId64.ToString(), + Name = player?.PlayerName, + IpAddress = player?.IpAddress?.Split(":")[0] + }; + + if (!gPlayerWeaponsInfo.ContainsKey((int)player!.Index)) { Console.WriteLine($"[WeaponPaints] Retrying to retrieve player {player.PlayerName} skins"); - if (Config.Additional.SkinEnabled && weaponSync != null) - _ = weaponSync.GetWeaponPaintsFromDatabase((int)player.Index); - if (Config.Additional.KnifeEnabled && weaponSync != null) - _ = weaponSync.GetKnifeFromDatabase((int)player.Index); - + Task.Run(async () => + { + if (Config.Additional.SkinEnabled) + await weaponSync.GetWeaponPaintsFromDatabase(playerInfo); + if (Config.Additional.KnifeEnabled) + await weaponSync.GetKnifeFromDatabase(playerInfo); + }); } return HookResult.Continue; diff --git a/PlayerInfo.cs b/PlayerInfo.cs new file mode 100644 index 00000000..dba103b6 --- /dev/null +++ b/PlayerInfo.cs @@ -0,0 +1,11 @@ +namespace WeaponPaints +{ + public class PlayerInfo + { + public int Index { get; set; } + public int? UserId { get; set; } + public string? SteamId { get; set; } + public string? Name { get; set; } + public string? IpAddress { get; set; } + } +} diff --git a/WeaponPaints.cs b/WeaponPaints.cs index 5ceb2e39..9333e98a 100644 --- a/WeaponPaints.cs +++ b/WeaponPaints.cs @@ -6,7 +6,7 @@ using Newtonsoft.Json.Linq; namespace WeaponPaints; -[MinimumApiVersion(90)] +[MinimumApiVersion(101)] public partial class WeaponPaints : BasePlugin, IPluginConfig { internal static readonly Dictionary weaponList = new() @@ -156,22 +156,34 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig - { - for (int i = 1; i <= Server.MaxPlayers; i++) - { - if (Config.Additional.SkinEnabled && weaponSync != null) - await weaponSync.GetWeaponPaintsFromDatabase(i); - if (Config.Additional.KnifeEnabled && weaponSync != null) - await weaponSync.GetKnifeFromDatabase(i); - } - }); + List players = Utilities.GetPlayers(); + + foreach (CCSPlayerController player in players) + { + if (player == null || !player.IsValid || player.IsBot || player.IsHLTV || player.AuthorizedSteamID == null) continue; + if (gPlayerWeaponsInfo.ContainsKey((int)player.Index)) continue; + + PlayerInfo playerInfo = new PlayerInfo + { + UserId = player.UserId, + Index = (int)player.Index, + SteamId = player?.AuthorizedSteamID?.SteamId64.ToString(), + Name = player?.PlayerName, + IpAddress = player?.IpAddress?.Split(":")[0] + }; + + if (Config.Additional.SkinEnabled && weaponSync != null) + _ = weaponSync.GetWeaponPaintsFromDatabase(playerInfo); + if (Config.Additional.KnifeEnabled && weaponSync != null) + _ = weaponSync.GetKnifeFromDatabase(playerInfo); + } + + RegisterListeners(); + RegisterCommands(); } if (Config.Additional.KnifeEnabled) @@ -237,6 +249,7 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig - + diff --git a/WeaponSynchronization.cs b/WeaponSynchronization.cs index 1e61389b..0192cb31 100644 --- a/WeaponSynchronization.cs +++ b/WeaponSynchronization.cs @@ -21,24 +21,21 @@ namespace WeaponPaints _globalShareServerId = globalShareServerId; } - internal async Task GetKnifeFromDatabase(int playerIndex) + internal async Task GetKnifeFromDatabase(PlayerInfo player) { if (!_config.Additional.KnifeEnabled) return; + if (player.SteamId == null || player.Index == 0) return; try { - CCSPlayerController player = Utilities.GetPlayerFromIndex(playerIndex); - if (!Utility.IsPlayerValid(player)) return; - if (player.AuthorizedSteamID == null) return; - string steamId = player.AuthorizedSteamID.SteamId64.ToString(); - if (_config.GlobalShare) { var values = new Dictionary { { "server_id", _globalShareServerId.ToString() }, - { "steamid", steamId }, + { "steamid", player.SteamId }, { "knife", "1" } }; + UriBuilder builder = new UriBuilder(_globalShareApi); builder.Query = string.Join("&", values.Select(p => $"{Uri.EscapeDataString(p.Key)}={Uri.EscapeDataString(p.Value)}")); @@ -53,7 +50,7 @@ namespace WeaponPaints string result = await response.Content.ReadAsStringAsync(); if (!string.IsNullOrEmpty(result)) { - WeaponPaints.g_playersKnife[playerIndex] = result; + WeaponPaints.g_playersKnife[player.Index] = result; } else { @@ -72,10 +69,11 @@ namespace WeaponPaints { await connection.OpenAsync(); string query = "SELECT `knife` FROM `wp_player_knife` WHERE `steamid` = @steamid"; - string? PlayerKnife = await connection.QueryFirstOrDefaultAsync(query, new { steamid = steamId }); + string? PlayerKnife = await connection.QueryFirstOrDefaultAsync(query, new { steamid = player.SteamId }); + if (PlayerKnife != null) { - WeaponPaints.g_playersKnife[playerIndex] = PlayerKnife; + WeaponPaints.g_playersKnife[player.Index] = PlayerKnife; } else { @@ -91,20 +89,14 @@ namespace WeaponPaints } } - internal async Task GetWeaponPaintsFromDatabase(int playerIndex) + internal async Task GetWeaponPaintsFromDatabase(PlayerInfo player) { if (!_config.Additional.SkinEnabled) return; + if (player.SteamId == null || player.Index == 0) return; - CCSPlayerController player = Utilities.GetPlayerFromIndex(playerIndex); - if (!Utility.IsPlayerValid(player)) return; - - if (player.AuthorizedSteamID == null) return; - - string steamId = player.AuthorizedSteamID.SteamId64.ToString(); - - if (!WeaponPaints.gPlayerWeaponsInfo.TryGetValue(playerIndex, out _)) + if (!WeaponPaints.gPlayerWeaponsInfo.TryGetValue(player.Index, out _)) { - WeaponPaints.gPlayerWeaponsInfo[playerIndex] = new Dictionary(); + WeaponPaints.gPlayerWeaponsInfo[player.Index] = new Dictionary(); } try { @@ -113,7 +105,7 @@ namespace WeaponPaints var values = new Dictionary { { "server_id", _globalShareServerId.ToString() }, - { "steamid", steamId }, + { "steamid", player.SteamId }, { "skins", "1" } }; UriBuilder builder = new UriBuilder(_globalShareApi); @@ -146,7 +138,7 @@ namespace WeaponPaints Seed = weaponSeed.Value, Wear = weaponWear.Value }; - WeaponPaints.gPlayerWeaponsInfo[playerIndex][weaponDefIndex.Value] = weaponInfo; + WeaponPaints.gPlayerWeaponsInfo[player.Index][weaponDefIndex.Value] = weaponInfo; } } } @@ -164,7 +156,7 @@ namespace WeaponPaints await connection.OpenAsync(); string query = "SELECT * FROM `wp_player_skins` WHERE `steamid` = @steamid"; - IEnumerable PlayerSkins = await connection.QueryAsync(query, new { steamid = steamId }); + IEnumerable PlayerSkins = await connection.QueryAsync(query, new { steamid = player.SteamId }); if (PlayerSkins != null && PlayerSkins.AsList().Count > 0) { @@ -181,7 +173,7 @@ namespace WeaponPaints Seed = weaponSeed, Wear = weaponWear }; - WeaponPaints.gPlayerWeaponsInfo[playerIndex][weaponDefIndex] = weaponInfo; + WeaponPaints.gPlayerWeaponsInfo[player.Index][weaponDefIndex] = weaponInfo; }); } else