Skip to content

Commit c03048a

Browse files
Add TF2Econ_IsItemInBaseSet native (#12)
1 parent 2b27804 commit c03048a

File tree

4 files changed

+30
-0
lines changed

4 files changed

+30
-0
lines changed

gamedata/tf2.econ_data.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,12 @@
138138
"linux" "220"
139139
"windows" "220"
140140
}
141+
"CEconItemDefinition::m_bBaseItem"
142+
{
143+
// x-ref "baseitem" in CEconItemDefinition::BInitFromKV()
144+
"linux" "230"
145+
"windows" "230"
146+
}
141147
"CEconItemDefinition::m_bitsEquipRegionGroups"
142148
{
143149
// result of CEconItemSchema::GetEquipRegionBitMaskByName() call

scripting/include/tf_econ_data.inc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ typedef ItemFilterCriteria = function bool(int itemdef, any data);
4444
*/
4545
native bool TF2Econ_IsValidItemDefinition(int itemdef);
4646

47+
/**
48+
* Returns true if item is in base set (corresponds to the "baseitem" key).
49+
*/
50+
native bool TF2Econ_IsItemInBaseSet(int itemdef);
51+
4752
/**
4853
* Returns the item's name (corresponds to the "name" key).
4954
*/

scripting/tf_econ_data.sp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ public APLRes AskPluginLoad2(Handle self, bool late, char[] error, int maxlen) {
5353

5454
// item information
5555
CreateNative("TF2Econ_IsValidItemDefinition", Native_IsValidItemDefinition);
56+
CreateNative("TF2Econ_IsItemInBaseSet", Native_IsItemInBaseSet);
5657
CreateNative("TF2Econ_GetItemName", Native_GetItemName);
5758
CreateNative("TF2Econ_GetLocalizedItemName", Native_GetLocalizedItemName);
5859
CreateNative("TF2Econ_GetItemClassName", Native_GetItemClassName);
@@ -219,6 +220,8 @@ public void OnPluginStart() {
219220
GameConfGetAddressOffset(hGameConf, "CEconItemDefinition::m_pszItemClassname");
220221
offs_CEconItemDefinition_pszItemName =
221222
GameConfGetAddressOffset(hGameConf, "CEconItemDefinition::m_pszItemName");
223+
offs_CEconItemDefinition_bBaseItem =
224+
GameConfGetAddressOffset(hGameConf, "CEconItemDefinition::m_bBaseItem");
222225
offs_CEconItemDefinition_bitsEquipRegionGroups =
223226
GameConfGetAddressOffset(hGameConf, "CEconItemDefinition::m_bitsEquipRegionGroups");
224227
offs_CEconItemDefinition_bitsEquipRegionConflicts =

scripting/tf_econ_data/item_definition.sp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Address offs_CEconItemDefinition_pKeyValues,
1111
offs_CEconItemDefinition_pszLocalizedItemName,
1212
offs_CEconItemDefinition_pszItemClassname,
1313
offs_CEconItemDefinition_pszItemName,
14+
offs_CEconItemDefinition_bBaseItem,
1415
offs_CEconItemDefinition_bitsEquipRegionGroups,
1516
offs_CEconItemDefinition_bitsEquipRegionConflicts;
1617
Address offs_CEconItemDefinition_aiItemSlot,
@@ -278,6 +279,21 @@ public int Native_GetItemDefinitionString(Handle hPlugin, int nParams) {
278279
return !!buffer[0];
279280
}
280281

282+
/**
283+
* native int(int itemdef);
284+
*
285+
* Returns whenever item is in base set, false if the item definition does not exist.
286+
*/
287+
public int Native_IsItemInBaseSet(Handle hPlugin, int nParams) {
288+
int defindex = GetNativeCell(1);
289+
Address pItemDef = GetEconItemDefinition(defindex);
290+
if (!pItemDef) {
291+
return false;
292+
}
293+
return !!LoadFromAddress(pItemDef + offs_CEconItemDefinition_bBaseItem,
294+
NumberType_Int8);
295+
}
296+
281297
/**
282298
* native bool(int itemdef);
283299
*

0 commit comments

Comments
 (0)