- Minor changes
- Better loading skins
This commit is contained in:
Dawid Bepierszcz
2024-02-03 17:23:12 +01:00
parent 14e285d44f
commit 236c79c4b9
4 changed files with 46 additions and 39 deletions

View File

@@ -10,7 +10,9 @@ namespace WeaponPaints
{ {
if (!Config.Additional.CommandWpEnabled || !Config.Additional.SkinEnabled || !g_bCommandsAllowed) return; if (!Config.Additional.CommandWpEnabled || !Config.Additional.SkinEnabled || !g_bCommandsAllowed) return;
if (!Utility.IsPlayerValid(player)) return; if (!Utility.IsPlayerValid(player)) return;
if (player == null || player.Index <= 0) return;
if (player == null || !player.IsValid || player.UserId == null || player.IsBot) return;
int playerIndex = (int)player!.Index; int playerIndex = (int)player!.Index;
PlayerInfo playerInfo = new PlayerInfo PlayerInfo playerInfo = new PlayerInfo
@@ -22,8 +24,10 @@ namespace WeaponPaints
IpAddress = player?.IpAddress?.Split(":")[0] IpAddress = player?.IpAddress?.Split(":")[0]
}; };
if (player == null || player.UserId == null) return; if (player == null || !player.IsValid || player.UserId == null || player.IsBot) return;
try
{
if (!commandsCooldown.TryGetValue((int)player.UserId, out DateTime cooldownEndTime) || if (!commandsCooldown.TryGetValue((int)player.UserId, out DateTime cooldownEndTime) ||
DateTime.UtcNow >= (commandsCooldown.TryGetValue((int)player.UserId, out cooldownEndTime) ? cooldownEndTime : DateTime.UtcNow)) DateTime.UtcNow >= (commandsCooldown.TryGetValue((int)player.UserId, out cooldownEndTime) ? cooldownEndTime : DateTime.UtcNow))
{ {
@@ -48,6 +52,8 @@ namespace WeaponPaints
player!.Print(Localizer["wp_command_cooldown"]); player!.Print(Localizer["wp_command_cooldown"]);
} }
} }
catch (Exception) { }
}
private void OnCommandWS(CCSPlayerController? player, CommandInfo command) private void OnCommandWS(CCSPlayerController? player, CommandInfo command)
{ {

View File

@@ -9,25 +9,28 @@ namespace WeaponPaints
{ {
CCSPlayerController? player = Utilities.GetPlayerFromSlot(playerSlot); CCSPlayerController? player = Utilities.GetPlayerFromSlot(playerSlot);
if (player == null || !player.IsValid || player.IsBot || player.IsHLTV || weaponSync == null || player.Connected == PlayerConnectedState.PlayerDisconnecting) return;
PlayerInfo playerInfo = new PlayerInfo PlayerInfo playerInfo = new PlayerInfo
{ {
UserId = player.UserId, UserId = player.UserId,
Index = (int)player.Index, Index = (int)player.Index,
SteamId = player.SteamID.ToString(), SteamId = player.SteamID.ToString(),
Name = player?.PlayerName, Name = player.PlayerName,
IpAddress = player?.IpAddress?.Split(":")[0] IpAddress = player.IpAddress?.Split(":")[0]
}; };
if (player == null || !player.IsValid || player.IsBot || player.IsHLTV || weaponSync == null) return; if (!gPlayerWeaponsInfo.ContainsKey((int)player.Index))
{
Console.WriteLine($"[WeaponPaints] Retrying to retrieve player {player.PlayerName} skins");
Task.Run(async () => Task.Run(async () =>
{ {
if (Config.Additional.SkinEnabled) if (Config.Additional.SkinEnabled)
await weaponSync.GetWeaponPaintsFromDatabase(playerInfo);
if (Config.Additional.KnifeEnabled)
await weaponSync.GetKnifeFromDatabase(playerInfo); await weaponSync.GetKnifeFromDatabase(playerInfo);
}); });
}
//if (Config.Additional.KnifeEnabled && weaponSync != null)
//_ = weaponSync.GetKnifeFromDatabase(playerIndex);
} }
private void OnClientDisconnect(int playerSlot) private void OnClientDisconnect(int playerSlot)
@@ -175,6 +178,7 @@ namespace WeaponPaints
weaponSync = new WeaponSynchronization(DatabaseConnectionString, Config, GlobalShareApi, GlobalShareServerId); weaponSync = new WeaponSynchronization(DatabaseConnectionString, Config, GlobalShareApi, GlobalShareServerId);
}); });
/*
g_hTimerCheckSkinsData = AddTimer(10.0f, () => g_hTimerCheckSkinsData = AddTimer(10.0f, () =>
{ {
List<CCSPlayerController> players = Utilities.GetPlayers(); List<CCSPlayerController> players = Utilities.GetPlayers();
@@ -199,6 +203,7 @@ namespace WeaponPaints
_ = weaponSync.GetKnifeFromDatabase(playerInfo); _ = weaponSync.GetKnifeFromDatabase(playerInfo);
} }
}, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE | CounterStrikeSharp.API.Modules.Timers.TimerFlags.REPEAT); }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE | CounterStrikeSharp.API.Modules.Timers.TimerFlags.REPEAT);
*/
} }
private HookResult OnPlayerConnectFull(EventPlayerConnectFull @event, GameEventInfo info) private HookResult OnPlayerConnectFull(EventPlayerConnectFull @event, GameEventInfo info)
@@ -279,7 +284,7 @@ namespace WeaponPaints
{ {
try try
{ {
if (player == null || !player.IsValid || !player.PawnIsAlive || player.IsBot || player.IsHLTV) continue; if (player == null || !player.IsValid || !player.PawnIsAlive || player.IsBot || player.IsHLTV || player.Connected == PlayerConnectedState.PlayerDisconnecting) continue;
var viewModels = GetPlayerViewModels(player); var viewModels = GetPlayerViewModels(player);
@@ -320,11 +325,11 @@ namespace WeaponPaints
RegisterListener<Listeners.OnMapStart>(OnMapStart); RegisterListener<Listeners.OnMapStart>(OnMapStart);
RegisterListener<Listeners.OnTick>(OnTick); RegisterListener<Listeners.OnTick>(OnTick);
RegisterEventHandler<EventPlayerConnectFull>(OnPlayerConnectFull); //RegisterEventHandler<EventPlayerConnectFull>(OnPlayerConnectFull);
RegisterEventHandler<EventPlayerSpawn>(OnPlayerSpawn); RegisterEventHandler<EventPlayerSpawn>(OnPlayerSpawn);
RegisterEventHandler<EventRoundStart>(OnRoundStart, HookMode.Pre); RegisterEventHandler<EventRoundStart>(OnRoundStart, HookMode.Pre);
RegisterEventHandler<EventRoundEnd>(OnRoundEnd); RegisterEventHandler<EventRoundEnd>(OnRoundEnd);
RegisterEventHandler<EventItemPurchase>(OnEventItemPurchasePost); //RegisterEventHandler<EventItemPurchase>(OnEventItemPurchasePost);
//RegisterEventHandler<EventItemPickup>(OnItemPickup); //RegisterEventHandler<EventItemPickup>(OnItemPickup);
HookEntityOutput("weapon_knife", "OnPlayerPickup", OnPickup, HookMode.Pre); HookEntityOutput("weapon_knife", "OnPlayerPickup", OnPickup, HookMode.Pre);
} }

View File

@@ -1 +1 @@
1.4b 1.4c

View File

@@ -83,7 +83,7 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig<WeaponPaintsConfig
internal int GlobalShareServerId = 0; internal int GlobalShareServerId = 0;
internal static Dictionary<int, DateTime> commandsCooldown = new Dictionary<int, DateTime>(); internal static Dictionary<int, DateTime> commandsCooldown = new Dictionary<int, DateTime>();
private string DatabaseConnectionString = string.Empty; private string DatabaseConnectionString = string.Empty;
private CounterStrikeSharp.API.Modules.Timers.Timer? g_hTimerCheckSkinsData = null; //private CounterStrikeSharp.API.Modules.Timers.Timer? g_hTimerCheckSkinsData = null;
public static Dictionary<int, string> weaponDefindex { get; } = new Dictionary<int, string> public static Dictionary<int, string> weaponDefindex { get; } = new Dictionary<int, string>
{ {
{ 1, "weapon_deagle" }, { 1, "weapon_deagle" },
@@ -145,7 +145,7 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig<WeaponPaintsConfig
public override string ModuleAuthor => "Nereziel & daffyy"; public override string ModuleAuthor => "Nereziel & daffyy";
public override string ModuleDescription => "Skin and knife selector, standalone and web-based"; public override string ModuleDescription => "Skin and knife selector, standalone and web-based";
public override string ModuleName => "WeaponPaints"; public override string ModuleName => "WeaponPaints";
public override string ModuleVersion => "1.4b"; public override string ModuleVersion => "1.4c";
public static WeaponPaintsConfig GetWeaponPaintsConfig() public static WeaponPaintsConfig GetWeaponPaintsConfig()
{ {
@@ -187,10 +187,6 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig<WeaponPaintsConfig
g_knifePickupCount[(int)player!.Index] = 0; g_knifePickupCount[(int)player!.Index] = 0;
} }
/*
RegisterListeners();
RegisterCommands();
*/
} }
if (Config.Additional.KnifeEnabled) if (Config.Additional.KnifeEnabled)
@@ -253,7 +249,7 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig<WeaponPaintsConfig
Task<string> responseBodyTask = response.Content.ReadAsStringAsync(); Task<string> responseBodyTask = response.Content.ReadAsStringAsync();
responseBodyTask.Wait(); responseBodyTask.Wait();
string responseBody = responseBodyTask.Result; string responseBody = responseBodyTask.Result;
GlobalShareServerId = Int32.Parse(responseBody); GlobalShareServerId = int.Parse(responseBody);
} }
else else
{ {