- AMXX-BG.info
- orpheu.inc
- Raw
- Functions
- Constants
#if defined _orpheu_included
#endinput
#endif
#define _orpheu_included
#include <orpheu_const>
/**
* Retrieves a function based on a function name
* The name must be the same as the one in the file where the function is defined
*
* @param libFunctionName The name of the function as it is in the file where the function is defined
* @param className The name of the class if the function belongs to one
*
* @return A handler to the function
*/
native OrpheuFunction:OrpheuGetFunction(const libFunctionName[],const className[]="")
/**
* Hooks a function
*
* @param function A handler to the function
* @param hookFunctionName The function name in the plugin that shall be called upon interception of the original function
* @param phase The phase of the hook. It can have two values. Pre means "right before the original function is called". Post means "right after the original function is called"
*
* @return A handler to the hook
*/
native OrpheuHook:OrpheuRegisterHook(OrpheuFunction:function,const hookFunctionName[],OrpheuHookPhase:phase = OrpheuHookPre)
/**
* Unregisters a hook (stops it)
*
* @param hook A handler to the hook
*/
native OrpheuUnregisterHook(OrpheuHook:hook)
/**
* Calls a function without triggering its hooks
*
* @param function A handler to the function
* @param any The arguments of the function
*/
native OrpheuCall(OrpheuFunction:function,any:...)
/**
* Calls a function and triggers its hooks
*
* @param function A handler to the function
* @param any The arguments of the function
*/
native OrpheuCallSuper(OrpheuFunction:function,any:...)
/**
* Gets the return value of a function (To be used in hooks Post)
*
* @param any In case the value is multi cell (string or vector), an holder to receive them by ref
* @return In case the value is uni cell, the value itself
*/
native any:OrpheuGetReturn(any:...)
/**
* Sets the return value of a function
*
* @param any Depending on the type of the return of the function, a value to be used as the return as the original hooked function
*/
native OrpheuSetReturn(any:...)
/**
* Sets the value of an argument
*
* @param num The number of the argument. The first argument would be the number "1"
* @param any Depending on the type of the argument, a value to be replace it to change the behaviour of the hooked function
*/
native OrpheuSetParam(num,any:...)
/**
* Creates a struct
*
* @param structType The type of the struct
*
* @return A handler to the struct
*/
native OrpheuStruct:OrpheuCreateStruct(OrpheuStructType:structType)
/**
* Retrieves the value of a member of a struct given the argument number the struct is and the member name
*
* @param num The number of the argument. The first argument would be the number "1"
* @param memberName The name of the member of the struct we want to deal with
* @param any If the member is multi cell,
*
* @return In case the value is uni cell, the value itself
*/
native OrpheuGetParamStructMember(num,const memberName[],any:...)
/**
* Sets the value of member of a struct given the argument number the struct is and the member name
*
* @param num The number of the argument. The first argument would be the number "1"
* @param memberName The name of the member of the struct we want to deal with
* @param any The new value
*/
native OrpheuSetParamStructMember(num,const memberName[],any:...)
/**
* Gets a struct handler for a struct received as an argument
* Beware that if the original struct gets destroyed or changed these effects will reflect on your use of it.
*
* @param num The number of the argument. The first argument would be the number "1"
*
* @return A handler to the struct
*/
native OrpheuStruct:OrpheuGetStructFromParam(num)
/**
* Creates a struct equal to one received as an argument
*
* @param num The number of the argument. The first argument would be the number "1"
*
* @return A handler to the struct
*/
native OrpheuStruct:OrpheuCloneStructFromParam(num)
/**
* Sets the value of a member of a struct given a struct handler and the member name
*
* @param struct A handler to the struct
* @param memberName The name of the member of the struct we want to deal with
* @param any The new value
*/
native OrpheuSetStructMember(OrpheuStruct:struct,const memberName[],any:...)
/**
* Retrieves the value of a member of a struct given a struct handler and the member name
*
* @param struct A handler to the struct
* @param memberName The name of the member of the struct we want to deal with
* @param any In case the value is multi cell (string or vector), an holder to receive them by ref
*
* @return In case the value is uni cell, the value itself
*/
native OrpheuGetStructMember(OrpheuStruct:struct,const memberName[],any:...)
/**
* Retrieves a handler to a struct that hold the addresses of the engine functions
* By retrieving addresses from the struct is possible to hook them.
* A easier way to achieve the same thing is by using the stock OrpheuGetEngineFunction
* @return A handler to a struct that holds the engine functions
*/
native OrpheuStruct:OrpheuGetEngineFunctionsStruct()
/**
* Retrieves a handler to a struct that hold the addresses of the dll functions
* By retrieving addresses from the struct is possible to hook them.
* A easier way to achieve the same thing is by using the stock OrpheuGetDllFunction
* @return A handler to a struct that holds the dll functions
*/
native OrpheuStruct:OrpheuGetDLLFunctionsStruct()
/**
* Retrieves a handler to a function given a classname, the function name and the classname
* This function is a virtual function (a function defined in abase class and implemented
* differently by each extender class)
* For example: every class that extends CBaseEntity has a Spawn function. That function is defined in CBaseEntity
* and implemented differently by each class derived from CBaseEntity
*
* @param entityClassName A class related to the object that holds the function wanted to be hooked. Example: "player"
* @param libFunctionName The library function name as it is in the file created to define the function
* @param libClassName The library function name as it is in the file created to define the function
* @return A handler to the function
*/
native OrpheuFunction:OrpheuGetFunctionFromClass(const entityClassName[],const libFunctionName[],const libClassName[])
/**
* Retrieves a handler to a function given the ID of an entity, the function name and the classname
* This function is a virtual function (a function defined in abase class and implemented
* differently by each extender class)
* For example: every class that extends CBaseEntity has a Spawn function. That function is defined in CBaseEntity
* and implemented differently by each class derived from CBaseEntity
*
* @param id The id of the entity
* @param libFunctionName The library function name as it is in the file created to define the function
* @param libClassName The library function name as it is in the file created to define the function
* @return A handler to the function
*/
native OrpheuFunction:OrpheuGetFunctionFromEntity(id,const libFunctionName[],const libClassName[])
/**
* Retrieves a handler to a function given an object, the function name and the classname
* This function is a virtual function (a function defined in abase class and implemented
* differently by each extender class)
* For example: every class that extends CBaseEntity has a Spawn function. That function is defined in CBaseEntity
* and implemented differently by each class derived from CBaseEntity
*
* @param object An object. More precisely, the address of a C++ object. This should be used for classes that are not entities
* @param libFunctionName The library function name as it is in the file created to define the function
* @param libClassName The library function name as it is in the file created to define the function
* @return A handler to the function
*/
native OrpheuFunction:OrpheuGetFunctionFromObject(object,const libFunctionName[],const libClassName[])
/**
* Retrieves a handler to a function given the id of a monster of monstermod, the function name and the classname
* This function is a virtual function (a function defined in abase class and implemented
* differently by each extender class)
* For example: every class that extends CBaseEntity has a Spawn function. That function is defined in CBaseEntity
* and implemented differently by each class derived from CBaseEntity
*
* This function goes against the spirit of orpheu of hardcoding the less possible but without it would be much
* more complex to use virtual functions
*
* @param id The id of a monster from monstermod
* @param libFunctionName The library function name as it is in the file created to define the function
* @param libClassName The library function name as it is in the file created to define the function
* @return A handler to the function
*/
native OrpheuFunction:OrpheuGetFunctionFromMonster(id, const libFunctionName[], const libClassName[])