Added module auto load to hamsammich.
Started the stupid comment crap.
This commit is contained in:
parent
bd2ad31f5e
commit
1f1ecfa590
|
@ -1,24 +1,170 @@
|
||||||
|
/**
|
||||||
|
* Ham Sandwich module include file.
|
||||||
|
* (c) 2007, The AMX Mod X Development Team
|
||||||
|
*
|
||||||
|
* -
|
||||||
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by the
|
||||||
|
* Free Software Foundation; either version 2 of the License, or (at
|
||||||
|
* your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
* In addition, as a special exception, the author gives permission to
|
||||||
|
* link the code of this program with the Half-Life Game Engine ("HL
|
||||||
|
* Engine") and Modified Game Libraries ("MODs") developed by Valve,
|
||||||
|
* L.L.C ("Valve"). You must obey the GNU General Public License in all
|
||||||
|
* respects for all of the code used other than the HL Engine and MODs
|
||||||
|
* from Valve. If you modify this file, you may extend this exception
|
||||||
|
* to your version of the file, but you are not obligated to do so. If
|
||||||
|
* you do not wish to do so, delete this exception statement from your
|
||||||
|
* version.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ham Sandwich is a module that is used to hook virtual functions of entities.
|
||||||
|
* Virtual functions are mod-specific functions. This means that in order
|
||||||
|
* for this to work on a mod, it needs to be configured with the hamdata.ini
|
||||||
|
* file.
|
||||||
|
* Be very careful with parameter passing to these functions.
|
||||||
|
*/
|
||||||
|
|
||||||
#if defined _hamsandwich_included
|
#if defined _hamsandwich_included
|
||||||
#endinput
|
#endinput
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define _hamsandwich_included
|
#define _hamsandwich_included
|
||||||
|
|
||||||
|
#if AMXX_VERSION_NUM >= 175
|
||||||
|
#pragma reqlib hamsandwich
|
||||||
|
#if !defined AMXMODX_NOAUTOLOAD
|
||||||
|
#pragma loadlib hamsandwich
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#pragma library hamsandwich
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A few notes about all of the following functions:
|
||||||
|
* - Not all functions will do as you expect on all mods.
|
||||||
|
* If a function does not do what you would believe it should
|
||||||
|
* DO NOT file a bug report, you will be ignored.
|
||||||
|
*
|
||||||
|
* - Passing invalid parameters has potential to crash the server
|
||||||
|
* So be careful, and adequately test!
|
||||||
|
*
|
||||||
|
* - All functions take (and pass) a "this" index as the first param.
|
||||||
|
* This is the entity from which the function is being executed on.
|
||||||
|
*/
|
||||||
|
|
||||||
enum Ham
|
enum Ham
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Description: This is typically called whenever an entity is created.
|
||||||
|
* It is the virtual equivilent of spawn from the engine.
|
||||||
|
* Forward params: function(this)
|
||||||
|
* Execute params: ExecuteHam(Ham_Spawn, this);
|
||||||
|
*/
|
||||||
Ham_Spawn = 0,
|
Ham_Spawn = 0,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: This is typically called on map change.
|
||||||
|
* This will typically precache all assets required by the entity.
|
||||||
|
* Forward params: function(this)
|
||||||
|
* Execute params: ExecuteHam(Ham_Precache, this);
|
||||||
|
*/
|
||||||
Ham_Precache,
|
Ham_Precache,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Typically this is similar to an engine keyvalue call.
|
||||||
|
* Use the kvd natives from fakemeta to handle the kvd_handle passed.
|
||||||
|
* NOTE: Do not pass handle 0 to this! Use get_kvd_handle(0) from fakemeta instead!
|
||||||
|
* Forward params: function(this, kvd_handle);
|
||||||
|
*/
|
||||||
Ham_Keyvalue,
|
Ham_Keyvalue,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Returns flags for how an entity can be used (FCAP_* constants in hlsdk_const.inc)
|
||||||
|
* Forward params: function(this)
|
||||||
|
* Execute params: ExecuteHam(Ham_ObjectCaps, this);
|
||||||
|
*/
|
||||||
Ham_ObjectCaps,
|
Ham_ObjectCaps,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Usually called to activate some objects.
|
||||||
|
* Forward params: function(this)
|
||||||
|
* Execute params: ExecuteHam(Ham_Activate, this);
|
||||||
|
*/
|
||||||
Ham_Activate,
|
Ham_Activate,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Usually called after the engine call with the same name.
|
||||||
|
* Forward params: function(this)
|
||||||
|
* Execute params: ExecuteHam(Ham_SetObjectCollisionBox, this);
|
||||||
|
*/
|
||||||
Ham_SetObjectCollisionBox,
|
Ham_SetObjectCollisionBox,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Returns an integer number that corresponds with what type of entity this is.
|
||||||
|
* Forward params: function(this)
|
||||||
|
* Execute params: ExecuteHam(Ham_Classify, this);
|
||||||
|
*/
|
||||||
Ham_Classify,
|
Ham_Classify,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Typically called when an entity dies to notify any children entities about the death.
|
||||||
|
* Forward params: function(this, idchild)
|
||||||
|
* Execute params: ExecuteHam(Ham_DeathNotice, this, idchild)
|
||||||
|
*/
|
||||||
Ham_DeathNotice,
|
Ham_DeathNotice,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Usually called whenever an entity gets attacked by a hitscan (such as a gun) weapon.
|
||||||
|
* Use the get/set tr2 natives in fakemeta to handle the traceresult data.
|
||||||
|
* Do not use a handle of 0 as a traceresult in execution, use get_tr_handle(0) instead.
|
||||||
|
* Forward params: function(this, idattacker, Float:damage, Float:direction[3], traceresult, damagebits)
|
||||||
|
* Execute params: ExecuteHam(Ham_TraceAttack, this, idattacker, Float:damage, Float:direction[3], tracehandle, damagebits);
|
||||||
|
*/
|
||||||
Ham_TraceAttack,
|
Ham_TraceAttack,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Usually called whenever an entity takes any kind of damage.
|
||||||
|
* Inflictor is the entity that caused the damage (such as a gun).
|
||||||
|
* Attacker is the entity that tirggered the damage (such as the gun's owner).
|
||||||
|
* Forward params: function(this, idinflictor, idattacker, Float:damage, damagebits);
|
||||||
|
* Execute params: ExecuteHam(Ham_TakeDamage, this, idinflictor, idattacker, Float:damage, damagebits);
|
||||||
|
*/
|
||||||
Ham_TakeDamage,
|
Ham_TakeDamage,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Usually called whenever an entity gets a form of a heal.
|
||||||
|
* Forward params: function(this, Float:health, damagebits);
|
||||||
|
* Execute params: ExecuteHam(Ham_TakeHealth, this, Float:health, damagebits);
|
||||||
|
*/
|
||||||
Ham_TakeHealth,
|
Ham_TakeHealth,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Normally called whenever an entity dies.
|
||||||
|
* Forward params: function(this, idattacker, shouldgib)
|
||||||
|
* Execute params: ExecuteHam(Ham_Killed, this, idattacker, shouldgib);
|
||||||
|
*/
|
||||||
Ham_Killed,
|
Ham_Killed,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Normally returns the blood color of the entity.
|
||||||
|
* Forward params: function(this)
|
||||||
|
* Execute params: ExecuteHam(Ham_BloodColor, this)
|
||||||
|
*/
|
||||||
Ham_BloodColor,
|
Ham_BloodColor,
|
||||||
|
|
||||||
|
|
||||||
Ham_TraceBleed,
|
Ham_TraceBleed,
|
||||||
Ham_IsTriggered,
|
Ham_IsTriggered,
|
||||||
Ham_GetToggleState,
|
Ham_GetToggleState,
|
||||||
|
@ -28,32 +174,164 @@ enum Ham
|
||||||
Ham_RemovePlayerItem,
|
Ham_RemovePlayerItem,
|
||||||
Ham_GiveAmmo,
|
Ham_GiveAmmo,
|
||||||
Ham_GetDelay,
|
Ham_GetDelay,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Whether or not the entity is moving.
|
||||||
|
* Forward params: function(this);
|
||||||
|
* Execute params: ExecuteHam(Ham_IsMoving, this);
|
||||||
|
*/
|
||||||
Ham_IsMoving,
|
Ham_IsMoving,
|
||||||
Ham_OverrideReset,
|
Ham_OverrideReset,
|
||||||
Ham_DamageDecal,
|
Ham_DamageDecal,
|
||||||
Ham_SetToggleState,
|
Ham_SetToggleState,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Not entirely sure what this does.
|
||||||
|
* Forward params: function(this)
|
||||||
|
* Execute params: ExecuteHam(Ham_StartSneaking, this);
|
||||||
|
*/
|
||||||
Ham_StartSneaking,
|
Ham_StartSneaking,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Not entirely sure what this does.
|
||||||
|
* Forward params: function(this)
|
||||||
|
* Execute params: ExecuteHam(Ham_StopSneaking, this);
|
||||||
|
*/
|
||||||
Ham_StopSneaking,
|
Ham_StopSneaking,
|
||||||
Ham_OnControls,
|
Ham_OnControls,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Whether or not the entity is sneaking.
|
||||||
|
* Forward params: function(this);
|
||||||
|
* Execute params: ExecuteHam(Ham_IsSneaking, this);
|
||||||
|
*/
|
||||||
Ham_IsSneaking,
|
Ham_IsSneaking,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Whether or not the entity is alive.
|
||||||
|
* Forward params: function(this);
|
||||||
|
* Execute params: ExecuteHam(Ham_IsAlive, this);
|
||||||
|
*/
|
||||||
Ham_IsAlive,
|
Ham_IsAlive,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Whether or not the entity uses a BSP model.
|
||||||
|
* Forward params: function(this);
|
||||||
|
* Execute params: ExecuteHam(Ham_IsBSPModel, this);
|
||||||
|
*/
|
||||||
Ham_IsBSPModel,
|
Ham_IsBSPModel,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Whether or not the entity can reflect gauss shots..
|
||||||
|
* Forward params: function(this);
|
||||||
|
* Execute params: ExecuteHam(Ham_ReflectGauss, this);
|
||||||
|
*/
|
||||||
Ham_ReflectGauss,
|
Ham_ReflectGauss,
|
||||||
Ham_HasTarget,
|
Ham_HasTarget,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Whether or not the entity is in the world.
|
||||||
|
* Forward params: function(this);
|
||||||
|
* Execute params: ExecuteHam(Ham_IsInWorld, this);
|
||||||
|
*/
|
||||||
Ham_IsInWorld,
|
Ham_IsInWorld,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Whether or not the entity is a player.
|
||||||
|
* Forward params: function(this);
|
||||||
|
* Execute params: ExecuteHam(Ham_IsPlayer, this);
|
||||||
|
*/
|
||||||
Ham_IsPlayer,
|
Ham_IsPlayer,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Whether or not the entity is a net client.
|
||||||
|
* Forward params: function(this);
|
||||||
|
* Execute params: ExecuteHam(Ham_IsNetClient, this);
|
||||||
|
*/
|
||||||
Ham_IsNetClient,
|
Ham_IsNetClient,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Get the entity's team id.
|
||||||
|
* Forward params: function(this);
|
||||||
|
* Execute params: ExecuteHam(Ham_IsPlayer, this, buffer[], size);
|
||||||
|
*/
|
||||||
Ham_TeamId,
|
Ham_TeamId,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Returns the next target of this.
|
||||||
|
* Forward params: function(this);
|
||||||
|
* Execute params: ExecuteHam(Ham_GetNextTarget, this);
|
||||||
|
*/
|
||||||
Ham_GetNextTarget,
|
Ham_GetNextTarget,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Called whenever an entity thinks.
|
||||||
|
* Forward params: function(this)
|
||||||
|
* Execute params: ExecuteHam(Ham_Think, this);
|
||||||
|
*/
|
||||||
Ham_Think,
|
Ham_Think,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Called whenever two entities touch.
|
||||||
|
* Forward params: function(this, idother);
|
||||||
|
* Execute params: ExecuteHam(Ham_Touch, this, idother);
|
||||||
|
*/
|
||||||
Ham_Touch,
|
Ham_Touch,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Called whenver one entity uses another.
|
||||||
|
* Forward params: function(this, idcaller, idactivator, use_type, Float:value)
|
||||||
|
* Execute params: ExecuteHam(Ham_Use, this, idcaller, idactivator, use_type, Float:value);
|
||||||
|
*/
|
||||||
Ham_Use,
|
Ham_Use,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Normally called whenever one entity blocks another from moving.
|
||||||
|
* Forward params: function(this, idother);
|
||||||
|
* Execute params: ExecuteHam(Ham_Blocked, this, idother);
|
||||||
|
*/
|
||||||
Ham_Blocked,
|
Ham_Blocked,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Normally called when a map-based item respawns, such as a health kit or something.
|
||||||
|
* Forward params: function(this);
|
||||||
|
* Execute params: ExecuteHam(Ham_Respawn, this);
|
||||||
|
*/
|
||||||
Ham_Respawn,
|
Ham_Respawn,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Used in Half-Life to update a monster's owner.
|
||||||
|
* Forward params: function(this);
|
||||||
|
* Execute params: ExecuteHam(Ham_UpdateOwner, this);
|
||||||
|
*/
|
||||||
Ham_UpdateOwner,
|
Ham_UpdateOwner,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Normally called whenever a barnacle grabs the entity.
|
||||||
|
* Forward params: function(this);
|
||||||
|
* Execute params: ExecuteHam(Ham_FBecomeProne, this);
|
||||||
|
*/
|
||||||
Ham_FBecomeProne,
|
Ham_FBecomeProne,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Returns the center of the entity.
|
||||||
|
* Forward params: function(this);
|
||||||
|
* Execute params: ExecuteHam(Ham_Center, this, Float:output[3]);
|
||||||
|
*/
|
||||||
Ham_Center,
|
Ham_Center,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Returns the eye position of the entity.
|
||||||
|
* Forward params: function(this);
|
||||||
|
* Execute params: ExecuteHam(Ham_EyePosition, this, Float:output[3]);
|
||||||
|
*/
|
||||||
Ham_EyePosition,
|
Ham_EyePosition,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: Returns the ear position of the entity.
|
||||||
|
* Forward params: function(this);
|
||||||
|
* Execute params: ExecuteHam(Ham_EarPosition, this, Float:output[3]);
|
||||||
|
*/
|
||||||
Ham_EarPosition,
|
Ham_EarPosition,
|
||||||
Ham_BodyTarget,
|
Ham_BodyTarget,
|
||||||
Ham_Illumination,
|
Ham_Illumination,
|
||||||
|
@ -64,6 +342,11 @@ enum Ham
|
||||||
Ham_TS_CanUsedThroughWalls,
|
Ham_TS_CanUsedThroughWalls,
|
||||||
Ham_TS_RespawnWait,
|
Ham_TS_RespawnWait,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: This is called on a map reset for most map based entities.
|
||||||
|
* Forward params: function(this);
|
||||||
|
* Execute params: ExecuteHam(Ham_Respawn, this);
|
||||||
|
*/
|
||||||
Ham_CS_Restart,
|
Ham_CS_Restart,
|
||||||
|
|
||||||
Ham_DOD_RoundRespawn,
|
Ham_DOD_RoundRespawn,
|
||||||
|
@ -90,6 +373,9 @@ enum Ham
|
||||||
Ham_NS_UpdateOnRemove,
|
Ham_NS_UpdateOnRemove,
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DONT USE ME LOL
|
||||||
|
*/
|
||||||
HAM_LAST_ENTRY_DONT_USE_ME_LOL
|
HAM_LAST_ENTRY_DONT_USE_ME_LOL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -115,7 +401,7 @@ native RegisterHam(Ham:function, const callback[], const entity[], post=0);
|
||||||
* @param function The function to call.
|
* @param function The function to call.
|
||||||
* @param id The id of the entity to execute it on.
|
* @param id The id of the entity to execute it on.
|
||||||
*/
|
*/
|
||||||
native ExecuteHam(Ham:function, id, any:...);
|
native ExecuteHam(Ham:function, this, any:...);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Executes the virtual function on the entity, this will trigger all hooks on that function.
|
* Executes the virtual function on the entity, this will trigger all hooks on that function.
|
||||||
|
@ -125,7 +411,7 @@ native ExecuteHam(Ham:function, id, any:...);
|
||||||
* @param function The function to call.
|
* @param function The function to call.
|
||||||
* @param id The id of the entity to execute it on.
|
* @param id The id of the entity to execute it on.
|
||||||
*/
|
*/
|
||||||
native ExecuteHamB(Ham:function, id, any:...);
|
native ExecuteHamB(Ham:function, this, any:...);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue
Block a user