@@ -1,23 +1,26 @@
using CounterStrikeSharp.API ;
using CounterStrikeSharp.API.Core ;
using CounterStrikeSharp.API.Modules.Entities ;
using CounterStrikeSharp.API.Core.Attributes.Registration ;
namespace WeaponPaints
{
public partial class WeaponPaints
{
private void RegisterEvent s ( )
private void RegisterListener s ( )
{
RegisterListener < Listeners . OnEntitySpawned > ( OnEntitySpawned ) ;
RegisterListener < Listeners . OnClientAuthorized > ( OnClientAuthorized ) ;
RegisterListener < Listeners . OnClientDisconnect > ( OnClientDisconnect ) ;
RegisterListener < Listeners . OnMapStart > ( OnMapStart ) ;
//RegisterEventHandler<EventPlayerConnectFull>(OnPlayerConnectFull);
/*
RegisterEventHandler<EventPlayerConnectFull>(OnPlayerConnectFull);
RegisterEventHandler<EventPlayerSpawn>(OnPlayerSpawn);
RegisterEventHandler<EventRoundStart>(OnRoundStart, HookMode.Pre);
RegisterEventHandler<EventRoundEnd>(OnRoundEnd);
RegisterEventHandler<EventItemPurchase>(OnEventItemPurchasePost);
RegisterEventHandler<EventItemPickup>(OnItemPickup);
*/
}
/*private HookResult OnPlayerConnectFull(EventPlayerConnectFull @event, GameEventInfo info)
@@ -55,37 +58,76 @@ namespace WeaponPaints
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 )
{
int playerIndex = playerSlot + 1 ;
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 )
_ = weaponSync . GetWeaponPaintsFromDatabase ( playerIndex ) ;
if ( Config . Additional . KnifeEnabled & & weaponSync ! = null )
_ = 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 )
{
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 )
g_playersKnife . Remove ( ( int ) player . Index ) ;
@@ -93,6 +135,7 @@ namespace WeaponPaints
gPlayerWeaponsInfo . Remove ( ( int ) player . Index ) ;
}
[GameEventHandler]
private HookResult OnPlayerSpawn ( EventPlayerSpawn @event , GameEventInfo info )
{
CCSPlayerController ? player = @event . Userid ;
@@ -115,6 +158,7 @@ namespace WeaponPaints
return HookResult . Continue ;
}
[GameEventHandler(HookMode.Pre)]
private HookResult OnRoundStart ( EventRoundStart @event , GameEventInfo info )
{
NativeAPI . IssueServerCommand ( "mp_t_default_melee \"\"" ) ;
@@ -126,12 +170,14 @@ namespace WeaponPaints
return HookResult . Continue ;
}
[GameEventHandler]
private HookResult OnRoundEnd ( EventRoundEnd @event , GameEventInfo info )
{
g_bCommandsAllowed = false ;
return HookResult . Continue ;
}
[GameEventHandler]
private HookResult OnItemPickup ( EventItemPickup @event , GameEventInfo info )
{
if ( @event . Defindex = = 42 | | @event . Defindex = = 59 )
@@ -146,7 +192,7 @@ namespace WeaponPaints
g_knifePickupCount [ ( int ) player . Index ] + + ;
RemovePlayerKnife ( player , true ) ;
AddTimer ( 0.3f , ( ) = > GiveKnifeToPlayer ( player ) ) ;
AddTimer ( 0.3f , ( ) = > GiveKnifeToPlayer ( player ) ) ;
//RefreshPlayerKnife(player);
/*
@@ -219,6 +265,8 @@ namespace WeaponPaints
catch ( Exception ) { }
} ) ;
}
[GameEventHandler]
private HookResult OnEventItemPurchasePost ( EventItemPurchase @event , GameEventInfo info )
{
CCSPlayerController ? player = @event . Userid ;