

#if defined _orpheu_advanced_included

	#endinput

#endif

#define _orpheu_advanced_included



#include <orpheu_const>



/**

 *  Gets the bytes found at an address

 *

 * @param address			The direct address in memory

 * @param bytes				An array to hold the bytes

 * @param count				The number of bytes to get

 */

native OrpheuGetBytesAtAddress(address,bytes[],count)



/**

 *  Gets the address in memory of a function given a handler to it

 *

 * @param function			A handler to the function

 *

 * @return 					The address o the function

 */

native OrpheuGetFunctionAddress(OrpheuFunction:function)



/**

 *  Gets a handle to a struct given an address in memory

 *

 * @param structType		The type of the struct

 * @param address			The address where the struct is in

 *

 * @return 					A handler to the struct

 */

native OrpheuStruct:OrpheuGetStructFromAddress(OrpheuStructType:structType,address)



/**

 *  Gets the handler to a function given its address and the name that you give it in the file where you define the function

 *

 * @param address			The address where the function is

 * @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:OrpheuCreateFunction(address,const libFunctionName[],const classname[]="")



/**

 *  Gets the offset of the adress where the function is located to the base address of its library

 *

 * @param function			A handler to the function

 *

 * @return 					The offset

 */

native OrpheuGetFunctionOffset(OrpheuFunction:function)



/**

 *  Gets the adress of a library

 *

 * @param libraryName		The name of the library. For the mod library (cstrike,czero,etc) use "mod"

 *

 * @return 					The address

 */

native OrpheuGetLibraryAddress(const libraryName[])



/**

 *  This native should retrieve the address of functions called from an address

 *  For example by passing the address of the function X, and 1 as n, it should retrieve the address of the first

 * function called in X. It isn't confirmed to work on every condition and it should be use for experiments only

 * to help retrieving functions on Windows

 *

 * @param address			The address to start the search at

 * @param number			The number of the the call starting at 1 from the address

 *

 * @return 					The address of the function called

 */

native OrpheuGetNextCallAtAddress(address,number)

