Premium Реклама Spotlight Bundles Boost Банери Кредити
Основно Начало Сървъри Marketplace Форум Сървъри
Общности Хостинг Добави Auction Boost
Ресурси
Библиотеки Карти Видеа Магазин Bundles
Инструменти
Builder Demo CFG HUD
AMXX API
Вход Регистрация
TOP SERVER
[IG] Easy Surf | Ramp Fix | RANKS | REPLAYS
Counter-Strike 1.6
surf_flyin_fortress
40.160.19.36:27015
18.05 18:49
8/64
186ms
/ Библиотеки / orpheu.inc

orpheu.inc

.inc 9.2 KB 221 реда 04.04.2026
Pawn / AMX Mod X

#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[])
РЕКЛАМИРАЙ ПРИ НАС!
AMXX-BG.INFO
КАК ДА ИЗПОЛЗВАМ
Добави в началото на .sma файла:
#include <orpheu>
1. Изтегли
Свали файла от бутона по-горе
2. Копирай
Постави в scripting/include/
3. Включи
Добави #include директивата
4. Компилирай
Използвай amxxpc или scripting/compile.exe
PrivateServ.NET