11using CounterStrikeSharp . API . Core ;
22using CounterStrikeSharp . API . Modules . Admin ;
33using CounterStrikeSharp . API ;
4+ using Newtonsoft . Json ;
5+ using Spawn_Loadout_GoldKingZ . Config ;
46
57namespace Spawn_Loadout_GoldKingZ ;
68
79public class Helper
810{
11+ public static readonly string [ ] WeaponsList =
12+ {
13+ "weapon_ak47" , "weapon_aug" , "weapon_awp" , "weapon_bizon" , "weapon_cz75a" , "weapon_deagle" , "weapon_elite" , "weapon_famas" , "weapon_fiveseven" , "weapon_g3sg1" , "weapon_galilar" ,
14+ "weapon_glock" , "weapon_hkp2000" , "weapon_m249" , "weapon_m4a1" , "weapon_m4a1_silencer" , "weapon_mac10" , "weapon_mag7" , "weapon_mp5sd" , "weapon_mp7" , "weapon_mp9" , "weapon_negev" ,
15+ "weapon_nova" , "weapon_p250" , "weapon_p90" , "weapon_revolver" , "weapon_sawedoff" , "weapon_scar20" , "weapon_sg556" , "weapon_ssg08" , "weapon_tec9" , "weapon_ump45" , "weapon_usp_silencer" , "weapon_xm1014" ,
16+ "weapon_decoy" , "weapon_flashbang" , "weapon_hegrenade" , "weapon_incgrenade" , "weapon_molotov" , "weapon_smokegrenade" , "item_defuser" , "item_cutters" , "weapon_knife"
17+ } ;
918 public static bool IsPlayerInGroupPermission ( CCSPlayerController player , string groups )
1019 {
1120 var excludedGroups = groups . Split ( ',' ) ;
@@ -27,15 +36,145 @@ public static bool IsPlayerInGroupPermission(CCSPlayerController player, string
2736
2837 public static void ClearVariables ( )
2938 {
30- Globals . VipsFlag . Clear ( ) ;
31- Globals . Gived . Clear ( ) ;
32- Globals . NadeGived . Clear ( ) ;
33- Globals . VipGived . Clear ( ) ;
34- Globals . VipNadeGived . Clear ( ) ;
39+ Globals . loadoutsGivenPerPlayer . Clear ( ) ;
3540 }
3641 public static List < CCSPlayerController > GetAllController ( )
3742 {
3843 var playerList = Utilities . FindAllEntitiesByDesignerName < CCSPlayerController > ( "cs_player_controller" ) . Where ( p => p != null && p . IsValid && ! p . IsBot && ! p . IsHLTV && p . Connected == PlayerConnectedState . PlayerConnected ) . ToList ( ) ;
3944 return playerList ;
4045 }
46+
47+ public static void GiveWeaponsToPlayer ( CCSPlayerController player , string weapons )
48+ {
49+ if ( player != null && player . IsValid )
50+ {
51+ string [ ] weaponList = weapons . Split ( ',' ) ;
52+ foreach ( var weapon in weaponList )
53+ {
54+ Configs . Shared . CustomFunctions ! . PlayerGiveNamedItem ( player , weapon ) ;
55+
56+ foreach ( var entity in Utilities . FindAllEntitiesByDesignerName < CBaseEntity > ( weapon ) )
57+ {
58+ if ( entity . DesignerName != weapon ) continue ;
59+ if ( entity == null ) continue ;
60+ if ( entity . Entity == null ) continue ;
61+ if ( entity . OwnerEntity == null ) continue ;
62+ if ( entity . OwnerEntity . IsValid ) continue ;
63+
64+ entity . AcceptInput ( "Kill" ) ;
65+ break ;
66+ }
67+ }
68+ }
69+ }
70+
71+ public static void ClearGroundWeapons ( )
72+ {
73+ foreach ( string Weapons in WeaponsList )
74+ {
75+ foreach ( var entity in Utilities . FindAllEntitiesByDesignerName < CBaseEntity > ( Weapons ) )
76+ {
77+ if ( entity == null ) continue ;
78+ if ( entity . Entity == null ) continue ;
79+ if ( entity . OwnerEntity == null ) continue ;
80+ if ( entity . OwnerEntity . IsValid ) continue ;
81+
82+ entity . AcceptInput ( "Kill" ) ;
83+ }
84+ }
85+ }
86+
87+ public static void DropAllWeapons ( CCSPlayerController player )
88+ {
89+ if ( player == null || ! player . IsValid ) return ;
90+ if ( player . PlayerPawn == null || ! player . PlayerPawn . IsValid ) return ;
91+ if ( ! player . PawnIsAlive ) return ;
92+ if ( player . PlayerPawn . Value == null || ! player . PlayerPawn . Value . IsValid ) return ;
93+ if ( player . PlayerPawn . Value . WeaponServices == null || player . PlayerPawn . Value . WeaponServices . MyWeapons == null ) return ;
94+
95+ foreach ( var weapon in player . PlayerPawn . Value . WeaponServices . MyWeapons )
96+ {
97+ if ( weapon is { IsValid : true , Value . IsValid : true } && ! weapon . Value . DesignerName . Contains ( "weapon_knife" ) )
98+ {
99+ player . DropActiveWeapon ( ) ;
100+
101+ weapon . Value . Remove ( ) ;
102+ }
103+ }
104+
105+ }
106+ public static void CreateDefaultWeaponsJson ( )
107+ {
108+ if ( Configs . Shared . CookiesModule == null ) return ;
109+ var FolderConfig = Path . Combine ( Configs . Shared . CookiesModule , "../../plugins/Spawn-Loadout-GoldKingZ/config/" ) ;
110+ var configcfg = Path . Combine ( FolderConfig , "weapons.json" ) ;
111+
112+ if ( ! Directory . Exists ( FolderConfig ) || ! File . Exists ( configcfg ) )
113+ {
114+ if ( ! Directory . Exists ( FolderConfig ) )
115+ {
116+ Directory . CreateDirectory ( FolderConfig ) ;
117+ }
118+
119+ var weaponsData = new
120+ {
121+ ANY = new
122+ {
123+ LOADOUT_1 = new
124+ {
125+ FLAGS = "@css/root,@css/admin,@css/vip,#css/admin,#css/vip" ,
126+ CT = "weapon_taser,weapon_decoy" ,
127+ T = "weapon_taser,weapon_decoy" ,
128+ CT_Refill_Nades = "weapon_decoy" ,
129+ CT_Refill_Time_InSec = 30 ,
130+ T_Refill_Nades = "weapon_decoy" ,
131+ T_Refill_Time_InSec = 30
132+ } ,
133+ LOADOUT_2 = new
134+ {
135+ GiveThisLoadOutPerRoundOnly = true ,
136+ CT = "weapon_hkp2000,weapon_knife,weapon_smokegrenade" ,
137+ T = "weapon_hkp2000,weapon_knife,weapon_smokegrenade"
138+ }
139+ } ,
140+ hns_ = new
141+ {
142+ LOADOUT_1 = new
143+ {
144+ FLAGS = "@css/root,@css/admin,@css/vip,#css/admin,#css/vip" ,
145+ CT_Refill_Nades = "weapon_decoy" ,
146+ CT_Refill_Time_InSec = 30 ,
147+ T_Refill_Nades = "weapon_decoy" ,
148+ T_Refill_Time_InSec = 30
149+ } ,
150+ LOADOUT_2 = new
151+ {
152+ GiveThisLoadOutPerRoundOnly = true ,
153+ CT = "weapon_decoy,weapon_knife" ,
154+ T = "weapon_decoy,weapon_knife"
155+ }
156+ } ,
157+ awp_lego_2_cs2 = new
158+ {
159+ ForceStripPlayers = true ,
160+ DeleteGroundWeapons = true ,
161+ LOADOUT_1 = new
162+ {
163+ FLAGS = "@css/root,@css/admin,@css/vip,#css/admin,#css/vip" ,
164+ CT = "weapon_deagle" ,
165+ T = "weapon_deagle"
166+ } ,
167+ LOADOUT_2 = new
168+ {
169+ CT = "weapon_awp,weapon_knife" ,
170+ T = "weapon_awp,weapon_knife"
171+ }
172+ }
173+ } ;
174+
175+ var jsonContent = JsonConvert . SerializeObject ( weaponsData , Formatting . Indented ) ;
176+
177+ File . WriteAllText ( configcfg , jsonContent ) ;
178+ }
179+ }
41180}
0 commit comments