Raised This Month: $90 Target: $400
 22% 

[TF2] Econ Data (supercedes TF2IDB, TF2ItemsInfo) (0.7.1, 2019-03-21)


Post New Thread Reply   
 
Thread Tools Display Modes
Author
nosoop
Senior Member
Join Date: Aug 2014
Plugin ID:
6476
Plugin Version:
0.7.1
Plugin Category:
Technical/Development
Plugin Game:
Team Fortress 2
Plugin Dependencies:
    Servers with this Plugin:
     
    Plugin Description:
    Exposes natives to read properties from TF2's item definitions in-memory
    Old 03-17-2019 , 07:17   [TF2] Econ Data (supercedes TF2IDB, TF2ItemsInfo) (0.7.1, 2019-03-21)
    Reply With Quote #1

    Description:
    Read TF2 item definition properties from game memory. Alternative to TF2ItemsInfo (only took 7 years for that mem-hacking version!) and TF2 Item DB.

    ConVars:
    • tfecondata_version: Version string. No touchy.
    Dependencies:
    • stocksoup is used to compile the shared plugin, using a few of its handle and memory-related stock functions. You don't need it unless you're interested in working on the library itself. It's set up as a git submodule, so do a recursive clone to get the correct version.
    Installation:
    Go to the releases page and get the following:
    • Copy tf_econ_data.smx to plugins/
    • Copy tf2.econ_data.txt to gamedata/
    • Copy tf_econ_data.inc to scripting/include/
    For plugin developers:
    Some example code is provided in the project README. The include file should be easy enough to read if you're familiar with how TF2 handles items; if there's anything that is unclear file an issue or post in the thread.

    I've also written up a list of equivalent natives between TF2II / TF2IDB and this library, for any developers that want to migrate.

    Important breaking changes / fixes for server operators running older versions:
    • 0.6.0 Deprecates TF2Econ_IsValidDefinitionIndex in favor of TF2Econ_IsValidItemDefinition. Both function names will continue to work, but this makes things consistent for when I eventually add TF2Econ_IsValidAttributeDefinition or something.
    • 0.5.1 Rectifies an issue in 0.5.0 where SourceMod crashes due to nonexisting keys.

    Source / Download
    __________________
    I do TF2, TF2 servers, and TF2 plugins.
    I don't do DMs over Discord -- PM me on the forums regarding inquiries.
    AlliedModders Releases / Github / TF2 Server / Donate (BTC / BCH)

    Last edited by nosoop; Today at 08:35. Reason: add port guide
    nosoop is online now
    Benoist3012
    Veteran Member
    Join Date: Mar 2014
    Location: CWave::ForceFinish()
    Old 03-17-2019 , 08:10   Re: [TF2] Econ Data (supercedes TF2IDB, TF2ItemsInfo)
    Reply With Quote #2

    Amazing!

    I started something similar as a SM extension but with your plugin out, I've no need to work on that

    Only thing to worry about is the gamedata, but I don't think the tf team is touching those functions anytime soon. Anyway great replacement for tf2ii & tf2idb thanks again.
    __________________
    Benoist3012 is offline
    nosoop
    Senior Member
    Join Date: Aug 2014
    Old 03-18-2019 , 01:37   Re: [TF2] Econ Data (supercedes TF2IDB, TF2ItemsInfo)
    Reply With Quote #3

    Quote:
    Originally Posted by Benoist3012 View Post
    Only thing to worry about is the gamedata, but I don't think the tf team is touching those functions anytime soon.
    Yeah; thinking about adding a few Linux-specific assertions to make sure the member offsets are correct (I'd assume that the member layout is the same on both platforms). Should probably add a few safeguards on unavailable SDKCalls as well.

    Otherwise, I'm not too worried about updates since I documented how to find the signatures / offsets to some extent; the bus factor should be greater than 1.

    Edit: I've written a basic porting guide for those that want to migrate plugins to this library from TF2ItemsInfo and TF2IDB. I'll get around to adding attribute support eventually, but for items you should be all set to migrate.

    Edit (2): 0.6.0 has been released. The only important change here is that a function was renamed. Plugins compiled against the older version will still work (the native is also mapped to the old function name), but I wanted to make this change while this plugin's still new.
    __________________
    I do TF2, TF2 servers, and TF2 plugins.
    I don't do DMs over Discord -- PM me on the forums regarding inquiries.
    AlliedModders Releases / Github / TF2 Server / Donate (BTC / BCH)

    Last edited by nosoop; 03-18-2019 at 12:22.
    nosoop is online now
    404UNF
    ( ͡ ͜ʖ ͡)
    Join Date: Dec 2011
    Location: 🍁
    Old 03-18-2019 , 18:08   Re: [TF2] Econ Data (supercedes TF2IDB, TF2ItemsInfo)
    Reply With Quote #4

    Quote:
    Originally Posted by nosoop View Post
    Yeah; thinking about adding a few Linux-specific assertions to make sure the member offsets are correct (I'd assume that the member layout is the same on both platforms). Should probably add a few safeguards on unavailable SDKCalls as well.

    Otherwise, I'm not too worried about updates since I documented how to find the signatures / offsets to some extent; the bus factor should be greater than 1.

    Edit: I've written a basic porting guide for those that want to migrate plugins to this library from TF2ItemsInfo and TF2IDB. I'll get around to adding attribute support eventually, but for items you should be all set to migrate.

    Edit (2): 0.6.0 has been released. The only important change here is that a function was renamed. Plugins compiled against the older version will still work (the native is also mapped to the old function name), but I wanted to make this change while this plugin's still new.

    This thing's only been out for a day, I think it'd be safe to just scrap the old name entirely.
    __________________

    404UNF is offline
    nosoop
    Senior Member
    Join Date: Aug 2014
    Old Today , 05:36   Re: [TF2] Econ Data (supercedes TF2IDB, TF2ItemsInfo)
    Reply With Quote #5

    Quote:
    Originally Posted by 404UNF View Post
    This thing's only been out for a day, I think it'd be safe to just scrap the old name entirely.
    I like my backwards compatibility reeeee

    Anyways, 0.7.1 has been released with support to convert item slot names to indices and vice-versa.

    Considering what I just said about backwards compatibility, ironically enough, I do have to note that the slot values are not compatible with those in TF2IDB and TF2II. Those two plugins return values mapping to CBaseCombatWeapon::GetSlot() (which is what GetPlayerWeaponSlot() uses), while TF2 has a slightly different mapping.

    Here is TF2IDB's list, and this is the current game-specific mapping for comparison (the indices go from 0 to 18 inclusive):

    Code:
    0: primary
    1: secondary
    2: melee
    3: utility
    4: building
    5: pda
    6: pda2
    7: head
    8: misc
    9: action
    11: taunt
    So, if you're porting from one of the two to this plugin, don't use the TF2ItemSlot enum values when checking the result of TF2Econ_GetItemSlot() -- convert between slot indices and names with TF2Econ_TranslateLoadoutSlotIndexToName() and TF2Econ_TranslateLoadoutSlotNameToIndex().

    If you want to access the entity in a specific loadout slot, it'd be preferable to use an SDKCall to CTFPlayer::GetEntityForLoadoutSlot() or use my maintained fork of Powerlord's TF2 Wearables API, which has a native to do just that. Otherwise, you may want to grab a variation of GetSlotByName.
    __________________
    I do TF2, TF2 servers, and TF2 plugins.
    I don't do DMs over Discord -- PM me on the forums regarding inquiries.
    AlliedModders Releases / Github / TF2 Server / Donate (BTC / BCH)

    Last edited by nosoop; Today at 11:12.
    nosoop is online now
    Drixevel
    AlliedModders Donor
    Join Date: Sep 2009
    Location: Somewhere headbangin'
    Old Today , 16:27   Re: [TF2] Econ Data (supercedes TF2IDB, TF2ItemsInfo) (0.7.1, 2019-03-21)
    Reply With Quote #6

    I really appreciate this plugin a lot and the API it offers, thank you very much.
    Drixevel is offline
    Reply


    Thread Tools
    Display Modes

    Posting Rules
    You may not post new threads
    You may not post replies
    You may not post attachments
    You may not edit your posts

    BB code is On
    Smilies are On
    [IMG] code is On
    HTML code is Off

    Forum Jump


    All times are GMT -4. The time now is 19:56.


    Powered by vBulletin®
    Copyright ©2000 - 2019, vBulletin Solutions, Inc.
    Theme made by Freecode