Engine
Content:
Notes
Engine Provides functions for manipulating the Half-Life engine, such as entity property modification and creation,
as well as advanced client commands (Based on original VexD Utilities). It is maintained by BAILOPAN.

For similar, but more advanced functions, check out the FakeMeta module.

Engine has three includes: One for natives, one for constants, and one for stock helper functions. The Engine module includes many constants, listed below. Constants
#define SPEAK_NORMAL		0
#define SPEAK_MUTED		1
#define SPEAK_ALL		2
#define SPEAK_LISTENALL		4

Camera Constants
#define CAMERA_NONE		0
#define CAMERA_3RDPERSON	1
#define CAMERA_UPLEFT		2
#define CAMERA_TOPDOWN		3

Message Constants
#define BLOCK_NOT		0
#define BLOCK_ONCE		1
#define BLOCK_SET		2

enum {
	ARG_BYTE = 1,			/* int */
	ARG_CHAR,			/* int */
	ARG_SHORT,			/* int */
	ARG_LONG,			/* int */
	ARG_ANGLE,			/* float */
	ARG_COORD,			/* float */
	ARG_STRING,			/* string */
	ARG_ENTITY,			/* int */
}

Entity Integer Constants
enum {
	EV_INT_gamestate = 0,
	EV_INT_oldbuttons,
	EV_INT_groupinfo,
	EV_INT_iuser1,
	EV_INT_iuser2,
	EV_INT_iuser3,
	EV_INT_iuser4,
	EV_INT_weaponanim,
	EV_INT_pushmsec,
	EV_INT_bInDuck,
	EV_INT_flTimeStepSound,
	EV_INT_flSwimTime,
	EV_INT_flDuckTime,
	EV_INT_iStepLeft,
	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_modelindex,
	EV_INT_playerclass,
	EV_INT_waterlevel,
	EV_INT_watertype,
	EV_INT_spawnflags,
	EV_INT_flags,
	EV_INT_colormap,
	EV_INT_team,
	EV_INT_fixangle,
	EV_INT_weapons,
	EV_INT_rendermode,
	EV_INT_renderfx,
	EV_INT_button,
	EV_INT_impulse,
	EV_INT_deadflag,
}

Entity Float Constants
enum {
	EV_FL_impacttime = 0,
	EV_FL_starttime,
	EV_FL_idealpitch,
	EV_FL_pitch_speed,
	EV_FL_ideal_yaw,
	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_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_scale,
	EV_FL_renderamt,
	EV_FL_maxspeed,
	EV_FL_fov,
	EV_FL_flFallVelocity,
	EV_FL_fuser1,
	EV_FL_fuser2,
	EV_FL_fuser3,
	EV_FL_fuser4,
}

Entity Vector Constants
enum {
	EV_VEC_origin = 0,
	EV_VEC_oldorigin,
	EV_VEC_velocity,
	EV_VEC_basevelocity,
	EV_VEC_clbasevelocity,
	EV_VEC_movedir,
	EV_VEC_angles,
	EV_VEC_avelocity,
	EV_VEC_punchangle,
	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,
}

Entity Edict Constants
enum {
	EV_ENT_chain = 0,
	EV_ENT_dmg_inflictor,
	EV_ENT_enemy,
	EV_ENT_aiment,
	EV_ENT_owner,
	EV_ENT_groundentity,
	EV_ENT_pContainingEntity,
	EV_ENT_euser1,
	EV_ENT_euser2,
	EV_ENT_euser3,
	EV_ENT_euser4,
}

Entity String Constants
enum {
	EV_SZ_classname = 0,
	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,
	EV_SZ_viewmodel,
	EV_SZ_weaponmodel,
}

Entity Byte Constants
enum {
	EV_BYTE_controller1 = 0,
	EV_BYTE_controller2,
	EV_BYTE_controller3,
	EV_BYTE_controller4,
	EV_BYTE_blending1,
	EV_BYTE_blending2,
}

Button Constants
#define IN_ATTACK		(1<<0)
#define IN_JUMP			(1<<1)
#define IN_DUCK			(1<<2)
#define IN_FORWARD		(1<<3)
#define IN_BACK			(1<<4)
#define IN_USE			(1<<5)
#define IN_CANCEL		(1<<6)
#define IN_LEFT			(1<<7)
#define IN_RIGHT		(1<<8)
#define IN_MOVELEFT		(1<<9)
#define IN_MOVERIGHT		(1<<10)
#define IN_ATTACK2		(1<<11)
#define IN_RUN			(1<<12)
#define IN_RELOAD		(1<<13)
#define IN_ALT1			(1<<14)
#define IN_SCORE		(1<<15)


