Added FM_KeyValue and get_kv/set_kv natives.

Removed pev natives.

Probably fixed something in DLLFunc_ClientUserInfoChanged.
This commit is contained in:
Johnny Bergström
2005-03-25 09:30:45 +00:00
parent 560f50eda7
commit 81f4a505c1
7 changed files with 141 additions and 23 deletions

View File

@@ -1,20 +1,7 @@
#include "fakemeta_amxx.h"
TraceResult *gfm_tr;
/*enum
{
TR_AllSolid,
TR_StartSolid,
TR_InOpen,
TR_InWater,
TR_flFraction,
TR_vecEndPos,
TR_flPlaneDist,
TR_vecPlaneNormal,
TR_pHit,
TR_iHitgroup,
};*/
KeyValueData *g_fm_keyValueData;
static cell AMX_NATIVE_CALL set_tr(AMX *amx, cell *params)
{
@@ -37,7 +24,8 @@ static cell AMX_NATIVE_CALL set_tr(AMX *amx, cell *params)
}
case TR_StartSolid:
{
return gfm_tr->fStartSolid;
gfm_tr->fStartSolid = *ptr;
return 1;
break;
}
case TR_InWater:
@@ -171,8 +159,93 @@ static cell AMX_NATIVE_CALL get_tr(AMX *amx, cell *params)
}
}
// native set_kv(TraceResult:tr_member, {Float,_}:...);
static cell AMX_NATIVE_CALL set_kv(AMX *amx, cell *params)
{
//if (*params / sizeof(cell) < 2)
//return 0; //TODO: Error
//cell *ptr = MF_GetAmxAddr(amx, params[2]);
//edict_t *e = 0;
switch (params[1])
{
case KV_ClassName:
{
int len;
g_fm_keyValueData->szClassName = MF_GetAmxString(amx, params[2], 0, &len);
return 1;
}
case KV_KeyName:
{
int len;
g_fm_keyValueData->szKeyName = MF_GetAmxString(amx, params[2], 0, &len);
return 1;
}
case KV_Value:
{
int len;
g_fm_keyValueData->szValue = MF_GetAmxString(amx, params[2], 0, &len);
return 1;
}
case KV_fHandled:
{
g_fm_keyValueData->fHandled = params[2];
return 1;
}
default:
{
//TODO: error
return 0;
}
}
}
static cell AMX_NATIVE_CALL get_kv(AMX *amx, cell *params)
{
int type = params[1];
cell *ptr = 0;
const char *szRet = "";
switch (type)
{
case KV_ClassName:
{
if (g_fm_keyValueData->szClassName)
szRet = g_fm_keyValueData->szClassName;
break;
}
case KV_KeyName:
{
if (g_fm_keyValueData->szKeyName)
szRet = g_fm_keyValueData->szKeyName;
break;
}
case KV_Value:
{
if (g_fm_keyValueData->szValue)
szRet = g_fm_keyValueData->szValue;
break;
}
case KV_fHandled: {
return g_fm_keyValueData->fHandled;
}
default:
{
//TODO: error
return 0;
}
}
return MF_SetAmxString(amx, params[2], szRet, params[3]);
}
AMX_NATIVE_INFO tr_Natives[] = {
{"get_tr", get_tr},
{"set_tr", set_tr},
{"get_kv", get_kv},
{"set_kv", set_kv},
{NULL, NULL},
};