384 lines
8.0 KiB
PHP
Executable File
384 lines
8.0 KiB
PHP
Executable File
/* Fakemeta pev to engine wrapper for backwards compatibility.
|
|
*
|
|
* by the AMX Mod X Development Team
|
|
*
|
|
* This file is provided as is (no warranties).
|
|
*/
|
|
|
|
#if defined _fakemeta_pev_included
|
|
#endinput
|
|
#endif
|
|
#define _fakemeta_pev_included
|
|
|
|
#include <engine>
|
|
|
|
enum {
|
|
pev_string_start = 0,
|
|
pev_classname,
|
|
pev_globalname,
|
|
pev_model,
|
|
pev_target,
|
|
pev_targetname,
|
|
pev_netname,
|
|
pev_message,
|
|
pev_noise,
|
|
pev_noise1,
|
|
pev_noise2,
|
|
pev_noise3,
|
|
pev_string_end,
|
|
pev_edict_start,
|
|
pev_chain,
|
|
pev_dmg_inflictor,
|
|
pev_enemy,
|
|
pev_aiment,
|
|
pev_owner,
|
|
pev_groundentity,
|
|
pev_euser1,
|
|
pev_euser2,
|
|
pev_euser3,
|
|
pev_euser4,
|
|
pev_edict_end,
|
|
pev_float_start,
|
|
pev_impacttime,
|
|
pev_starttime,
|
|
pev_idealpitch,
|
|
pev_ideal_yaw,
|
|
pev_pitch_speed,
|
|
pev_yaw_speed,
|
|
pev_ltime,
|
|
pev_nextthink,
|
|
pev_gravity,
|
|
pev_friction,
|
|
pev_frame,
|
|
pev_animtime,
|
|
pev_framerate,
|
|
pev_scale,
|
|
pev_renderamt,
|
|
pev_health,
|
|
pev_frags,
|
|
pev_takedamage,
|
|
pev_max_health,
|
|
pev_teleport_time,
|
|
pev_armortype,
|
|
pev_armorvalue,
|
|
pev_dmg_take,
|
|
pev_dmg_save,
|
|
pev_dmg,
|
|
pev_dmgtime,
|
|
pev_speed,
|
|
pev_air_finished,
|
|
pev_pain_finished,
|
|
pev_radsuit_finished,
|
|
pev_maxspeed,
|
|
pev_fov,
|
|
pev_flFallVelocity,
|
|
pev_fuser1,
|
|
pev_fuser2,
|
|
pev_fuser3,
|
|
pev_fuser4,
|
|
pev_float_end,
|
|
pev_int_start,
|
|
pev_fixangle,
|
|
pev_modelindex,
|
|
pev_viewmodel,
|
|
pev_weaponmodel,
|
|
pev_movetype,
|
|
pev_solid,
|
|
pev_skin,
|
|
pev_body,
|
|
pev_effects,
|
|
pev_light_level,
|
|
pev_sequence,
|
|
pev_gaitsequence,
|
|
pev_rendermode,
|
|
pev_renderfx,
|
|
pev_weapons,
|
|
pev_deadflag,
|
|
pev_button,
|
|
pev_impulse,
|
|
pev_spawnflags,
|
|
pev_flags,
|
|
pev_colormap,
|
|
pev_team,
|
|
pev_waterlevel,
|
|
pev_watertype,
|
|
pev_playerclass,
|
|
pev_weaponanim,
|
|
pev_pushmsec,
|
|
pev_bInDuck,
|
|
pev_flTimeStepSound,
|
|
pev_flSwimTime,
|
|
pev_flDuckTime,
|
|
pev_iStepLeft,
|
|
pev_gamestate,
|
|
pev_oldbuttons,
|
|
pev_groupinfo,
|
|
pev_iuser1,
|
|
pev_iuser2,
|
|
pev_iuser3,
|
|
pev_iuser4,
|
|
pev_int_end,
|
|
pev_byte_start,
|
|
pev_controller_0,
|
|
pev_controller_1,
|
|
pev_controller_2,
|
|
pev_controller_3,
|
|
pev_blending_0,
|
|
pev_blending_1,
|
|
pev_byte_end,
|
|
pev_bytearray_start,
|
|
pev_controller,
|
|
pev_blending,
|
|
pev_bytearray_end,
|
|
pev_vecarray_start,
|
|
pev_origin,
|
|
pev_oldorigin,
|
|
pev_velocity,
|
|
pev_basevelocity,
|
|
pev_clbasevelocity,
|
|
pev_movedir,
|
|
pev_angles,
|
|
pev_avelocity,
|
|
pev_v_angle,
|
|
pev_endpos,
|
|
pev_startpos,
|
|
pev_absmin,
|
|
pev_absmax,
|
|
pev_mins,
|
|
pev_maxs,
|
|
pev_size,
|
|
pev_rendercolor,
|
|
pev_view_ofs,
|
|
pev_vuser1,
|
|
pev_vuser2,
|
|
pev_vuser3,
|
|
pev_vuser4,
|
|
pev_punchangle,
|
|
pev_vecarray_end
|
|
};
|
|
|
|
new const _ENUMWRAPPER[pev_vecarray_end + 1] = {
|
|
0,
|
|
EV_SZ_classname,
|
|
EV_SZ_globalname,
|
|
EV_SZ_model,
|
|
EV_SZ_target,
|
|
EV_SZ_targetname,
|
|
EV_SZ_netname,
|
|
EV_SZ_message,
|
|
EV_SZ_noise,
|
|
EV_SZ_noise1,
|
|
EV_SZ_noise2,
|
|
EV_SZ_noise3,
|
|
0,
|
|
0,
|
|
EV_ENT_chain,
|
|
EV_ENT_dmg_inflictor,
|
|
EV_ENT_enemy,
|
|
EV_ENT_aiment,
|
|
EV_ENT_owner,
|
|
EV_ENT_groundentity,
|
|
EV_ENT_euser1,
|
|
EV_ENT_euser2,
|
|
EV_ENT_euser3,
|
|
EV_ENT_euser4,
|
|
0,
|
|
0,
|
|
EV_FL_impacttime,
|
|
EV_FL_starttime,
|
|
EV_FL_idealpitch,
|
|
EV_FL_ideal_yaw,
|
|
EV_FL_pitch_speed,
|
|
EV_FL_yaw_speed,
|
|
EV_FL_ltime,
|
|
EV_FL_nextthink,
|
|
EV_FL_gravity,
|
|
EV_FL_friction,
|
|
EV_FL_frame,
|
|
EV_FL_animtime,
|
|
EV_FL_framerate,
|
|
EV_FL_scale,
|
|
EV_FL_renderamt,
|
|
EV_FL_health,
|
|
EV_FL_frags,
|
|
EV_FL_takedamage,
|
|
EV_FL_max_health,
|
|
EV_FL_teleport_time,
|
|
EV_FL_armortype,
|
|
EV_FL_armorvalue,
|
|
EV_FL_dmg_take,
|
|
EV_FL_dmg_save,
|
|
EV_FL_dmg,
|
|
EV_FL_dmgtime,
|
|
EV_FL_speed,
|
|
EV_FL_air_finished,
|
|
EV_FL_pain_finished,
|
|
EV_FL_radsuit_finished,
|
|
EV_FL_maxspeed,
|
|
EV_FL_fov,
|
|
EV_FL_flFallVelocity,
|
|
EV_FL_fuser1,
|
|
EV_FL_fuser2,
|
|
EV_FL_fuser3,
|
|
EV_FL_fuser4,
|
|
0,
|
|
0,
|
|
EV_INT_fixangle,
|
|
EV_INT_modelindex,
|
|
-1, // pev_viewmodel
|
|
-1, // pev_weaponmodel
|
|
EV_INT_movetype,
|
|
EV_INT_solid,
|
|
EV_INT_skin,
|
|
EV_INT_body,
|
|
EV_INT_effects,
|
|
EV_INT_light_level,
|
|
EV_INT_sequence,
|
|
EV_INT_gaitsequence,
|
|
EV_INT_rendermode,
|
|
EV_INT_renderfx,
|
|
EV_INT_weapons,
|
|
EV_INT_deadflag,
|
|
EV_INT_button,
|
|
EV_INT_impulse,
|
|
EV_INT_spawnflags,
|
|
EV_INT_flags,
|
|
EV_INT_colormap,
|
|
EV_INT_team,
|
|
EV_INT_waterlevel,
|
|
EV_INT_watertype,
|
|
EV_INT_playerclass,
|
|
EV_INT_weaponanim,
|
|
EV_INT_pushmsec,
|
|
EV_INT_bInDuck,
|
|
EV_INT_flTimeStepSound,
|
|
EV_INT_flSwimTime,
|
|
EV_INT_flDuckTime,
|
|
EV_INT_iStepLeft,
|
|
EV_INT_gamestate,
|
|
EV_INT_oldbuttons,
|
|
EV_INT_groupinfo,
|
|
EV_INT_iuser1,
|
|
EV_INT_iuser2,
|
|
EV_INT_iuser3,
|
|
EV_INT_iuser4,
|
|
0,
|
|
0,
|
|
EV_BYTE_controller1,
|
|
EV_BYTE_controller2,
|
|
EV_BYTE_controller3,
|
|
EV_BYTE_controller4,
|
|
EV_BYTE_blending1,
|
|
EV_BYTE_blending2,
|
|
0,
|
|
0,
|
|
-1, // bytearray controller
|
|
-1, // bytearray blending
|
|
0,
|
|
0,
|
|
EV_VEC_origin,
|
|
EV_VEC_oldorigin,
|
|
EV_VEC_velocity,
|
|
EV_VEC_basevelocity,
|
|
EV_VEC_clbasevelocity,
|
|
EV_VEC_movedir,
|
|
EV_VEC_angles,
|
|
EV_VEC_avelocity,
|
|
EV_VEC_v_angle,
|
|
EV_VEC_endpos,
|
|
EV_VEC_startpos,
|
|
EV_VEC_absmin,
|
|
EV_VEC_absmax,
|
|
EV_VEC_mins,
|
|
EV_VEC_maxs,
|
|
EV_VEC_size,
|
|
EV_VEC_rendercolor,
|
|
EV_VEC_view_ofs,
|
|
EV_VEC_vuser1,
|
|
EV_VEC_vuser2,
|
|
EV_VEC_vuser3,
|
|
EV_VEC_vuser4,
|
|
EV_VEC_punchangle,
|
|
0,
|
|
}
|
|
stock pev(_index, _value, {Float, Sql, Result, _}:...) {
|
|
if (_value > pev_string_start && _value < pev_string_end) {
|
|
const BUFFERSIZE = 511
|
|
new buffer[BUFFERSIZE + 1]
|
|
if (!entity_get_string(_index, _ENUMWRAPPER[_value], buffer, getarg(3) < BUFFERSIZE ? getarg(3) : BUFFERSIZE))
|
|
return 0
|
|
|
|
new const STRLEN = strlen(buffer)
|
|
new const MAXLEN = getarg(3)
|
|
new i
|
|
for (i = 0; i < STRLEN && i < MAXLEN && setarg(2, i, buffer[i]); i++) {}
|
|
return setarg(2, i, '^0')
|
|
}
|
|
else if (_value > pev_edict_start && _value < pev_edict_end) {
|
|
return entity_get_edict(_index, _ENUMWRAPPER[_value])
|
|
}
|
|
else if (_value > pev_float_start && _value < pev_float_end) {
|
|
return setarg(2, 0, _:entity_get_float(_index, _ENUMWRAPPER[_value]))
|
|
}
|
|
else if (_value > pev_int_start && _value < pev_int_end) {
|
|
return entity_get_int(_index, _ENUMWRAPPER[_value])
|
|
}
|
|
else if (_value > pev_byte_start && _value < pev_byte_end) {
|
|
return entity_get_byte(_index, _ENUMWRAPPER[_value])
|
|
}
|
|
else if (_value > pev_vecarray_start && _value < pev_vecarray_end) {
|
|
new Float:vector[3]
|
|
entity_get_vector(_index, _ENUMWRAPPER[_value], vector)
|
|
|
|
if (!setarg(2, 0, _:vector[0]) || !setarg(2, 1, _:vector[1]) || !setarg(2, 2, _:vector[2]))
|
|
return 0
|
|
|
|
return 1
|
|
}
|
|
else if (_value == pev_controller) {
|
|
if (!setarg(2, 0, entity_get_byte(_index, EV_BYTE_controller1)) || setarg(2, 1, entity_get_byte(_index, EV_BYTE_controller2)) || setarg(2, 2, entity_get_byte(_index, EV_BYTE_controller3)) || setarg(2, 3, entity_get_byte(_index, EV_BYTE_controller4)))
|
|
return 0
|
|
return 1
|
|
}
|
|
else if (_value == pev_blending) {
|
|
if (!setarg(2, 0, entity_get_byte(_index, EV_BYTE_blending1)) || setarg(2, 1, entity_get_byte(_index, EV_BYTE_blending2)))
|
|
return 0
|
|
return 1
|
|
}
|
|
|
|
return 0
|
|
}
|
|
|
|
stock set_pev(_index, _value, {Float, Sql, Result, _}:...) {
|
|
if (_value > pev_string_start && _value < pev_string_end) {
|
|
new string[512], i = 0
|
|
do string[i] = getarg(2, i); while (string[i++] != '^0' && i < 512)
|
|
return entity_set_string(_index, _ENUMWRAPPER[_value], string)
|
|
}
|
|
else if (_value > pev_edict_start && _value < pev_edict_end) {
|
|
return entity_set_edict(_index, _ENUMWRAPPER[_value], getarg(2))
|
|
}
|
|
else if (_value > pev_float_start && _value < pev_float_end) {
|
|
return entity_set_float(_index, _ENUMWRAPPER[_value], Float:getarg(2))
|
|
}
|
|
else if (_value > pev_int_start && _value < pev_int_end) {
|
|
return entity_set_int(_index, _ENUMWRAPPER[_value], getarg(2))
|
|
}
|
|
else if (_value > pev_byte_start && _value < pev_byte_end) {
|
|
return entity_set_byte(_index, _ENUMWRAPPER[_value], getarg(2))
|
|
}
|
|
else if (_value > pev_vecarray_start && _value < pev_vecarray_end) {
|
|
new Float:vector[3]
|
|
vector[0] = Float:getarg(2, 0); vector[1] = Float:getarg(2, 1); vector[2] = Float:getarg(2, 2);
|
|
return entity_set_vector(_index, _ENUMWRAPPER[_value], vector)
|
|
}
|
|
else if (_value == pev_controller) {
|
|
return entity_set_byte(_index, EV_BYTE_controller1, getarg(2, 0)) && entity_set_byte(_index, EV_BYTE_controller2, getarg(2, 1)) && entity_set_byte(_index, EV_BYTE_controller3, getarg(2, 2)) && entity_set_byte(_index, EV_BYTE_controller4, getarg(2, 3))
|
|
}
|
|
else if (_value == pev_blending) {
|
|
return entity_set_byte(_index, EV_BYTE_blending1, getarg(2, 0)) && entity_set_byte(_index, EV_BYTE_blending2, getarg(2, 1))
|
|
}
|
|
|
|
return 0
|
|
}
|