Movetype Constants
#define	FL_FLY			(1<<0)		/* Changes the SV_Movestep() behavior to not need to be on ground */
#define	FL_SWIM			(1<<1)		/* Changes the SV_Movestep() behavior to not need to be on ground (but stay in water) */
#define	FL_CONVEYOR		(1<<2)
#define	FL_CLIENT		(1<<3)
#define	FL_INWATER		(1<<4)
#define	FL_MONSTER		(1<<5)
#define	FL_GODMODE		(1<<6)
#define	FL_NOTARGET		(1<<7)
#define	FL_SKIPLOCALHOST	(1<<8)		/* Don't send entity to local host, it's predicting this entity itself */
#define	FL_ONGROUND		(1<<9)		/* At rest / on the ground */
#define	FL_PARTIALGROUND	(1<<10)		/* not all corners are valid */
#define	FL_WATERJUMP		(1<<11)		/* player jumping out of water */
#define FL_FROZEN		(1<<12) 	/* Player is frozen for 3rd person camera */
#define FL_FAKECLIENT		(1<<13)		/* JAC: fake client, simulated server side; don't send network messages to them */
#define FL_DUCKING		(1<<14)		/* Player flag -- Player is fully crouched */
#define FL_FLOAT		(1<<15)		/* Apply floating force to this entity when in water */
#define FL_GRAPHED		(1<<16)		/* worldgraph has this ent listed as something that blocks a connection */
#define FL_IMMUNE_WATER		(1<<17)
#define	FL_IMMUNE_SLIME		(1<<18)
#define FL_IMMUNE_LAVA		(1<<19)
#define FL_PROXY		(1<<20)		/* This is a spectator proxy */
#define FL_ALWAYSTHINK		(1<<21)		/* Brush model flag -- call think every frame regardless of nextthink - ltime (for constantly changing velocity/path) */
#define FL_BASEVELOCITY		(1<<22)		/* Base velocity has been applied this frame (used to convert base velocity into momentum) */
#define FL_MONSTERCLIP		(1<<23)		/* Only collide in with monsters who have FL_MONSTERCLIP set */
#define FL_ONTRAIN		(1<<24)		/* Player is _controlling_ a train, so movement commands should be ignored on client during prediction. */
#define FL_WORLDBRUSH		(1<<25)		/* Not moveable/removeable brush entity (really part of the world, but represented as an entity for transparency or something) */
#define FL_SPECTATOR		(1<<26) 	/* This client is a spectator, don't run touch functions, etc. */
#define FL_CUSTOMENTITY		(1<<29)		/* This is a custom entity */
#define FL_KILLME		(1<<30)		/* This entity is marked for death -- This allows the engine to kill ents at the appropriate time */
#define FL_DORMANT		(1<<31)		/* Entity is dormant, no updates to client */
#define	MOVETYPE_NONE		0		/* never moves */
#define MOVETYPE_ANGLENOCLIP	1
#define MOVETYPE_ANGLECLIP	2
#define	MOVETYPE_WALK		3		/* Player only - moving on the ground */
#define	MOVETYPE_STEP		4		/* gravity, special edge handling -- monsters use this */
#define	MOVETYPE_FLY		5		/* No gravity, but still collides with stuff */
#define	MOVETYPE_TOSS		6		/* gravity/collisions */
#define	MOVETYPE_PUSH		7		/* no clip to world, push and crush */
#define	MOVETYPE_NOCLIP		8		/* No gravity, no collisions, still do velocity/avelocity */
#define	MOVETYPE_FLYMISSILE	9		/* extra size to monsters */
#define	MOVETYPE_BOUNCE		10		/* Just like Toss, but reflect velocity when contacting surfaces */
#define MOVETYPE_BOUNCEMISSILE	11		/* bounce w/o gravity */
#define MOVETYPE_FOLLOW		12		/* track movement of aiment */
#define	MOVETYPE_PUSHSTEP	13		/* BSP model that needs physics/world collisions (uses nearest hull for world collision) */

Solid Constants
#define	SOLID_NOT		0		/* no interaction with other objects */
#define	SOLID_TRIGGER		1		/* touch on edge, but not blocking */
#define	SOLID_BBOX		2		/* touch on edge, block */
#define	SOLID_SLIDEBOX		3		/* touch on edge, but not an onground */
#define	SOLID_BSP		4		/* bsp clip, touch on edge, block */

