Add dhooks.inc

This commit is contained in:
Headline 2019-05-30 15:01:48 -07:00
parent 6c7aafdaa5
commit b1bcb53466

View File

@ -1,487 +1,487 @@
#if defined _dhooks_included #if defined _dhooks_included
#endinput #endinput
#endif #endif
#define _dhooks_included #define _dhooks_included
enum ObjectValueType enum ObjectValueType
{ {
ObjectValueType_Int = 0, ObjectValueType_Int = 0,
ObjectValueType_Bool, ObjectValueType_Bool,
ObjectValueType_Ehandle, ObjectValueType_Ehandle,
ObjectValueType_Float, ObjectValueType_Float,
ObjectValueType_CBaseEntityPtr, ObjectValueType_CBaseEntityPtr,
ObjectValueType_IntPtr, ObjectValueType_IntPtr,
ObjectValueType_BoolPtr, ObjectValueType_BoolPtr,
ObjectValueType_EhandlePtr, ObjectValueType_EhandlePtr,
ObjectValueType_FloatPtr, ObjectValueType_FloatPtr,
ObjectValueType_Vector, ObjectValueType_Vector,
ObjectValueType_VectorPtr, ObjectValueType_VectorPtr,
ObjectValueType_CharPtr, ObjectValueType_CharPtr,
ObjectValueType_String ObjectValueType_String
}; };
enum ListenType enum ListenType
{ {
ListenType_Created, ListenType_Created,
ListenType_Deleted ListenType_Deleted
}; };
enum ReturnType enum ReturnType
{ {
ReturnType_Unknown, ReturnType_Unknown,
ReturnType_Void, ReturnType_Void,
ReturnType_Int, ReturnType_Int,
ReturnType_Bool, ReturnType_Bool,
ReturnType_Float, ReturnType_Float,
ReturnType_String, //Note this is a string_t ReturnType_String, //Note this is a string_t
ReturnType_StringPtr, //Note this is a string_t * ReturnType_StringPtr, //Note this is a string_t *
ReturnType_CharPtr, ReturnType_CharPtr,
ReturnType_Vector, ReturnType_Vector,
ReturnType_VectorPtr, ReturnType_VectorPtr,
ReturnType_CBaseEntity, ReturnType_CBaseEntity,
ReturnType_Edict ReturnType_Edict
}; };
enum HookParamType enum HookParamType
{ {
HookParamType_Unknown, HookParamType_Unknown,
HookParamType_Int, HookParamType_Int,
HookParamType_Bool, HookParamType_Bool,
HookParamType_Float, HookParamType_Float,
HookParamType_String, //Note this is a string_t HookParamType_String, //Note this is a string_t
HookParamType_StringPtr, //Note this is a string_t * HookParamType_StringPtr, //Note this is a string_t *
HookParamType_CharPtr, HookParamType_CharPtr,
HookParamType_VectorPtr, HookParamType_VectorPtr,
HookParamType_CBaseEntity, HookParamType_CBaseEntity,
HookParamType_ObjectPtr, HookParamType_ObjectPtr,
HookParamType_Edict, HookParamType_Edict,
HookParamType_Object HookParamType_Object
}; };
enum ThisPointerType enum ThisPointerType
{ {
ThisPointer_Ignore, ThisPointer_Ignore,
ThisPointer_CBaseEntity, ThisPointer_CBaseEntity,
ThisPointer_Address ThisPointer_Address
}; };
enum HookType enum HookType
{ {
HookType_Entity, HookType_Entity,
HookType_GameRules, HookType_GameRules,
HookType_Raw HookType_Raw
}; };
enum MRESReturn enum MRESReturn
{ {
MRES_ChangedHandled = -2, // Use changed values and return MRES_Handled MRES_ChangedHandled = -2, // Use changed values and return MRES_Handled
MRES_ChangedOverride, // Use changed values and return MRES_Override MRES_ChangedOverride, // Use changed values and return MRES_Override
MRES_Ignored, // plugin didn't take any action MRES_Ignored, // plugin didn't take any action
MRES_Handled, // plugin did something, but real function should still be called MRES_Handled, // plugin did something, but real function should still be called
MRES_Override, // call real function, but use my return value MRES_Override, // call real function, but use my return value
MRES_Supercede // skip real function; use my return value MRES_Supercede // skip real function; use my return value
}; };
enum DHookPassFlag enum DHookPassFlag
{ {
DHookPass_ByVal = (1<<0), /**< Passing by value */ DHookPass_ByVal = (1<<0), /**< Passing by value */
DHookPass_ByRef = (1<<1), /**< Passing by reference */ DHookPass_ByRef = (1<<1), /**< Passing by reference */
DHookPass_ODTOR = (1<<2), /**< Object has a destructor */ DHookPass_ODTOR = (1<<2), /**< Object has a destructor */
DHookPass_OCTOR = (1<<3), /**< Object has a constructor */ DHookPass_OCTOR = (1<<3), /**< Object has a constructor */
DHookPass_OASSIGNOP = (1<<4), /**< Object has an assignment operator */ DHookPass_OASSIGNOP = (1<<4), /**< Object has an assignment operator */
}; };
typeset ListenCB typeset ListenCB
{ {
//Deleted //Deleted
function void (int entity); function void (int entity);
//Created //Created
function void (int entity, const char[] classname); function void (int entity, const char[] classname);
}; };
typeset DHookRemovalCB typeset DHookRemovalCB
{ {
function void (int hookid); function void (int hookid);
}; };
typeset DHookCallback typeset DHookCallback
{ {
//Function Example: void Ham::Test() with this pointer ignore //Function Example: void Ham::Test() with this pointer ignore
function MRESReturn (); function MRESReturn ();
//Function Example: void Ham::Test() with this pointer passed //Function Example: void Ham::Test() with this pointer passed
function MRESReturn (int pThis); function MRESReturn (int pThis);
//Function Example: void Ham::Test(int cake) with this pointer ignore //Function Example: void Ham::Test(int cake) with this pointer ignore
function MRESReturn (Handle hParams); function MRESReturn (Handle hParams);
//Function Example: void Ham::Test(int cake) with this pointer passed //Function Example: void Ham::Test(int cake) with this pointer passed
function MRESReturn (int pThis, Handle hParams); function MRESReturn (int pThis, Handle hParams);
//Function Example: int Ham::Test() with this pointer ignore //Function Example: int Ham::Test() with this pointer ignore
function MRESReturn (Handle hReturn); function MRESReturn (Handle hReturn);
//Function Example: int Ham::Test() with this pointer passed //Function Example: int Ham::Test() with this pointer passed
function MRESReturn (int pThis, Handle hReturn); function MRESReturn (int pThis, Handle hReturn);
//Function Example: int Ham::Test(int cake) with this pointer ignore //Function Example: int Ham::Test(int cake) with this pointer ignore
function MRESReturn (Handle hReturn, Handle hParams); function MRESReturn (Handle hReturn, Handle hParams);
//Function Example: int Ham::Test(int cake) with this pointer passed //Function Example: int Ham::Test(int cake) with this pointer passed
function MRESReturn (int pThis, Handle hReturn, Handle hParams); function MRESReturn (int pThis, Handle hReturn, Handle hParams);
//Address NOW //Address NOW
//Function Example: void Ham::Test() with this pointer passed //Function Example: void Ham::Test() with this pointer passed
function MRESReturn (Address pThis); function MRESReturn (Address pThis);
//Function Example: void Ham::Test(int cake) with this pointer passed //Function Example: void Ham::Test(int cake) with this pointer passed
function MRESReturn (Address pThis, Handle hParams); function MRESReturn (Address pThis, Handle hParams);
//Function Example: int Ham::Test() with this pointer passed //Function Example: int Ham::Test() with this pointer passed
function MRESReturn (Address pThis, Handle hReturn); function MRESReturn (Address pThis, Handle hReturn);
//Function Example: int Ham::Test(int cake) with this pointer passed //Function Example: int Ham::Test(int cake) with this pointer passed
function MRESReturn (Address pThis, Handle hReturn, Handle hParams); function MRESReturn (Address pThis, Handle hReturn, Handle hParams);
}; };
/* Adds an entity listener hook /* Adds an entity listener hook
* *
* @param type Type of listener to add * @param type Type of listener to add
* @param callback Callback to use * @param callback Callback to use
* *
* @noreturn * @noreturn
*/ */
native void DHookAddEntityListener(ListenType type, ListenCB callback); native void DHookAddEntityListener(ListenType type, ListenCB callback);
/* Removes an entity listener hook /* Removes an entity listener hook
* *
* @param type Type of listener to remove * @param type Type of listener to remove
* @param callback Callback this listener was using * @param callback Callback this listener was using
* *
* @return True if one was removed false otherwise. * @return True if one was removed false otherwise.
*/ */
native bool DHookRemoveEntityListener(ListenType type, ListenCB callback); native bool DHookRemoveEntityListener(ListenType type, ListenCB callback);
/* Creates a hook /* Creates a hook
* *
* @param offset vtable offset for function to hook * @param offset vtable offset for function to hook
* @param hooktype Type of hook * @param hooktype Type of hook
* @param returntype Type type of return * @param returntype Type type of return
* @param thistype Type of this pointer or ignore (ignore can be used if not needed) * @param thistype Type of this pointer or ignore (ignore can be used if not needed)
* @param callback Optional callback function, if not set here must be set when hooking. * @param callback Optional callback function, if not set here must be set when hooking.
* *
* @return Returns setup handle for the hook or INVALID_HANDLE. * @return Returns setup handle for the hook or INVALID_HANDLE.
*/ */
native Handle DHookCreate(int offset, HookType hooktype, ReturnType returntype, ThisPointerType thistype, DHookCallback callback=INVALID_FUNCTION); native Handle DHookCreate(int offset, HookType hooktype, ReturnType returntype, ThisPointerType thistype, DHookCallback callback=INVALID_FUNCTION);
/* Adds param to a hook setup /* Adds param to a hook setup
* *
* @param setup Setup handle to add the param to. * @param setup Setup handle to add the param to.
* @param type Param type * @param type Param type
* @param size Used for Objects (not Object ptr) to define the size of the object. * @param size Used for Objects (not Object ptr) to define the size of the object.
* @param flag Used to change the pass type. * @param flag Used to change the pass type.
* *
* @error Invalid setup handle or too many params added (request upping the max in thread) * @error Invalid setup handle or too many params added (request upping the max in thread)
* @noreturn * @noreturn
*/ */
native void DHookAddParam(Handle setup, HookParamType type, int size=-1, DHookPassFlag flag=DHookPass_ByVal); native void DHookAddParam(Handle setup, HookParamType type, int size=-1, DHookPassFlag flag=DHookPass_ByVal);
/* Hook entity /* Hook entity
* *
* @param setup Setup handle to use to add the hook. * @param setup Setup handle to use to add the hook.
* @param post True to make the hook a post hook. (If you need to change the retunr value or need the return value use a post hook! If you need to change params and return use a pre and post hook!) * @param post True to make the hook a post hook. (If you need to change the retunr value or need the return value use a post hook! If you need to change params and return use a pre and post hook!)
* @param entity Entity index to hook on. * @param entity Entity index to hook on.
* @param removalcb Callback for when the hook is removed (Entity hooks are auto-removed on entity destroyed and will call this callback) * @param removalcb Callback for when the hook is removed (Entity hooks are auto-removed on entity destroyed and will call this callback)
* @param callback Optional callback function, if not set here must be set when creating the hook. * @param callback Optional callback function, if not set here must be set when creating the hook.
* *
* @error Invalid setup handle, invalid address, invalid hook type or invalid callback. * @error Invalid setup handle, invalid address, invalid hook type or invalid callback.
* @return -1 on fail a hookid on success * @return -1 on fail a hookid on success
*/ */
native int DHookEntity(Handle setup, bool post, int entity, DHookRemovalCB removalcb=INVALID_FUNCTION, DHookCallback callback=INVALID_FUNCTION); native int DHookEntity(Handle setup, bool post, int entity, DHookRemovalCB removalcb=INVALID_FUNCTION, DHookCallback callback=INVALID_FUNCTION);
/* Hook gamerules /* Hook gamerules
* *
* @param setup Setup handle to use to add the hook. * @param setup Setup handle to use to add the hook.
* @param post True to make the hook a post hook. (If you need to change the retunr value or need the return value use a post hook! If you need to change params and return use a pre and post hook!) * @param post True to make the hook a post hook. (If you need to change the retunr value or need the return value use a post hook! If you need to change params and return use a pre and post hook!)
* @param removalcb Callback for when the hook is removed (Game rules hooks are auto-removed on map end and will call this callback) * @param removalcb Callback for when the hook is removed (Game rules hooks are auto-removed on map end and will call this callback)
* @param callback Optional callback function, if not set here must be set when creating the hook. * @param callback Optional callback function, if not set here must be set when creating the hook.
* *
* @error Invalid setup handle, invalid address, invalid hook type or invalid callback. * @error Invalid setup handle, invalid address, invalid hook type or invalid callback.
* @return -1 on fail a hookid on success * @return -1 on fail a hookid on success
*/ */
native int DHookGamerules(Handle setup, bool post, DHookRemovalCB removalcb=INVALID_FUNCTION, DHookCallback callback=INVALID_FUNCTION); native int DHookGamerules(Handle setup, bool post, DHookRemovalCB removalcb=INVALID_FUNCTION, DHookCallback callback=INVALID_FUNCTION);
/* Hook a raw pointer /* Hook a raw pointer
* *
* @param setup Setup handle to use to add the hook. * @param setup Setup handle to use to add the hook.
* @param post True to make the hook a post hook. (If you need to change the retunr value or need the return value use a post hook! If you need to change params and return use a pre and post hook!) * @param post True to make the hook a post hook. (If you need to change the retunr value or need the return value use a post hook! If you need to change params and return use a pre and post hook!)
* @param addr This pointer address. * @param addr This pointer address.
* @param removalcb Callback for when the hook is removed (Entity hooks are auto-removed on entity destroyed and will call this callback) * @param removalcb Callback for when the hook is removed (Entity hooks are auto-removed on entity destroyed and will call this callback)
* @param callback Optional callback function, if not set here must be set when creating the hook. * @param callback Optional callback function, if not set here must be set when creating the hook.
* *
* @error Invalid setup handle, invalid address, invalid hook type or invalid callback. * @error Invalid setup handle, invalid address, invalid hook type or invalid callback.
* @return -1 on fail a hookid on success * @return -1 on fail a hookid on success
*/ */
native int DHookRaw(Handle setup, bool post, Address addr, DHookRemovalCB removalcb=INVALID_FUNCTION, DHookCallback callback=INVALID_FUNCTION); native int DHookRaw(Handle setup, bool post, Address addr, DHookRemovalCB removalcb=INVALID_FUNCTION, DHookCallback callback=INVALID_FUNCTION);
/* Remove hook by hook id /* Remove hook by hook id
* *
* @param hookid Hook id to remove * @param hookid Hook id to remove
* *
* @return true on success false otherwise * @return true on success false otherwise
* @note This will not fire the removal callback! * @note This will not fire the removal callback!
*/ */
native bool DHookRemoveHookID(int hookid); native bool DHookRemoveHookID(int hookid);
/* Get param value (Only use for: int, entity, bool or float param types) /* Get param value (Only use for: int, entity, bool or float param types)
* *
* @param hParams Handle to params structure * @param hParams Handle to params structure
* @param num Param number to get. (Example if the function has 2 params and you need the value of the first param num would be 1. 0 Will return the number of params stored) * @param num Param number to get. (Example if the function has 2 params and you need the value of the first param num would be 1. 0 Will return the number of params stored)
* *
* @error Invalid handle. Invalid param number. Invalid param type. * @error Invalid handle. Invalid param number. Invalid param type.
* @return value if num greater than 0. If 0 returns paramcount. * @return value if num greater than 0. If 0 returns paramcount.
*/ */
native any DHookGetParam(Handle hParams, int num); native any DHookGetParam(Handle hParams, int num);
/* Get vector param value /* Get vector param value
* *
* @param hParams Handle to params structure * @param hParams Handle to params structure
* @param num Param number to get. (Example if the function has 2 params and you need the value of the first param num would be 1.) * @param num Param number to get. (Example if the function has 2 params and you need the value of the first param num would be 1.)
* @param vec Vector buffer to store result. * @param vec Vector buffer to store result.
* *
* @error Invalid handle. Invalid param number. Invalid param type. * @error Invalid handle. Invalid param number. Invalid param type.
* @noreturn * @noreturn
*/ */
native void DHookGetParamVector(Handle hParams, int num, float vec[3]); native void DHookGetParamVector(Handle hParams, int num, float vec[3]);
/* Get string param value /* Get string param value
* *
* @param hParams Handle to params structure * @param hParams Handle to params structure
* @param num Param number to get. (Example if the function has 2 params and you need the value of the first param num would be 1.) * @param num Param number to get. (Example if the function has 2 params and you need the value of the first param num would be 1.)
* @param buffer String buffer to store result * @param buffer String buffer to store result
* @param size Buffer size * @param size Buffer size
* *
* @error Invalid handle. Invalid param number. Invalid param type. * @error Invalid handle. Invalid param number. Invalid param type.
* @noreturn * @noreturn
*/ */
native void DHookGetParamString(Handle hParams, int num, char[] buffer, int size); native void DHookGetParamString(Handle hParams, int num, char[] buffer, int size);
/* Set param value (Only use for: int, entity, bool or float param types) /* Set param value (Only use for: int, entity, bool or float param types)
* *
* @param hParams Handle to params structure * @param hParams Handle to params structure
* @params num Param number to set (Example if the function has 2 params and you need to set the value of the first param num would be 1.) * @params num Param number to set (Example if the function has 2 params and you need to set the value of the first param num would be 1.)
* @param value Value to set it as (only pass int, bool, float or entity index) * @param value Value to set it as (only pass int, bool, float or entity index)
* *
* @error Invalid handle. Invalid param number. Invalid param type. * @error Invalid handle. Invalid param number. Invalid param type.
* @noreturn * @noreturn
*/ */
native void DHookSetParam(Handle hParams, int num, any value); native void DHookSetParam(Handle hParams, int num, any value);
/* Set vector param value /* Set vector param value
* *
* @param hParams Handle to params structure * @param hParams Handle to params structure
* @params num Param number to set (Example if the function has 2 params and you need to set the value of the first param num would be 1.) * @params num Param number to set (Example if the function has 2 params and you need to set the value of the first param num would be 1.)
* @param vec Value to set vector as. * @param vec Value to set vector as.
* *
* @error Invalid handle. Invalid param number. Invalid param type. * @error Invalid handle. Invalid param number. Invalid param type.
* @noreturn * @noreturn
*/ */
native void DHookSetParamVector(Handle hParams, int num, float vec[3]); native void DHookSetParamVector(Handle hParams, int num, float vec[3]);
/* Set string param value /* Set string param value
* *
* @param hParams Handle to params structure * @param hParams Handle to params structure
* @params num Param number to set (Example if the function has 2 params and you need to set the value of the first param num would be 1.) * @params num Param number to set (Example if the function has 2 params and you need to set the value of the first param num would be 1.)
* @param value Value to set string as. * @param value Value to set string as.
* *
* @error Invalid handle. Invalid param number. Invalid param type. * @error Invalid handle. Invalid param number. Invalid param type.
* @noreturn * @noreturn
*/ */
native void DHookSetParamString(Handle hParams, int num, char[] value); native void DHookSetParamString(Handle hParams, int num, char[] value);
/* Get return value (Only use for: int, entity, bool or float return types) /* Get return value (Only use for: int, entity, bool or float return types)
* *
* @param hReturn Handle to return structure * @param hReturn Handle to return structure
* *
* @error Invalid Handle, invalid type. * @error Invalid Handle, invalid type.
* @return Returns default value if prehook returns actual value if post hook. * @return Returns default value if prehook returns actual value if post hook.
*/ */
native any DHookGetReturn(Handle hReturn); native any DHookGetReturn(Handle hReturn);
/* Get return vector value /* Get return vector value
* *
* @param hReturn Handle to return structure * @param hReturn Handle to return structure
* @param vec Vector buffer to store result in. (In pre hooks will be default value (0.0,0.0,0.0)) * @param vec Vector buffer to store result in. (In pre hooks will be default value (0.0,0.0,0.0))
* *
* @error Invalid Handle, invalid type. * @error Invalid Handle, invalid type.
* @noreturn * @noreturn
*/ */
native void DHookGetReturnVector(Handle hReturn, float vec[3]); native void DHookGetReturnVector(Handle hReturn, float vec[3]);
/* Get return string value /* Get return string value
* *
* @param hReturn Handle to return structure * @param hReturn Handle to return structure
* @param buffer String buffer to store result in. (In pre hooks will be default value "") * @param buffer String buffer to store result in. (In pre hooks will be default value "")
* @param size String buffer size * @param size String buffer size
* *
* @error Invalid Handle, invalid type. * @error Invalid Handle, invalid type.
* @noreturn * @noreturn
*/ */
native void DHookGetReturnString(Handle hReturn, char[] buffer, int size); native void DHookGetReturnString(Handle hReturn, char[] buffer, int size);
/* Set return value (Only use for: int, entity, bool or float return types) /* Set return value (Only use for: int, entity, bool or float return types)
* *
* @param hReturn Handle to return structure * @param hReturn Handle to return structure
* @param value Value to set return as * @param value Value to set return as
* *
* @error Invalid Handle, invalid type. * @error Invalid Handle, invalid type.
* @noreturn * @noreturn
*/ */
native void DHookSetReturn(Handle hReturn, any value); native void DHookSetReturn(Handle hReturn, any value);
/* Set return vector value /* Set return vector value
* *
* @param hReturn Handle to return structure * @param hReturn Handle to return structure
* @param vec Value to set return vector as * @param vec Value to set return vector as
* *
* @error Invalid Handle, invalid type. * @error Invalid Handle, invalid type.
* @noreturn * @noreturn
*/ */
native void DHookSetReturnVector(Handle hReturn, float vec[3]); native void DHookSetReturnVector(Handle hReturn, float vec[3]);
/* Set return string value /* Set return string value
* *
* @param hReturn Handle to return structure * @param hReturn Handle to return structure
* @param value Value to set return string as * @param value Value to set return string as
* *
* @error Invalid Handle, invalid type. * @error Invalid Handle, invalid type.
* @noreturn * @noreturn
*/ */
native void DHookSetReturnString(Handle hReturn, char[] value); native void DHookSetReturnString(Handle hReturn, char[] value);
//WE SHOULD WRAP THESE AROUND STOCKS FOR NON PTR AS WE SUPPORT BOTH WITH THESE NATIVE'S //WE SHOULD WRAP THESE AROUND STOCKS FOR NON PTR AS WE SUPPORT BOTH WITH THESE NATIVE'S
/* Gets an objects variable value /* Gets an objects variable value
* *
* @param hParams Handle to params structure * @param hParams Handle to params structure
* @param num Param number to get. * @param num Param number to get.
* @param offset Offset within the object to the var to get. * @param offset Offset within the object to the var to get.
* @param type Type of var it is * @param type Type of var it is
* *
* @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type. * @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type.
* @return Value of the objects var. If EHANDLE type or entity returns entity index. * @return Value of the objects var. If EHANDLE type or entity returns entity index.
*/ */
native any DHookGetParamObjectPtrVar(Handle hParams, int num, int offset, ObjectValueType type); native any DHookGetParamObjectPtrVar(Handle hParams, int num, int offset, ObjectValueType type);
/* Sets an objects variable value /* Sets an objects variable value
* *
* @param hParams Handle to params structure * @param hParams Handle to params structure
* @param num Param number to set. * @param num Param number to set.
* @param offset Offset within the object to the var to set. * @param offset Offset within the object to the var to set.
* @param type Type of var it is * @param type Type of var it is
* @param value The value to set the var to. * @param value The value to set the var to.
* *
* @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type. * @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type.
* @noreturn * @noreturn
*/ */
native void DHookSetParamObjectPtrVar(Handle hParams, int num, int offset, ObjectValueType type, any value); native void DHookSetParamObjectPtrVar(Handle hParams, int num, int offset, ObjectValueType type, any value);
/* Gets an objects vector variable value /* Gets an objects vector variable value
* *
* @param hParams Handle to params structure * @param hParams Handle to params structure
* @param num Param number to get. * @param num Param number to get.
* @param offset Offset within the object to the var to get. * @param offset Offset within the object to the var to get.
* @param type Type of var it is * @param type Type of var it is
* @param buffer Buffer to store the result vector * @param buffer Buffer to store the result vector
* *
* @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type. * @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type.
* @noreturn * @noreturn
*/ */
native void DHookGetParamObjectPtrVarVector(Handle hParams, int num, int offset, ObjectValueType type, float buffer[3]); native void DHookGetParamObjectPtrVarVector(Handle hParams, int num, int offset, ObjectValueType type, float buffer[3]);
/* Sets an objects vector variable value /* Sets an objects vector variable value
* *
* @param hParams Handle to params structure * @param hParams Handle to params structure
* @param num Param number to set. * @param num Param number to set.
* @param offset Offset within the object to the var to set. * @param offset Offset within the object to the var to set.
* @param type Type of var it is * @param type Type of var it is
* @param value The value to set the vector var to. * @param value The value to set the vector var to.
* *
* @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type. * @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type.
* @noreturn * @noreturn
*/ */
native void DHookSetParamObjectPtrVarVector(Handle hParams, int num, int offset, ObjectValueType type, float value[3]); native void DHookSetParamObjectPtrVarVector(Handle hParams, int num, int offset, ObjectValueType type, float value[3]);
/* Gets an objects string variable value /* Gets an objects string variable value
* *
* @param hParams Handle to params structure * @param hParams Handle to params structure
* @param num Param number to get. * @param num Param number to get.
* @param offset Offset within the object to the var to get. * @param offset Offset within the object to the var to get.
* @param type Type of var it is * @param type Type of var it is
* @param buffer Buffer to store the result vector * @param buffer Buffer to store the result vector
* @param size Size of the buffer * @param size Size of the buffer
* *
* @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type. * @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type.
* @noreturn * @noreturn
*/ */
native void DHookGetParamObjectPtrString(Handle hParams, int num, int offset, ObjectValueType type, char[] buffer, int size); native void DHookGetParamObjectPtrString(Handle hParams, int num, int offset, ObjectValueType type, char[] buffer, int size);
/* Checks if a pointer param is null /* Checks if a pointer param is null
* *
* @param hParams Handle to params structure * @param hParams Handle to params structure
* @param num Param number to check. * @param num Param number to check.
* *
* @error Non pointer param * @error Non pointer param
* @return True if null false otherwise. * @return True if null false otherwise.
*/ */
native bool DHookIsNullParam(Handle hParams, int num); native bool DHookIsNullParam(Handle hParams, int num);
public Extension __ext_dhooks = public Extension __ext_dhooks =
{ {
name = "dhooks", name = "dhooks",
file = "dhooks.ext", file = "dhooks.ext",
#if defined AUTOLOAD_EXTENSIONS #if defined AUTOLOAD_EXTENSIONS
autoload = 1, autoload = 1,
#else #else
autoload = 0, autoload = 0,
#endif #endif
#if defined REQUIRE_EXTENSIONS #if defined REQUIRE_EXTENSIONS
required = 1, required = 1,
#else #else
required = 0, required = 0,
#endif #endif
}; };
#if !defined REQUIRE_EXTENSIONS #if !defined REQUIRE_EXTENSIONS
public __ext_dhooks_SetNTVOptional() public __ext_dhooks_SetNTVOptional()
{ {
MarkNativeAsOptional("DHookAddEntityListener"); MarkNativeAsOptional("DHookAddEntityListener");
MarkNativeAsOptional("DHookRemoveEntityListener"); MarkNativeAsOptional("DHookRemoveEntityListener");
MarkNativeAsOptional("DHookCreate"); MarkNativeAsOptional("DHookCreate");
MarkNativeAsOptional("DHookAddParam"); MarkNativeAsOptional("DHookAddParam");
MarkNativeAsOptional("DHookEntity"); MarkNativeAsOptional("DHookEntity");
MarkNativeAsOptional("DHookGamerules"); MarkNativeAsOptional("DHookGamerules");
MarkNativeAsOptional("DHookRaw"); MarkNativeAsOptional("DHookRaw");
MarkNativeAsOptional("DHookRemoveHookID"); MarkNativeAsOptional("DHookRemoveHookID");
MarkNativeAsOptional("DHookGetParam"); MarkNativeAsOptional("DHookGetParam");
MarkNativeAsOptional("DHookGetParamVector"); MarkNativeAsOptional("DHookGetParamVector");
MarkNativeAsOptional("DHookGetParamString"); MarkNativeAsOptional("DHookGetParamString");
MarkNativeAsOptional("DHookSetParam"); MarkNativeAsOptional("DHookSetParam");
MarkNativeAsOptional("DHookSetParamVector"); MarkNativeAsOptional("DHookSetParamVector");
MarkNativeAsOptional("DHookSetParamString"); MarkNativeAsOptional("DHookSetParamString");
MarkNativeAsOptional("DHookGetReturn"); MarkNativeAsOptional("DHookGetReturn");
MarkNativeAsOptional("DHookGetReturnVector"); MarkNativeAsOptional("DHookGetReturnVector");
MarkNativeAsOptional("DHookGetReturnString"); MarkNativeAsOptional("DHookGetReturnString");
MarkNativeAsOptional("DHookSetReturn"); MarkNativeAsOptional("DHookSetReturn");
MarkNativeAsOptional("DHookSetReturnVector"); MarkNativeAsOptional("DHookSetReturnVector");
MarkNativeAsOptional("DHookSetReturnString"); MarkNativeAsOptional("DHookSetReturnString");
MarkNativeAsOptional("DHookGetParamObjectPtrVar"); MarkNativeAsOptional("DHookGetParamObjectPtrVar");
MarkNativeAsOptional("DHookSetParamObjectPtrVar"); MarkNativeAsOptional("DHookSetParamObjectPtrVar");
MarkNativeAsOptional("DHookGetParamObjectPtrVarVector"); MarkNativeAsOptional("DHookGetParamObjectPtrVarVector");
MarkNativeAsOptional("DHookSetParamObjectPtrVarVector"); MarkNativeAsOptional("DHookSetParamObjectPtrVarVector");
MarkNativeAsOptional("DHookIsNullParam"); MarkNativeAsOptional("DHookIsNullParam");
MarkNativeAsOptional("DHookGetParamObjectPtrString"); MarkNativeAsOptional("DHookGetParamObjectPtrString");
} }
#endif #endif