Re: [Metamod] Get Private Data Index
Quote:
Originally Posted by claudiuhks
(Post 2295196)
To get INT value.
PHP Code:
int Value = 0;
#if !defined(__linux__) Value = *((int *)pEntity->pvPrivateData + OFFSET_ID); #else Value = *((int *)pEntity->pvPrivateData + OFFSET_ID + OFFSET_LINUX); #endif
Sometimes, OFFSET_ID can be a mix like (OFFSET_SOMETHING + OFFSET_SOMETHING_ELSE) and OFFSET_LINUX can be 4 (for Weapon edicts on Linux).
Have you browsed CStrike?
|
I want to retrieve what weapons I have in slot1/2/3/4/5, what data value does m_rgpPlayerItemsSlot return? I try to convert this AMX to C++. I did not see the cstrike, but I did see how get_pdata_cbase and get_pdata_int work in hamsandwich and fakemeta, however, the result sometimes makes the CS crash, sometimes it returns invalid integer. And as long as I know there's no offset changes for Windows :)
AMXX
PHP Code:
Get_WeaponSlot(iIndex, iSlot, &iEnt) { if (!( 1 <= iSlot <= 5)) return 0; iEnt = 0; iEnt = get_pdata_cbase(iIndex , m_rgpPlayerItems_Slot0 + iSlot, XTRA_OFS_WEAPON); return (iEnt > 0) ? get_pdata_int(iEnt , m_iId, XTRA_OFS_WEAPON) : 0; }
C++ (So far I've tried)
PHP Code:
edict_t *pItem; pItem = ENT(pPlayer->.pvPrivateData + m_rpgPlayerItemsSlot0 + 2); // Get slot 2, 367 + 2
Util.Print_Console(pEnt, "Class %s\n", pItem->v.classname); // returns (null)
int iWpn = *((int *)pItem->pvPrivateData + m_iId)); // offset 43
Util.Print_Console(pEnt, "Wpn ID %d\n", iWpn); // this is crashed
PHP Code:
int iItem = *((int *)pEntity->pvPrivateData + m_rpgPlayerItemsSlot0 + 2));
Util.Print_Console(pEnt, "Index %d\n", iItem); // returns numbers as thousands
I use Windows btw. :)
|