Compare commits

...

6 Commits

Author SHA1 Message Date
Nereziel
b992433d44 Merge pull request #80 from daffyyyy/some-changes
Changes
2023-12-02 12:56:55 +01:00
daffyyyy
06559af230 Changes 2023-12-02 12:54:13 +01:00
Nereziel
dfe6b200d8 Merge pull request #79 from daffyyyy/some-changes
Workaround for long player authorization
2023-11-30 17:43:32 +01:00
daffyyyy
3edcb5e52f Workaround for long player authorization 2023-11-30 17:28:40 +01:00
Nereziel
28936e9bb5 Merge pull request #78 from daffyyyy/some-changes
GlobalShare fix
2023-11-30 14:29:00 +01:00
daffyyyy
2772fb59b9 GlobalShare fix 2023-11-30 14:18:57 +01:00
4 changed files with 85 additions and 29 deletions

View File

@@ -86,7 +86,7 @@ namespace WeaponPaints
if (!Utility.IsPlayerValid(player) || !g_bCommandsAllowed) return; if (!Utility.IsPlayerValid(player) || !g_bCommandsAllowed) return;
int playerIndex = (int)player!.Index; int playerIndex = (int)player!.Index;
if (commandCooldown != null && DateTime.UtcNow >= commandCooldown[playerIndex].AddSeconds(Config.CmdRefreshCooldownSeconds) && playerIndex > 0 && playerIndex < commandCooldown.Length) if (commandCooldown != null && DateTime.UtcNow >= commandCooldown[playerIndex].AddSeconds(Config.CmdRefreshCooldownSeconds))
{ {
commandCooldown[playerIndex] = DateTime.UtcNow; commandCooldown[playerIndex] = DateTime.UtcNow;
ChatMenus.OpenMenu(player, giveItemMenu); ChatMenus.OpenMenu(player, giveItemMenu);

View File

@@ -1,23 +1,26 @@
using CounterStrikeSharp.API; using CounterStrikeSharp.API;
using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Core;
using CounterStrikeSharp.API.Modules.Entities; using CounterStrikeSharp.API.Modules.Entities;
using CounterStrikeSharp.API.Core.Attributes.Registration;
namespace WeaponPaints namespace WeaponPaints
{ {
public partial class WeaponPaints public partial class WeaponPaints
{ {
private void RegisterEvents() private void RegisterListeners()
{ {
RegisterListener<Listeners.OnEntitySpawned>(OnEntitySpawned); RegisterListener<Listeners.OnEntitySpawned>(OnEntitySpawned);
RegisterListener<Listeners.OnClientAuthorized>(OnClientAuthorized); RegisterListener<Listeners.OnClientAuthorized>(OnClientAuthorized);
RegisterListener<Listeners.OnClientDisconnect>(OnClientDisconnect); RegisterListener<Listeners.OnClientDisconnect>(OnClientDisconnect);
RegisterListener<Listeners.OnMapStart>(OnMapStart); RegisterListener<Listeners.OnMapStart>(OnMapStart);
//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);
*/
} }
/*private HookResult OnPlayerConnectFull(EventPlayerConnectFull @event, GameEventInfo info) /*private HookResult OnPlayerConnectFull(EventPlayerConnectFull @event, GameEventInfo info)
@@ -51,7 +54,27 @@ namespace WeaponPaints
NativeAPI.IssueServerCommand("mp_t_default_melee \"\""); NativeAPI.IssueServerCommand("mp_t_default_melee \"\"");
NativeAPI.IssueServerCommand("mp_ct_default_melee \"\""); NativeAPI.IssueServerCommand("mp_ct_default_melee \"\"");
NativeAPI.IssueServerCommand("mp_equipment_reset_rounds 0"); NativeAPI.IssueServerCommand("mp_equipment_reset_rounds 0");
if (Config.GlobalShare)
GlobalShareConnect();
}); });
g_hTimerCheckSkinsData = AddTimer(10.0f, () =>
{
List<CCSPlayerController> players = Utilities.GetPlayers();
foreach (CCSPlayerController player in players)
{
if (player == null || !player.IsValid || player.IsBot || player.IsHLTV || player.SteamID == 0) continue;
if (gPlayerWeaponsInfo.ContainsKey((int)player.Index)) continue;
if (Config.Additional.SkinEnabled && weaponSync != null)
_ = weaponSync.GetWeaponPaintsFromDatabase((int)player.Index);
if (Config.Additional.KnifeEnabled && weaponSync != null)
_ = weaponSync.GetKnifeFromDatabase((int)player.Index);
}
}, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE | CounterStrikeSharp.API.Modules.Timers.TimerFlags.REPEAT);
} }
private void OnClientAuthorized(int playerSlot, SteamID steamID) private void OnClientAuthorized(int playerSlot, SteamID steamID)
@@ -60,29 +83,51 @@ namespace WeaponPaints
CCSPlayerController? player = Utilities.GetPlayerFromIndex(playerIndex); CCSPlayerController? player = Utilities.GetPlayerFromIndex(playerIndex);
if (player == null || !player.IsValid || player.IsHLTV) return; if (player == null || !player.IsValid || player.IsBot || player.IsHLTV) return;
if (Config.Additional.SkinEnabled && weaponSync != null) if (Config.Additional.SkinEnabled && weaponSync != null)
_ = weaponSync.GetWeaponPaintsFromDatabase(playerIndex); _ = weaponSync.GetWeaponPaintsFromDatabase(playerIndex);
if (Config.Additional.KnifeEnabled && weaponSync != null) if (Config.Additional.KnifeEnabled && weaponSync != null)
_ = weaponSync.GetKnifeFromDatabase(playerIndex); _ = weaponSync.GetKnifeFromDatabase(playerIndex);
/*
Task.Run(async () =>
{
if (Config.Additional.SkinEnabled && weaponSync != null)
await weaponSync.GetWeaponPaintsFromDatabase(playerIndex);
if (Config.Additional.KnifeEnabled && weaponSync != null)
await weaponSync.GetKnifeFromDatabase(playerIndex);
});
*/
} }
/* WORKAROUND FOR CLIENTS WITHOUT STEAMID ON AUTHORIZATION */
[GameEventHandler]
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))
{
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);
/*
AddTimer(2.0f, () =>
{
if (!gPlayerWeaponsInfo.ContainsKey((int)player.Index))
{
Console.WriteLine($"[WeaponPaints] Last try 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);
}
});
*/
}
return HookResult.Continue;
}
private void OnClientDisconnect(int playerSlot) private void OnClientDisconnect(int playerSlot)
{ {
CCSPlayerController player = Utilities.GetPlayerFromSlot(playerSlot); CCSPlayerController player = Utilities.GetPlayerFromSlot(playerSlot);
if (player == null || !player.IsValid || player.IsHLTV) return; if (player == null || !player.IsValid || player.IsBot || player.IsHLTV) return;
if (Config.Additional.KnifeEnabled) if (Config.Additional.KnifeEnabled)
g_playersKnife.Remove((int)player.Index); g_playersKnife.Remove((int)player.Index);
@@ -90,6 +135,7 @@ namespace WeaponPaints
gPlayerWeaponsInfo.Remove((int)player.Index); gPlayerWeaponsInfo.Remove((int)player.Index);
} }
[GameEventHandler]
private HookResult OnPlayerSpawn(EventPlayerSpawn @event, GameEventInfo info) private HookResult OnPlayerSpawn(EventPlayerSpawn @event, GameEventInfo info)
{ {
CCSPlayerController? player = @event.Userid; CCSPlayerController? player = @event.Userid;
@@ -112,6 +158,7 @@ namespace WeaponPaints
return HookResult.Continue; return HookResult.Continue;
} }
[GameEventHandler(HookMode.Pre)]
private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo info) private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo info)
{ {
NativeAPI.IssueServerCommand("mp_t_default_melee \"\""); NativeAPI.IssueServerCommand("mp_t_default_melee \"\"");
@@ -123,12 +170,14 @@ namespace WeaponPaints
return HookResult.Continue; return HookResult.Continue;
} }
[GameEventHandler]
private HookResult OnRoundEnd(EventRoundEnd @event, GameEventInfo info) private HookResult OnRoundEnd(EventRoundEnd @event, GameEventInfo info)
{ {
g_bCommandsAllowed = false; g_bCommandsAllowed = false;
return HookResult.Continue; return HookResult.Continue;
} }
[GameEventHandler]
private HookResult OnItemPickup(EventItemPickup @event, GameEventInfo info) private HookResult OnItemPickup(EventItemPickup @event, GameEventInfo info)
{ {
if (@event.Defindex == 42 || @event.Defindex == 59) if (@event.Defindex == 42 || @event.Defindex == 59)
@@ -143,7 +192,7 @@ namespace WeaponPaints
g_knifePickupCount[(int)player.Index]++; g_knifePickupCount[(int)player.Index]++;
RemovePlayerKnife(player, true); RemovePlayerKnife(player, true);
AddTimer(0.3f, ()=> GiveKnifeToPlayer(player)); AddTimer(0.3f, () => GiveKnifeToPlayer(player));
//RefreshPlayerKnife(player); //RefreshPlayerKnife(player);
/* /*
@@ -216,6 +265,8 @@ namespace WeaponPaints
catch (Exception) { } catch (Exception) { }
}); });
} }
[GameEventHandler]
private HookResult OnEventItemPurchasePost(EventItemPurchase @event, GameEventInfo info) private HookResult OnEventItemPurchasePost(EventItemPurchase @event, GameEventInfo info)
{ {
CCSPlayerController? player = @event.Userid; CCSPlayerController? player = @event.Userid;

View File

@@ -224,11 +224,18 @@ namespace WeaponPaints
Server.NextFrame(() => Server.NextFrame(() =>
{ {
newWeapon.Clip1 = clip1; if (newWeapon == null) return;
newWeapon.ReserveAmmo[0] = reservedAmmo; try
{
newWeapon.Clip1 = clip1;
newWeapon.ReserveAmmo[0] = reservedAmmo;
}
catch (Exception)
{ }
}); });
} }
} catch(Exception ex) }
catch (Exception ex)
{ {
Console.WriteLine("[WeaponPaints] Refreshing weapons exception"); Console.WriteLine("[WeaponPaints] Refreshing weapons exception");
Console.WriteLine(ex.Message); Console.WriteLine(ex.Message);
@@ -244,7 +251,7 @@ namespace WeaponPaints
{ {
if (!_config.Additional.KnifeEnabled) return false; if (!_config.Additional.KnifeEnabled) return false;
if (player == null || !player.IsValid) if (player == null || !player.IsValid || !player.Pawn.IsValid)
{ {
return false; return false;
} }
@@ -253,7 +260,7 @@ namespace WeaponPaints
return false; return false;
var weapons = player.PlayerPawn.Value.WeaponServices.MyWeapons; var weapons = player.PlayerPawn.Value.WeaponServices.MyWeapons;
if (weapons == null || weapons.Count <= 0) return false; if (weapons == null) return false;
foreach (var weapon in weapons) foreach (var weapon in weapons)
{ {
if (weapon != null && weapon.IsValid && weapon.Value != null && weapon.Value.IsValid) if (weapon != null && weapon.IsValid && weapon.Value != null && weapon.Value.IsValid)

View File

@@ -11,12 +11,14 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig<WeaponPaintsConfig
public override string ModuleName => "WeaponPaints"; public override string ModuleName => "WeaponPaints";
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 ModuleAuthor => "Nereziel & daffyy"; public override string ModuleAuthor => "Nereziel & daffyy";
public override string ModuleVersion => "1.3a"; public override string ModuleVersion => "1.3b";
public WeaponPaintsConfig Config { get; set; } = new(); public WeaponPaintsConfig Config { get; set; } = new();
internal static WeaponPaintsConfig _config = new WeaponPaintsConfig(); internal static WeaponPaintsConfig _config = new WeaponPaintsConfig();
internal static WeaponSynchronization? weaponSync; internal static WeaponSynchronization? weaponSync;
private CounterStrikeSharp.API.Modules.Timers.Timer? g_hTimerCheckSkinsData = null;
/* /*
private Dictionary<int, Dictionary<int, int>> gPlayerWeaponPaints = new(); private Dictionary<int, Dictionary<int, int>> gPlayerWeaponPaints = new();
private Dictionary<int, Dictionary<int, int>> gPlayerWeaponSeed = new(); private Dictionary<int, Dictionary<int, int>> gPlayerWeaponSeed = new();
@@ -101,10 +103,6 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig<WeaponPaintsConfig
Utility.TestDatabaseConnection(); Utility.TestDatabaseConnection();
} }
if (Config.GlobalShare)
GlobalShareConnect();
weaponSync = new WeaponSynchronization(DatabaseConnectionString, Config, GlobalShareApi, GlobalShareServerId); weaponSync = new WeaponSynchronization(DatabaseConnectionString, Config, GlobalShareApi, GlobalShareServerId);
if (hotReload) if (hotReload)
@@ -128,7 +126,7 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig<WeaponPaintsConfig
if (Config.Additional.SkinEnabled) if (Config.Additional.SkinEnabled)
SetupSkinsMenu(); SetupSkinsMenu();
RegisterEvents(); RegisterListeners();
RegisterCommands(); RegisterCommands();
Utility.LoadSkinsFromFile(ModuleDirectory + "/skins.json"); Utility.LoadSkinsFromFile(ModuleDirectory + "/skins.json");