AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Module Coding (https://forums.alliedmods.net/forumdisplay.php?f=9)
-   -   [Metamod] Get Private Data Index (https://forums.alliedmods.net/showthread.php?t=262636)

DavidJr 05-09-2015 10:30

[Metamod] Get Private Data Index
 
I tried this but gets the wrong result, how to get it correct?

PHP Code:

int iEnt NULL;
iEnt = *((int *)pEnt->pvPrivateData 367 2); //rgpPlayerItemsSlot0 + 2

Util.Print_Console(pEnt"Error %d\n"iEnt); 


claudiuhks 05-10-2015 08:36

Re: [Metamod] Get Private Data Index
 
Quote:

Originally Posted by DavidJr (Post 2294915)
I tried this but gets the wrong result, how to get it correct?

PHP Code:

int iEnt NULL;
iEnt = *((int *)pEnt->pvPrivateData 367 2); //rgpPlayerItemsSlot0 + 2

Util.Print_Console(pEnt"Error %d\n"iEnt); 


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?

DavidJr 05-10-2015 09:00

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(iIndexiSlot, &iEnt
{
    if (!( 
<= iSlot <= 5)) return 0;
    
    
iEnt 0;
    
    
iEnt get_pdata_cbase(iIndex m_rgpPlayerItems_Slot0 iSlotXTRA_OFS_WEAPON);
    
    return (
iEnt 0) ? get_pdata_int(iEnt m_iIdXTRA_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. :)

claudiuhks 05-10-2015 12:16

Re: [Metamod] Get Private Data Index
 
GetPDataCBase is different. You need more code.


All times are GMT -4. The time now is 21:51.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.