Skip to content

Commit ab49abe

Browse files
authored
Merge pull request #89 from T3Marius
Add ItemDefinitionIndex enum and weapon mapping dictionary to Helpers
2 parents 2b582c6 + a5902bf commit ab49abe

File tree

2 files changed

+204
-3
lines changed

2 files changed

+204
-3
lines changed

managed/src/SwiftlyS2.Core/Modules/Helpers/Helpers.cs

Lines changed: 107 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,94 @@ namespace SwiftlyS2.Core.Services;
77

88
internal 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+
}

managed/src/SwiftlyS2.Shared/Modules/Helpers/IHelpers.cs

Lines changed: 97 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,89 @@
22

33
namespace SwiftlyS2.Shared.Helpers;
44

5+
public enum ItemDefinitionIndex
6+
{
7+
// Pistols
8+
Deagle = 1,
9+
Elite = 2,
10+
FiveSeven = 3,
11+
Glock = 4,
12+
Tec9 = 30,
13+
HkP2000 = 32,
14+
P250 = 36,
15+
UspSilencer = 61,
16+
Cz75a = 63,
17+
Revolver = 64,
18+
19+
// Rifles
20+
Ak47 = 7,
21+
Aug = 8,
22+
Awp = 9,
23+
Famas = 10,
24+
G3sg1 = 11,
25+
Galilar = 13,
26+
M249 = 14,
27+
M4a1 = 16,
28+
Mac10 = 17,
29+
P90 = 19,
30+
Mp5sd = 23,
31+
Ump45 = 24,
32+
Xm1014 = 25,
33+
Bizon = 26,
34+
Mag7 = 27,
35+
Negev = 28,
36+
Sawedoff = 29,
37+
Mp7 = 33,
38+
Mp9 = 34,
39+
Nova = 35,
40+
Scar20 = 38,
41+
Sg556 = 39,
42+
Ssg08 = 40,
43+
M4a1Silencer = 60,
44+
45+
// Grenades
46+
Flashbang = 43,
47+
Hegrenade = 44,
48+
Smokegrenade = 45,
49+
Molotov = 46,
50+
Decoy = 47,
51+
Incgrenade = 48,
52+
53+
// Knives and Equipment
54+
Taser = 31,
55+
Knifegg = 41,
56+
Knife = 42,
57+
C4 = 49,
58+
KnifeT = 59,
59+
Bayonet = 500,
60+
KnifeCss = 503,
61+
KnifeFlip = 505,
62+
KnifeGut = 506,
63+
KnifeKarambit = 507,
64+
KnifeM9Bayonet = 508,
65+
KnifeTactical = 509,
66+
KnifeFalchion = 512,
67+
KnifeSurvivalBowie = 514,
68+
KnifeButterfly = 515,
69+
KnifePush = 516,
70+
KnifeCord = 517,
71+
KnifeCanis = 518,
72+
KnifeUrsus = 519,
73+
KnifeGypsyJackknife = 520,
74+
KnifeOutdoor = 521,
75+
KnifeStiletto = 522,
76+
KnifeWidowmaker = 523,
77+
KnifeSkeleton = 525,
78+
KnifeKukri = 526,
79+
80+
// Utility
81+
ItemKevlar = 50,
82+
ItemAssaultsuit = 51,
83+
ItemHeavyassaultsuit = 52,
84+
ItemDefuser = 55,
85+
Ammo50ae = 0
86+
}
87+
588
public interface IHelpers
689
{
790
/// <summary>
@@ -19,5 +102,18 @@ public interface IHelpers
19102
/// <returns>The weapon vdata.</returns>
20103
public CCSWeaponBaseVData? GetWeaponCSDataFromKey(int itemDefinitionIndex);
21104

105+
/// <summary>
106+
/// Get weapon classname from item definition index.
107+
/// </summary>
108+
/// <param name="itemDefinitionIndex">The item definition index of the weapon.</param>
109+
/// <returns>The weapon classname (e.g., "weapon_awp") or null if not found.</returns>
110+
public string? GetClassnameByDefinitionIndex(int itemDefinitionIndex);
111+
112+
/// <summary>
113+
/// Get item definition index from weapon classname.
114+
/// </summary>
115+
/// <param name="classname">The weapon classname (e.g., "weapon_awp").</param>
116+
/// <returns>The item definition index or null if not found.</returns>
117+
public int? GetDefinitionIndexByClassname(string classname);
22118

23-
}
119+
}

0 commit comments

Comments
 (0)