Contents Constants
#define	CONTENTS_EMPTY		-1
#define	CONTENTS_SOLID		-2
#define	CONTENTS_WATER		-3
#define	CONTENTS_SLIME		-4
#define	CONTENTS_LAVA		-5
#define	CONTENTS_SKY		-6
#define	CONTENTS_ORIGIN		-7		/* removed at csg time */
#define	CONTENTS_CLIP		-8		/* changed to contents_solid */
#define	CONTENTS_CURRENT_0	-9
#define	CONTENTS_CURRENT_90	-10
#define	CONTENTS_CURRENT_180	-11
#define	CONTENTS_CURRENT_270	-12
#define	CONTENTS_CURRENT_UP	-13
#define	CONTENTS_CURRENT_DOWN	-14
#define CONTENTS_TRANSLUCENT	-15
#define	CONTENTS_LADDER		-16

Damage Constants
#define DMG_GENERIC		0		/* generic damage was done */
#define DMG_CRUSH		(1<<0)		/* crushed by falling or moving object */
#define DMG_BULLET		(1<<1)		/* shot */
#define DMG_SLASH		(1<<2)		/* cut, clawed, stabbed */
#define DMG_BURN		(1<<3)		/* heat burned */
#define DMG_FREEZE		(1<<4)		/* frozen */
#define DMG_FALL		(1<<5)		/* fell too far */
#define DMG_BLAST		(1<<6)		/* explosive blast damage */
#define DMG_CLUB		(1<<7)		/* crowbar, punch, headbutt */
#define DMG_SHOCK		(1<<8)		/* electric shock */
#define DMG_SONIC		(1<<9)		/* sound pulse shockwave */
#define DMG_ENERGYBEAM		(1<<10)		/* laser or other high energy beam */
#define DMG_NEVERGIB		(1<<12)		/* with this bit OR'd in, no damage type will be able to gib victims upon death */
#define DMG_ALWAYSGIB		(1<<13)		/* with this bit OR'd in, any damage type can be made to gib victims upon death */
#define DMG_DROWN		(1<<14)		/* Drowning */
/* time-based damage */
#define DMG_TIMEBASED		(~(0x3fff))	/* mask for time-based damage */
/* TF Additions */
#define DMG_PARALYZE		(1<<15)		/* slows affected creature down */
#define DMG_NERVEGAS		(1<<16)		/* nerve toxins, very bad */
#define DMG_POISON		(1<<17)		/* blood poisioning */
#define DMG_RADIATION		(1<<18)		/* radiation exposure */
#define DMG_DROWNRECOVER	(1<<19)		/* drowning recovery */
#define DMG_ACID		(1<<20)		/* toxic chemicals or acid burns */
#define DMG_SLOWBURN		(1<<21)		/* in an oven */
#define DMG_SLOWFREEZE		(1<<22)		/* in a subzero freezer */
#define DMG_MORTAR		(1<<23)		/* Hit by air raid (done to distinguish grenade from mortar) */
Functions
anglevector - Engine function, ANGLEVECTOR.
attach_view - Sets a player's view to a new entity.
call_think - Calls MDLL_Think() on an entity.
client_impulse - Forward for impulses.
client_kill - Called when a client types kill in the console.
client_PostThink - Forward for PostThink() on a player.
client_PreThink - Forward for PreThink() on a player.
copy_keyvalue - Copies keyvalues set during the keyvalue() forward
create_entity - Creates a new entity and returns its index.
DispatchKeyValue - Dispatches a key/value pair, used for initializing entities on spawn.
DispatchSpawn - This is the same as call_think.
drop_to_floor - Drops an entity to the floor.
entity_count - Returns the number of entities in the world.
entity_get_byte - Returns a byte from an entity's structure.
entity_get_edict - Returns the entity index of an entity's structure key.
entity_get_float - Returns a float from an entity's structure.
entity_get_int - Returns an integer from an entity's structure.
entity_get_string - Gets a string from an entity's structure.
entity_get_vector - Gets a vector from an entity's structure.
entity_range - Returns the distance between two entities.
entity_set_byte - Sets a byte on an entity's structure.
entity_set_edict - Sets an edict value on an entity's structure.
entity_set_float - Sets a float value on an entity's structure.
entity_set_int - Sets an integer value on an entity's structure.
entity_set_model - Properly sets a new model on an entity.
entity_set_origin - Properly sets a new origin on an entity.
entity_set_size - Sets the bounds of an entity.
entity_set_string - Sets a string on an entity's structure.
entity_set_vector - Sets a vector on an entity's structure.
fakedamage - Fakes damage on a target.
fake_touch - Simulates two entities colliding/touching.
find_ent_by_class - Finds an entity in the world, returning the index.
find_ent_by_model - Finds an entity in the world by class and model, returning the index.
find_ent_by_owner - Finds an entity in the world by owner, returning the index.
find_ent_by_target - Finds an entity in the world by target, returning the index.
find_ent_by_tname - Finds an entity in the world by target name, returning the index.
find_ent_in_sphere - Finds an entity in the world in a sphere, returning the index.
find_sphere_class - Returns the number of ents stored in entlist
force_use - Forces an entity to use another entity.
FVecIVec - Changes a float vector to an integer vector.
get_brush_entity_origin - Gets the origin of a brush entity.
get_decal_index - Returns a decal index from a decal name.
get_entity_distance - Returns the distance between two entities.
get_entity_flags - Returns the flags an entity is flagged with.
get_entity_visibility - Returns 1 if an entity is visible.
get_global_edict - Gets a global variable from the server as an entity index.
get_global_float - Gets a global variable from the server as a float.
get_global_int - Gets a global variable from the server as an integer.
get_global_string - Gets a global variable from the server as a string.
get_global_vector - Gets a global variable from the server as a vector.
get_grenade - Gets the grenade is thrown by a user.
get_grenade_id - Gets the ID of a grenade.
get_info_keybuffer - Gets whole buffer containing keys and their data.
get_keyvalue - Retrieves a value from a key/val pair on an entity.
get_msg_args - Returns the number of arguments passed to the current message.
get_msg_argtype - Returns the type of an message's argument.
get_msg_arg_float - Returns the value of an argument in a message as a float.
get_msg_arg_int - Returns the value of an argument in a message.
get_msg_arg_string - Returns a string from a message argument.
get_msg_block - Returns the block flag on a message.
get_msg_origin - Sets the origin of the current message.
get_speak - Get a player's speak flags.
get_speed - Returns the speed of an entity's velocity.
get_usercmd - Gets parameters sent from CmdStart.
get_user_button - Gets the button(s) a user is pressing.
get_user_oldbutton - Gets the oldbutton(s) a user is pressing.
get_user_velocity - Gets a user's velocity.
halflife_time - Returns the gpGlobal time from Half-Life
is_in_viewcone - Checks if an origin is in an entity's viewcone
is_valid_ent - Returns 1 if an entity index is valid for operation, 0 otherwise.
is_visible - Checks if a target entity is visible to an entity
IVecFVec - Changes an integer vector to a float vector.
make_deathmsg - Creates a death message.
pfn_spawn - Called when an entity is spawned.
pfn_think - Called when an entity thinks with DispatchThink().
pfn_touch - Called when two entities touch/collide.
pfn_use - DEPRECATED. Called when an object uses another object.
PlaybackEvent - Forwarded on an event playback.
playback_event - PLAYBACK_EVENT_FULL from HLSDK.
PointContents - Will return the contents of a point (inside map? in sky? outside map? etc.).
precache_event - Precaches an event.
precache_generic - Precaches a generic file.
RadiusDamage - Hurts/Kills players in a sphere, like an explosion, Multiplier determines damage.
register_impulse - Registers a client impulse to a function.
register_message - Hooks a message to a single function.
register_think - Registers a think action to a function.
register_touch - Registers a touch action to a function.
remove_entity - Removes an entity from the world.
remove_entity_name - Removes an entity by name.
server_changelevel - Forward for a server's changelevel.
server_frame - Called once every server frame, may cause lag.
set_entity_flags - Sets flags on an entity.
set_entity_visibility - If visible = 1, entity will be set to be visible, else invisible.
set_lights - Sets map lighting, "#OFF" to disable.
set_msg_arg_float - Sets a floating value in a message argument.
set_msg_arg_int - Sets the value of an argument message.
set_msg_arg_string - Sets a string in a message argument.
set_msg_block - Sets whether a message is blocked or not.
set_rendering - Sets the rendering of an entity.
set_speak - Set a player's speak flags.
set_usercmd - Sets the parameters sent from CmdStart.
set_user_velocity - Sets a user's velocity.
set_view - Sets a player's view mode.
takedamage - Mirrors CBaseEntity::TakeDamage()
traceresult - Returns information from the last traceresult.
trace_forward - Read Below
trace_hull - Traces a hull.
trace_line - Traces a line from Start to End.
user_silentkill - Kills a user without a death message.
vector_distance - Returns the distance between two vectors.
vector_length - Returns the length of a vector.
vector_to_angle - Changes a vector to an angle vector.
VelocityByAim - Gives you a velocity in the direction a player is looking, iVelocity is the multiplier.
ViewContents - Get the contents of the point a player is aiming at.
User Contributed Notes
bailopan at amxmodx dot org Jun-02-04 06:30:30
This module was largely rewritten from scratch for AMX Mod X 0.20.