@@ -7,10 +7,94 @@ namespace SwiftlyS2.Core.Services;
77
88internal class HelpersService : IHelpers
99{
10+ public static readonly Dictionary < string , int > WeaponItemDefinitionIndices = new ( )
11+ {
12+ // Pistols
13+ { "weapon_deagle" , 1 } ,
14+ { "weapon_elite" , 2 } ,
15+ { "weapon_fiveseven" , 3 } ,
16+ { "weapon_glock" , 4 } ,
17+ { "weapon_tec9" , 30 } ,
18+ { "weapon_hkp2000" , 32 } ,
19+ { "weapon_p250" , 36 } ,
20+ { "weapon_usp_silencer" , 61 } ,
21+ { "weapon_cz75a" , 63 } ,
22+ { "weapon_revolver" , 64 } ,
23+
24+ // Rifles
25+ { "weapon_ak47" , 7 } ,
26+ { "weapon_aug" , 8 } ,
27+ { "weapon_awp" , 9 } ,
28+ { "weapon_famas" , 10 } ,
29+ { "weapon_g3sg1" , 11 } ,
30+ { "weapon_galilar" , 13 } ,
31+ { "weapon_m249" , 14 } ,
32+ { "weapon_m4a1" , 16 } ,
33+ { "weapon_mac10" , 17 } ,
34+ { "weapon_p90" , 19 } ,
35+ { "weapon_mp5sd" , 23 } ,
36+ { "weapon_ump45" , 24 } ,
37+ { "weapon_xm1014" , 25 } ,
38+ { "weapon_bizon" , 26 } ,
39+ { "weapon_mag7" , 27 } ,
40+ { "weapon_negev" , 28 } ,
41+ { "weapon_sawedoff" , 29 } ,
42+ { "weapon_mp7" , 33 } ,
43+ { "weapon_mp9" , 34 } ,
44+ { "weapon_nova" , 35 } ,
45+ { "weapon_scar20" , 38 } ,
46+ { "weapon_sg556" , 39 } ,
47+ { "weapon_ssg08" , 40 } ,
48+ { "weapon_m4a1_silencer" , 60 } ,
49+
50+ // Grenades
51+ { "weapon_flashbang" , 43 } ,
52+ { "weapon_hegrenade" , 44 } ,
53+ { "weapon_smokegrenade" , 45 } ,
54+ { "weapon_molotov" , 46 } ,
55+ { "weapon_decoy" , 47 } ,
56+ { "weapon_incgrenade" , 48 } ,
57+
58+ // Knives and Equipment
59+ { "weapon_taser" , 31 } ,
60+ { "weapon_knifegg" , 41 } ,
61+ { "weapon_knife" , 42 } ,
62+ { "weapon_c4" , 49 } ,
63+ { "weapon_knife_t" , 59 } ,
64+ { "weapon_bayonet" , 500 } ,
65+ { "weapon_knife_css" , 503 } ,
66+ { "weapon_knife_flip" , 505 } ,
67+ { "weapon_knife_gut" , 506 } ,
68+ { "weapon_knife_karambit" , 507 } ,
69+ { "weapon_knife_m9_bayonet" , 508 } ,
70+ { "weapon_knife_tactical" , 509 } ,
71+ { "weapon_knife_falchion" , 512 } ,
72+ { "weapon_knife_survival_bowie" , 514 } ,
73+ { "weapon_knife_butterfly" , 515 } ,
74+ { "weapon_knife_push" , 516 } ,
75+ { "weapon_knife_cord" , 517 } ,
76+ { "weapon_knife_canis" , 518 } ,
77+ { "weapon_knife_ursus" , 519 } ,
78+ { "weapon_knife_gypsy_jackknife" , 520 } ,
79+ { "weapon_knife_outdoor" , 521 } ,
80+ { "weapon_knife_stiletto" , 522 } ,
81+ { "weapon_knife_widowmaker" , 523 } ,
82+ { "weapon_knife_skeleton" , 525 } ,
83+ { "weapon_knife_kukri" , 526 } ,
84+
85+ // Utility
86+ { "item_kevlar" , 50 } ,
87+ { "item_assaultsuit" , 51 } ,
88+ { "item_heavyassaultsuit" , 52 } ,
89+ { "item_defuser" , 55 } ,
90+ { "ammo_50ae" , 0 }
91+ } ;
92+
1093 public CCSWeaponBaseVData ? GetWeaponCSDataFromKey ( int unknown , string key )
1194 {
1295 nint weaponDataPtr = GameFunctions . GetWeaponCSDataFromKey ( unknown , key ) ;
13- if ( weaponDataPtr == 0 ) {
96+ if ( weaponDataPtr == 0 )
97+ {
1498 return null ;
1599 }
16100 return new CCSWeaponBaseVDataImpl ( weaponDataPtr ) ;
@@ -21,4 +105,25 @@ internal class HelpersService : IHelpers
21105 return GetWeaponCSDataFromKey ( - 1 , itemDefinitionIndex . ToString ( ) ) ;
22106 }
23107
24- }
108+ public string ? GetClassnameByDefinitionIndex ( int itemDefinitionIndex )
109+ {
110+ foreach ( var kvp in WeaponItemDefinitionIndices )
111+ {
112+ if ( kvp . Value == itemDefinitionIndex )
113+ {
114+ return kvp . Key ;
115+ }
116+ }
117+ return null ;
118+ }
119+
120+ public int ? GetDefinitionIndexByClassname ( string classname )
121+ {
122+ if ( WeaponItemDefinitionIndices . TryGetValue ( classname , out int index ) )
123+ {
124+ return index ;
125+ }
126+ return null ;
127+ }
128+
129+ }
0 commit comments