62 lines
1.4 KiB
C++
62 lines
1.4 KiB
C++
|
#include "fakemeta_amxx.h"
|
||
|
|
||
|
static cell AMX_NATIVE_CALL set_pdata_int(AMX *amx, cell *params)
|
||
|
{
|
||
|
int index=params[1];
|
||
|
CHECK_ENTITY(index);
|
||
|
int iOffset=params[2];
|
||
|
if (iOffset <0)
|
||
|
return 1;
|
||
|
#ifdef __linux__
|
||
|
iOffset += params[4];
|
||
|
#endif
|
||
|
int iValue=params[3];
|
||
|
*((int *)INDEXENT2(index)->pvPrivateData + iOffset) = iValue;
|
||
|
return 1;
|
||
|
}
|
||
|
static cell AMX_NATIVE_CALL get_pdata_int(AMX *amx, cell *params)
|
||
|
{
|
||
|
int index=params[1];
|
||
|
CHECK_ENTITY(index);
|
||
|
int iOffset=params[2];
|
||
|
if (iOffset <0)
|
||
|
return 0;
|
||
|
#ifdef __linux__
|
||
|
iOffset += params[3];
|
||
|
#endif
|
||
|
return *((int *)INDEXENT2(index)->pvPrivateData + iOffset);
|
||
|
}
|
||
|
// Float
|
||
|
static cell AMX_NATIVE_CALL set_pdata_float(AMX *amx, cell *params)
|
||
|
{
|
||
|
int index=params[1];
|
||
|
CHECK_ENTITY(index);
|
||
|
int iOffset=params[2];
|
||
|
if (iOffset <0)
|
||
|
return 1;
|
||
|
#ifdef __linux__
|
||
|
iOffset += params[4];
|
||
|
#endif
|
||
|
float fValue=amx_ctof(params[3]);
|
||
|
*((float *)INDEXENT2(index)->pvPrivateData + iOffset) = fValue;
|
||
|
return 1;
|
||
|
}
|
||
|
static cell AMX_NATIVE_CALL get_pdata_float(AMX *amx, cell *params)
|
||
|
{
|
||
|
int index=params[1];
|
||
|
CHECK_ENTITY(index);
|
||
|
int iOffset=params[2];
|
||
|
if (iOffset <0)
|
||
|
return 1;
|
||
|
#ifdef __linux__
|
||
|
iOffset += params[3];
|
||
|
#endif
|
||
|
return amx_ftoc(*((float *)INDEXENT2(index)->pvPrivateData + iOffset));
|
||
|
}
|
||
|
AMX_NATIVE_INFO pdata_natives[] = {
|
||
|
{ "get_pdata_int", get_pdata_int },
|
||
|
{ "set_pdata_int", set_pdata_int },
|
||
|
{ "get_pdata_float", get_pdata_float },
|
||
|
{ "set_pdata_float", set_pdata_float },
|
||
|
{ NULL, NULL }
|
||
|
};
|