added more strings

This commit is contained in:
David Anderson 2006-03-29 23:57:42 +00:00
parent 5e22cd5f0a
commit a7acf05bfc
2 changed files with 14 additions and 6 deletions

View File

@ -2,7 +2,7 @@
/** Optimizations for Fakemeta. In the end we'll do this for other things too. /** Optimizations for Fakemeta. In the end we'll do this for other things too.
*/ */
static int g_offset_table[pev_vecarray_end] = {-1}; static int g_offset_table[pev_absolute_end] = {-1};
#define DO_OFFSET(offs) g_offset_table[offs] = offsetof(entvars_t, offs) #define DO_OFFSET(offs) g_offset_table[offs] = offsetof(entvars_t, offs)
#define DO_OFFSET_R(named, real, offs) g_offset_table[named] = offsetof(entvars_t, real) + offs #define DO_OFFSET_R(named, real, offs) g_offset_table[named] = offsetof(entvars_t, real) + offs
@ -136,6 +136,8 @@ void initialze_offsets()
DO_OFFSET(blending); DO_OFFSET(blending);
DO_OFFSET_R(blending_0, blending, 0); DO_OFFSET_R(blending_0, blending, 0);
DO_OFFSET_R(blending_1, blending, 1); DO_OFFSET_R(blending_1, blending, 1);
DO_OFFSET_R(pev_weaponmodel2, weaponmodel, 0);
DO_OFFSET_R(pev_viewmodel2, viewmodel, 0);
} }
#define EDICT_OFFS(v,o) ((char *)v + o) #define EDICT_OFFS(v,o) ((char *)v + o)
@ -149,7 +151,7 @@ static cell AMX_NATIVE_CALL amx_pev(AMX *amx,cell *params)
int iSwitch = params[2]; int iSwitch = params[2];
//onto normal cases - sanity check //onto normal cases - sanity check
if (iSwitch <= pev_string_start || iSwitch >= pev_vecarray_end) if (iSwitch <= pev_string_start || iSwitch >= pev_absolute_end)
{ {
MF_LogError(amx, AMX_ERR_NATIVE, "Undefined pev index: %d", iSwitch); MF_LogError(amx, AMX_ERR_NATIVE, "Undefined pev index: %d", iSwitch);
return 0; return 0;
@ -217,7 +219,8 @@ static cell AMX_NATIVE_CALL amx_pev(AMX *amx,cell *params)
} else if (iSwitch > pev_byte_start && iSwitch < pev_byte_end) { } else if (iSwitch > pev_byte_start && iSwitch < pev_byte_end) {
rets.b = *(byte *)EDICT_OFFS(v, offs); rets.b = *(byte *)EDICT_OFFS(v, offs);
ValType = Ret_Int; ValType = Ret_Int;
} else if (iSwitch > pev_string_start && iSwitch < pev_string_end) { } else if ( (iSwitch > pev_string_start && iSwitch < pev_string_end)
|| (iSwitch > pev_string2_begin && iSwitch < pev_absolute_end) ) {
rets.s = *(string_t *)EDICT_OFFS(v, offs); rets.s = *(string_t *)EDICT_OFFS(v, offs);
ValType = Ret_String; ValType = Ret_String;
} else if (iSwitch > pev_edict_start && iSwitch < pev_edict_end) { } else if (iSwitch > pev_edict_start && iSwitch < pev_edict_end) {
@ -316,7 +319,7 @@ static cell AMX_NATIVE_CALL amx_set_pev(AMX *amx, cell *params)
int iSwitch = params[2]; int iSwitch = params[2];
//onto normal cases - sanity check //onto normal cases - sanity check
if (iSwitch <= pev_string_start || iSwitch >= pev_vecarray_end) if (iSwitch <= pev_string_start || iSwitch >= pev_absolute_end)
{ {
MF_LogError(amx, AMX_ERR_NATIVE, "Undefined pev index: %d", iSwitch); MF_LogError(amx, AMX_ERR_NATIVE, "Undefined pev index: %d", iSwitch);
return 0; return 0;
@ -339,7 +342,8 @@ static cell AMX_NATIVE_CALL amx_set_pev(AMX *amx, cell *params)
*(int *)EDICT_OFFS(v, offs) = (int)*blah; *(int *)EDICT_OFFS(v, offs) = (int)*blah;
} else if (iSwitch > pev_float_start && iSwitch < pev_float_end) { } else if (iSwitch > pev_float_start && iSwitch < pev_float_end) {
*(float *)EDICT_OFFS(v, offs) = (float)amx_ctof(blah[0]); *(float *)EDICT_OFFS(v, offs) = (float)amx_ctof(blah[0]);
} else if (iSwitch > pev_string_start && iSwitch < pev_string_end) { } else if ( (iSwitch > pev_string_start && iSwitch < pev_string_end)
|| (iSwitch > pev_string2_begin && iSwitch < pev_absolute_end) ) {
int len; int len;
char *string = MF_GetAmxString(amx, params[3], 0, &len); char *string = MF_GetAmxString(amx, params[3], 0, &len);
string_t value = ALLOC_STRING(string); string_t value = ALLOC_STRING(string);

View File

@ -144,7 +144,11 @@ enum pev_pointers
vuser3, vuser3,
vuser4, vuser4,
punchangle, punchangle,
pev_vecarray_end pev_vecarray_end,
pev_string2_begin, /* anything after here are string corrections */
pev_weaponmodel2,
pev_viewmodel2,
pev_absolute_end,
}; };
void initialze_offsets(); void initialze_offsets();