latest sdk
This commit is contained in:
		| @@ -2421,9 +2421,6 @@ C_DLLEXPORT void __stdcall GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, | |||||||
|  |  | ||||||
| /************* AMXX Stuff *************/ | /************* AMXX Stuff *************/ | ||||||
|  |  | ||||||
| // *** Types *** |  | ||||||
| typedef void* (*PFN_REQ_FNPTR)(const char * /*name*/); |  | ||||||
|  |  | ||||||
| // *** Globals *** | // *** Globals *** | ||||||
| // Module info | // Module info | ||||||
| static amxx_module_info_s g_ModuleInfo =  | static amxx_module_info_s g_ModuleInfo =  | ||||||
| @@ -2432,15 +2429,17 @@ static amxx_module_info_s g_ModuleInfo = | |||||||
| 	MODULE_AUTHOR, | 	MODULE_AUTHOR, | ||||||
| 	MODULE_VERSION, | 	MODULE_VERSION, | ||||||
| #ifdef MODULE_RELOAD_ON_MAPCHANGE | #ifdef MODULE_RELOAD_ON_MAPCHANGE | ||||||
| 	1 | 	1, | ||||||
| #else // MODULE_RELOAD_ON_MAPCHANGE | #else // MODULE_RELOAD_ON_MAPCHANGE | ||||||
| 	0 | 	0, | ||||||
| #endif // MODULE_RELOAD_ON_MAPCHANGE | #endif // MODULE_RELOAD_ON_MAPCHANGE | ||||||
|  | 	MODULE_LOGTAG | ||||||
| }; | }; | ||||||
|  |  | ||||||
| // Storage for the requested functions | // Storage for the requested functions | ||||||
| PFN_ADD_NATIVES				g_fn_AddNatives; | PFN_ADD_NATIVES				g_fn_AddNatives; | ||||||
| PFN_BUILD_PATHNAME			g_fn_BuildPathname; | PFN_BUILD_PATHNAME			g_fn_BuildPathname; | ||||||
|  | PFN_BUILD_PATHNAME_R		g_fn_BuildPathnameR; | ||||||
| PFN_GET_AMXADDR				g_fn_GetAmxAddr; | PFN_GET_AMXADDR				g_fn_GetAmxAddr; | ||||||
| PFN_PRINT_SRVCONSOLE		g_fn_PrintSrvConsole; | PFN_PRINT_SRVCONSOLE		g_fn_PrintSrvConsole; | ||||||
| PFN_GET_MODNAME				g_fn_GetModname; | PFN_GET_MODNAME				g_fn_GetModname; | ||||||
| @@ -2501,6 +2500,9 @@ PFN_AMX_FINDNATIVE			g_fn_AmxFindNative; | |||||||
| PFN_GETPLAYERFLAGS			g_fn_GetPlayerFlags; | PFN_GETPLAYERFLAGS			g_fn_GetPlayerFlags; | ||||||
| PFN_GET_PLAYER_EDICT		g_fn_GetPlayerEdict; | PFN_GET_PLAYER_EDICT		g_fn_GetPlayerEdict; | ||||||
| PFN_FORMAT					g_fn_Format; | PFN_FORMAT					g_fn_Format; | ||||||
|  | PFN_REGISTERFUNCTION		g_fn_RegisterFunction; | ||||||
|  | PFN_REQ_FNPTR				g_fn_RequestFunction; | ||||||
|  | PFN_AMX_PUSH				g_fn_AmxPush; | ||||||
|  |  | ||||||
| // *** Exports *** | // *** Exports *** | ||||||
| C_DLLEXPORT int AMXX_Query(int *interfaceVersion, amxx_module_info_s *moduleInfo) | C_DLLEXPORT int AMXX_Query(int *interfaceVersion, amxx_module_info_s *moduleInfo) | ||||||
| @@ -2538,15 +2540,19 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc) | |||||||
| 	if (!reqFnptrFunc) | 	if (!reqFnptrFunc) | ||||||
| 		return AMXX_PARAM; | 		return AMXX_PARAM; | ||||||
|  |  | ||||||
|  | 	g_fn_RequestFunction = reqFnptrFunc; | ||||||
|  |  | ||||||
| 	// Req all known functions | 	// Req all known functions | ||||||
| 	// Misc | 	// Misc | ||||||
| 	REQFUNC("BuildPathname", g_fn_BuildPathname, PFN_BUILD_PATHNAME); | 	REQFUNC("BuildPathname", g_fn_BuildPathname, PFN_BUILD_PATHNAME); | ||||||
|  | 	REQFUNC("BuildPathnameR", g_fn_BuildPathnameR, PFN_BUILD_PATHNAME_R); | ||||||
| 	REQFUNC("PrintSrvConsole", g_fn_PrintSrvConsole, PFN_PRINT_SRVCONSOLE); | 	REQFUNC("PrintSrvConsole", g_fn_PrintSrvConsole, PFN_PRINT_SRVCONSOLE); | ||||||
| 	REQFUNC("GetModname", g_fn_GetModname, PFN_GET_MODNAME); | 	REQFUNC("GetModname", g_fn_GetModname, PFN_GET_MODNAME); | ||||||
| 	REQFUNC("Log", g_fn_Log, PFN_LOG); | 	REQFUNC("Log", g_fn_Log, PFN_LOG); | ||||||
| 	REQFUNC("LogError", g_fn_LogErrorFunc, PFN_LOG_ERROR); | 	REQFUNC("LogError", g_fn_LogErrorFunc, PFN_LOG_ERROR); | ||||||
| 	REQFUNC("MergeDefinitionFile", g_fn_MergeDefinition_File, PFN_MERGEDEFINITION_FILE); | 	REQFUNC("MergeDefinitionFile", g_fn_MergeDefinition_File, PFN_MERGEDEFINITION_FILE); | ||||||
| 	REQFUNC("Format", g_fn_Format, PFN_FORMAT); | 	REQFUNC("Format", g_fn_Format, PFN_FORMAT); | ||||||
|  | 	REQFUNC("RegisterFunction", g_fn_RegisterFunction, PFN_REGISTERFUNCTION); | ||||||
|  |  | ||||||
| 	// Amx scripts | 	// Amx scripts | ||||||
| 	REQFUNC("GetAmxScript", g_fn_GetAmxScript, PFN_GET_AMXSCRIPT); | 	REQFUNC("GetAmxScript", g_fn_GetAmxScript, PFN_GET_AMXSCRIPT); | ||||||
| @@ -2605,6 +2611,7 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc) | |||||||
| 	REQFUNC("GetPlayerHealth", g_fn_GetPlayerHealth, PFN_GET_PLAYER_HEALTH); | 	REQFUNC("GetPlayerHealth", g_fn_GetPlayerHealth, PFN_GET_PLAYER_HEALTH); | ||||||
| 	REQFUNC("GetPlayerFlags", g_fn_GetPlayerFlags, PFN_GETPLAYERFLAGS); | 	REQFUNC("GetPlayerFlags", g_fn_GetPlayerFlags, PFN_GETPLAYERFLAGS); | ||||||
| 	REQFUNC("GetPlayerEdict", g_fn_GetPlayerEdict, PFN_GET_PLAYER_EDICT); | 	REQFUNC("GetPlayerEdict", g_fn_GetPlayerEdict, PFN_GET_PLAYER_EDICT); | ||||||
|  | 	REQFUNC("amx_Push", g_fn_AmxPush, PFN_AMX_PUSH); | ||||||
|  |  | ||||||
| 	// Memory | 	// Memory | ||||||
| 	REQFUNC_OPT("Allocator", g_fn_Allocator, PFN_ALLOCATOR); | 	REQFUNC_OPT("Allocator", g_fn_Allocator, PFN_ALLOCATOR); | ||||||
| @@ -2670,6 +2677,7 @@ void MF_LogError(AMX *amx, int err, const char *fmt, ...) | |||||||
| void ValidateMacros_DontCallThis_Smiley() | void ValidateMacros_DontCallThis_Smiley() | ||||||
| { | { | ||||||
| 	MF_BuildPathname("str", "str", 0); | 	MF_BuildPathname("str", "str", 0); | ||||||
|  | 	MF_BuildPathnameR(NULL, 0, "%d", 0); | ||||||
| 	MF_FormatAmxString(NULL, 0, 0, NULL); | 	MF_FormatAmxString(NULL, 0, 0, NULL); | ||||||
| 	MF_GetAmxAddr(NULL, 0); | 	MF_GetAmxAddr(NULL, 0); | ||||||
| 	MF_PrintSrvConsole("str", "str", 0); | 	MF_PrintSrvConsole("str", "str", 0); | ||||||
| @@ -2711,7 +2719,7 @@ void ValidateMacros_DontCallThis_Smiley() | |||||||
| 	MF_IsPlayerHLTV(0); | 	MF_IsPlayerHLTV(0); | ||||||
| 	MF_GetPlayerArmor(0); | 	MF_GetPlayerArmor(0); | ||||||
| 	MF_GetPlayerHealth(0); | 	MF_GetPlayerHealth(0); | ||||||
| 	MF_AmxExec(0, 0, 0, 0); | 	MF_AmxExec(0, 0, 0); | ||||||
| 	MF_AmxExecv(0, 0, 0, 0, 0); | 	MF_AmxExecv(0, 0, 0, 0, 0); | ||||||
| 	MF_AmxFindPublic(0, 0, 0); | 	MF_AmxFindPublic(0, 0, 0); | ||||||
| 	MF_AmxAllot(0, 0, 0, 0); | 	MF_AmxAllot(0, 0, 0, 0); | ||||||
| @@ -2723,6 +2731,7 @@ void ValidateMacros_DontCallThis_Smiley() | |||||||
| 	MF_GetPlayerFrags(0); | 	MF_GetPlayerFrags(0); | ||||||
| 	MF_GetPlayerEdict(0); | 	MF_GetPlayerEdict(0); | ||||||
| 	MF_Format("", 4, "str"); | 	MF_Format("", 4, "str"); | ||||||
|  | 	MF_RegisterFunction(NULL, ""); | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|   | |||||||
| @@ -31,8 +31,10 @@ | |||||||
|  |  | ||||||
| // ***** AMXX stuff ***** | // ***** AMXX stuff ***** | ||||||
|  |  | ||||||
| // module interface version is 1 | // module interface version was 1 | ||||||
| #define AMXX_INTERFACE_VERSION 1 | // 2 - added logtag to struct (amxx1.1-rc1) | ||||||
|  | // 3 - added new tagAMX structure (amxx1.5) | ||||||
|  | #define AMXX_INTERFACE_VERSION 3 | ||||||
|  |  | ||||||
| // amxx module info | // amxx module info | ||||||
| struct amxx_module_info_s | struct amxx_module_info_s | ||||||
| @@ -41,6 +43,7 @@ struct amxx_module_info_s | |||||||
| 	const char *author; | 	const char *author; | ||||||
| 	const char *version; | 	const char *version; | ||||||
| 	int reload;				// reload on mapchange when nonzero | 	int reload;				// reload on mapchange when nonzero | ||||||
|  | 	const char *logtag;		// added in version 2 | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -53,15 +56,26 @@ struct amxx_module_info_s | |||||||
|  |  | ||||||
| // *** Small stuff *** | // *** Small stuff *** | ||||||
| // The next section is copied from the amx.h file | // The next section is copied from the amx.h file | ||||||
| // Copyright (c) ITB CompuPhase, 1997-2004 | // Copyright (c) ITB CompuPhase, 1997-2005 | ||||||
|  |  | ||||||
| #if defined __LCC__ || defined __DMC__ || defined __linux__ || defined __GNUC__ | #if defined HAVE_STDINT_H | ||||||
|   #include <stdint.h> |   #include <stdint.h> | ||||||
|  | #else | ||||||
|  |   #if defined __LCC__ || defined __DMC__ || defined LINUX | ||||||
|  |     #if defined HAVE_INTTYPES_H | ||||||
|  |       #include <inttypes.h> | ||||||
|  |     #else | ||||||
|  |       #include <stdint.h> | ||||||
|  |     #endif | ||||||
|   #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L |   #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L | ||||||
|     /* The ISO C99 defines the int16_t and int_32t types. If the compiler got |     /* The ISO C99 defines the int16_t and int_32t types. If the compiler got | ||||||
|      * here, these types are probably undefined. |      * here, these types are probably undefined. | ||||||
|      */ |      */ | ||||||
|   #if defined __FreeBSD__ |     #if defined __MACH__ | ||||||
|  |       #include <ppc/types.h> | ||||||
|  |       typedef unsigned short int  uint16_t; | ||||||
|  |       typedef unsigned long int   uint32_t; | ||||||
|  |     #elif defined __FreeBSD__ | ||||||
|       #include <inttypes.h> |       #include <inttypes.h> | ||||||
|     #else |     #else | ||||||
|       typedef short int           int16_t; |       typedef short int           int16_t; | ||||||
| @@ -84,7 +98,13 @@ struct amxx_module_info_s | |||||||
|       #endif |       #endif | ||||||
|     #endif |     #endif | ||||||
|   #endif |   #endif | ||||||
|  |   #define HAVE_STDINT_H | ||||||
|  | #endif | ||||||
|  | #if defined _LP64 || defined WIN64 || defined _WIN64 | ||||||
|  |   #if !defined __64BIT__ | ||||||
|  |     #define __64BIT__ | ||||||
|  |   #endif | ||||||
|  | #endif | ||||||
|  |  | ||||||
| /* calling convention for native functions */ | /* calling convention for native functions */ | ||||||
| #if !defined AMX_NATIVE_CALL | #if !defined AMX_NATIVE_CALL | ||||||
| @@ -104,24 +124,26 @@ struct amxx_module_info_s | |||||||
|   #define AMXEXPORT |   #define AMXEXPORT | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | #if !defined PAWN_CELL_SIZE | ||||||
|  |   #define PAWN_CELL_SIZE 32     /* by default, use 32-bit cells */ | ||||||
| #if !defined SMALL_CELL_SIZE |  | ||||||
|   #define SMALL_CELL_SIZE 32    /* by default, use 32-bit cells */ |  | ||||||
| #endif | #endif | ||||||
| #if SMALL_CELL_SIZE==32 | #if PAWN_CELL_SIZE==16 | ||||||
|  |   typedef uint16_t  ucell; | ||||||
|  |   typedef int16_t   cell; | ||||||
|  | #elif PAWN_CELL_SIZE==32 | ||||||
|   typedef uint32_t  ucell; |   typedef uint32_t  ucell; | ||||||
|   typedef int32_t   cell; |   typedef int32_t   cell; | ||||||
|   typedef float		REAL; | #define REAL	float | ||||||
| #elif SMALL_CELL_SIZE==64 | #elif PAWN_CELL_SIZE==64 | ||||||
|   typedef uint64_t  ucell; |   typedef uint64_t  ucell; | ||||||
|   typedef int64_t   cell; |   typedef int64_t   cell; | ||||||
|   typedef double	REAL; | #define REAL	double | ||||||
| #else | #else | ||||||
|   #error Unsupported cell size (SMALL_CELL_SIZE) |   #error Unsupported cell size (PAWN_CELL_SIZE) | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #define UNPACKEDMAX   ((1 << (sizeof(cell)-1)*8) - 1) | #define UNPACKEDMAX   ((1 << (sizeof(cell)-1)*8) - 1) | ||||||
|  | #define UNLIMITED     (~1u >> 1) | ||||||
|  |  | ||||||
| struct tagAMX; | struct tagAMX; | ||||||
| typedef cell (AMX_NATIVE_CALL *AMX_NATIVE)(struct tagAMX *amx, cell *params); | typedef cell (AMX_NATIVE_CALL *AMX_NATIVE)(struct tagAMX *amx, cell *params); | ||||||
| @@ -139,21 +161,24 @@ typedef int (AMXAPI *AMX_DEBUG)(struct tagAMX *amx); | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  |  | ||||||
| #if defined SN_TARGET_PS2 || defined __GNUC__ | /* Some compilers do not support the #pragma align, which should be fine. Some | ||||||
|  |  * compilers give a warning on unknown #pragmas, which is not so fine... | ||||||
|  |  */ | ||||||
|  | #if (defined SN_TARGET_PS2 || defined __GNUC__) && !defined AMX_NO_ALIGN | ||||||
|   #define AMX_NO_ALIGN |   #define AMX_NO_ALIGN | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  |  | ||||||
| #if defined __GNUC__ | #if defined __GNUC__ | ||||||
|   #define PACKED        __attribute__((packed)) |   #define PACKED        __attribute__((packed)) | ||||||
| #else | #else | ||||||
|   #define PACKED |   #define PACKED | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  |  | ||||||
| #if !defined AMX_NO_ALIGN | #if !defined AMX_NO_ALIGN | ||||||
|   #if defined __linux__ |   #if defined LINUX || defined __FreeBSD__ | ||||||
|     #pragma pack(1)         /* structures must be packed (byte-aligned) */ |     #pragma pack(1)         /* structures must be packed (byte-aligned) */ | ||||||
|  |   #elif defined MACOS && defined __MWERKS__ | ||||||
|  | 	#pragma options align=mac68k | ||||||
|   #else |   #else | ||||||
|     #pragma pack(push) |     #pragma pack(push) | ||||||
|     #pragma pack(1)         /* structures must be packed (byte-aligned) */ |     #pragma pack(1)         /* structures must be packed (byte-aligned) */ | ||||||
| @@ -174,7 +199,7 @@ typedef struct { | |||||||
|  * fields are valid at all times; many fields are cached in local variables. |  * fields are valid at all times; many fields are cached in local variables. | ||||||
|  */ |  */ | ||||||
| typedef struct tagAMX { | typedef struct tagAMX { | ||||||
|   unsigned char _FAR *base PACKED; /* points to the AMX header ("amxhdr") plus the code, optionally also the data */ |   unsigned char _FAR *base PACKED; /* points to the AMX header plus the code, optionally also the data */ | ||||||
|   unsigned char _FAR *data PACKED; /* points to separate data+stack+heap, may be NULL */ |   unsigned char _FAR *data PACKED; /* points to separate data+stack+heap, may be NULL */ | ||||||
|   AMX_CALLBACK callback PACKED; |   AMX_CALLBACK callback PACKED; | ||||||
|   AMX_DEBUG debug       PACKED; /* debug callback */ |   AMX_DEBUG debug       PACKED; /* debug callback */ | ||||||
| @@ -186,18 +211,15 @@ typedef struct tagAMX { | |||||||
|   cell stk              PACKED; /* stack pointer: relative to base + amxhdr->dat */ |   cell stk              PACKED; /* stack pointer: relative to base + amxhdr->dat */ | ||||||
|   cell stp              PACKED; /* top of the stack: relative to base + amxhdr->dat */ |   cell stp              PACKED; /* top of the stack: relative to base + amxhdr->dat */ | ||||||
|   int flags             PACKED; /* current status, see amx_Flags() */ |   int flags             PACKED; /* current status, see amx_Flags() */ | ||||||
|   /* for assertions and debug hook */ |  | ||||||
|   cell curline          PACKED; |  | ||||||
|   cell curfile          PACKED; |  | ||||||
|   int dbgcode           PACKED; |  | ||||||
|   cell dbgaddr          PACKED; |  | ||||||
|   cell dbgparam         PACKED; |  | ||||||
|   char _FAR *dbgname    PACKED; |  | ||||||
|   /* user data */ |   /* user data */ | ||||||
|   long usertags[AMX_USERNUM] PACKED; |   long usertags[AMX_USERNUM] PACKED; | ||||||
|  |   //okay userdata[3] in AMX Mod X is for the CPlugin * pointer | ||||||
|  |   //we're also gonna set userdata[2] to a special debug structure | ||||||
|   void _FAR *userdata[AMX_USERNUM] PACKED; |   void _FAR *userdata[AMX_USERNUM] PACKED; | ||||||
|   /* native functions can raise an error */ |   /* native functions can raise an error */ | ||||||
|   int error             PACKED; |   int error             PACKED; | ||||||
|  |   /* passing parameters requires a "count" field */ | ||||||
|  |   int paramcount; | ||||||
|   /* the sleep opcode needs to store the full AMX status */ |   /* the sleep opcode needs to store the full AMX status */ | ||||||
|   cell pri              PACKED; |   cell pri              PACKED; | ||||||
|   cell alt              PACKED; |   cell alt              PACKED; | ||||||
| @@ -207,7 +229,7 @@ typedef struct tagAMX { | |||||||
|   /* support variables for the JIT */ |   /* support variables for the JIT */ | ||||||
|   int reloc_size      PACKED; /* required temporary buffer for relocations */ |   int reloc_size      PACKED; /* required temporary buffer for relocations */ | ||||||
|   long code_size      PACKED; /* estimated memory footprint of the native code */ |   long code_size      PACKED; /* estimated memory footprint of the native code */ | ||||||
| } AMX; | } PACKED AMX; | ||||||
|  |  | ||||||
| enum { | enum { | ||||||
|   AMX_ERR_NONE, |   AMX_ERR_NONE, | ||||||
| @@ -224,6 +246,7 @@ enum { | |||||||
|   AMX_ERR_NATIVE,       /* native function failed */ |   AMX_ERR_NATIVE,       /* native function failed */ | ||||||
|   AMX_ERR_DIVIDE,       /* divide by zero */ |   AMX_ERR_DIVIDE,       /* divide by zero */ | ||||||
|   AMX_ERR_SLEEP,        /* go into sleepmode - code can be restarted */ |   AMX_ERR_SLEEP,        /* go into sleepmode - code can be restarted */ | ||||||
|  |   AMX_ERR_INVSTATE,     /* invalid state for this access */ | ||||||
|  |  | ||||||
|   AMX_ERR_MEMORY = 16,  /* out of memory */ |   AMX_ERR_MEMORY = 16,  /* out of memory */ | ||||||
|   AMX_ERR_FORMAT,       /* invalid file format */ |   AMX_ERR_FORMAT,       /* invalid file format */ | ||||||
| @@ -1883,6 +1906,9 @@ void FN_AMXX_DETACH(void); | |||||||
| void FN_AMXX_PLUGINSLOADED(void); | void FN_AMXX_PLUGINSLOADED(void); | ||||||
| #endif // FN_AMXX_PLUGINSLOADED | #endif // FN_AMXX_PLUGINSLOADED | ||||||
|  |  | ||||||
|  | // *** Types *** | ||||||
|  | typedef void* (*PFN_REQ_FNPTR)(const char * /*name*/); | ||||||
|  |  | ||||||
| // ***** Module funcs stuff ***** | // ***** Module funcs stuff ***** | ||||||
| enum ForwardExecType | enum ForwardExecType | ||||||
| { | { | ||||||
| @@ -1906,6 +1932,7 @@ enum ForwardParam | |||||||
|  |  | ||||||
| typedef int				(*PFN_ADD_NATIVES)				(const AMX_NATIVE_INFO * /*list*/); | typedef int				(*PFN_ADD_NATIVES)				(const AMX_NATIVE_INFO * /*list*/); | ||||||
| typedef char *			(*PFN_BUILD_PATHNAME)			(const char * /*format*/, ...); | typedef char *			(*PFN_BUILD_PATHNAME)			(const char * /*format*/, ...); | ||||||
|  | typedef char *			(*PFN_BUILD_PATHNAME_R)			(char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); | ||||||
| typedef cell *			(*PFN_GET_AMXADDR)				(AMX * /*amx*/, cell /*offset*/); | typedef cell *			(*PFN_GET_AMXADDR)				(AMX * /*amx*/, cell /*offset*/); | ||||||
| typedef void			(*PFN_PRINT_SRVCONSOLE)			(char * /*format*/, ...); | typedef void			(*PFN_PRINT_SRVCONSOLE)			(char * /*format*/, ...); | ||||||
| typedef const char *	(*PFN_GET_MODNAME)				(void); | typedef const char *	(*PFN_GET_MODNAME)				(void); | ||||||
| @@ -1960,7 +1987,7 @@ typedef void *			(*PFN_REALLOCATOR)				(const char* /*filename*/, const unsigned | |||||||
| 														 const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); | 														 const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); | ||||||
| typedef void			(*PFN_DEALLOCATOR)				(const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, | typedef void			(*PFN_DEALLOCATOR)				(const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, | ||||||
| 														 const unsigned int /*type*/, const void* /*addr*/ ); | 														 const unsigned int /*type*/, const void* /*addr*/ ); | ||||||
| typedef int				(*PFN_AMX_EXEC)					(AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, ... /*params*/); | typedef int				(*PFN_AMX_EXEC)					(AMX* /*amx*/, cell* /*return val*/, int /*index*/); | ||||||
| typedef int				(*PFN_AMX_EXECV)				(AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); | typedef int				(*PFN_AMX_EXECV)				(AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); | ||||||
| typedef int				(*PFN_AMX_ALLOT)				(AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); | typedef int				(*PFN_AMX_ALLOT)				(AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); | ||||||
| typedef int				(*PFN_AMX_FINDPUBLIC)			(AMX* /*amx*/, char* /*func name*/, int* /*index*/); | typedef int				(*PFN_AMX_FINDPUBLIC)			(AMX* /*amx*/, char* /*func name*/, int* /*index*/); | ||||||
| @@ -1974,9 +2001,12 @@ typedef int				(*PFN_REGISTER_SPFORWARD_BYNAME)	(AMX * /*amx*/, const char * /*f | |||||||
| typedef void			(*PFN_UNREGISTER_SPFORWARD)		(int /*id*/); | typedef void			(*PFN_UNREGISTER_SPFORWARD)		(int /*id*/); | ||||||
| typedef	void			(*PFN_MERGEDEFINITION_FILE)		(const char * /*filename*/); | typedef	void			(*PFN_MERGEDEFINITION_FILE)		(const char * /*filename*/); | ||||||
| typedef const char *	(*PFN_FORMAT)					(const char * /*fmt*/, ... /*params*/); | typedef const char *	(*PFN_FORMAT)					(const char * /*fmt*/, ... /*params*/); | ||||||
|  | typedef void			(*PFN_REGISTERFUNCTION)			(void * /*pfn*/, const char * /*desc*/); | ||||||
|  | typedef	int				(*PFN_AMX_PUSH)					(AMX * /*amx*/, cell /*value*/); | ||||||
|  |  | ||||||
| extern PFN_ADD_NATIVES				g_fn_AddNatives; | extern PFN_ADD_NATIVES				g_fn_AddNatives; | ||||||
| extern PFN_BUILD_PATHNAME			g_fn_BuildPathname; | extern PFN_BUILD_PATHNAME			g_fn_BuildPathname; | ||||||
|  | extern PFN_BUILD_PATHNAME_R			g_fn_BuildPathnameR; | ||||||
| extern PFN_GET_AMXADDR				g_fn_GetAmxAddr; | extern PFN_GET_AMXADDR				g_fn_GetAmxAddr; | ||||||
| extern PFN_PRINT_SRVCONSOLE			g_fn_PrintSrvConsole; | extern PFN_PRINT_SRVCONSOLE			g_fn_PrintSrvConsole; | ||||||
| extern PFN_GET_MODNAME				g_fn_GetModname; | extern PFN_GET_MODNAME				g_fn_GetModname; | ||||||
| @@ -2034,12 +2064,16 @@ extern PFN_GETPLAYERFLAGS		g_fn_GetPlayerFlags; | |||||||
| extern PFN_GET_PLAYER_EDICT			g_fn_GetPlayerEdict; | extern PFN_GET_PLAYER_EDICT			g_fn_GetPlayerEdict; | ||||||
| extern PFN_FORMAT					g_fn_Format; | extern PFN_FORMAT					g_fn_Format; | ||||||
| extern PFN_GET_PLAYER_TEAM			g_fn_GetPlayerTeam; | extern PFN_GET_PLAYER_TEAM			g_fn_GetPlayerTeam; | ||||||
|  | extern PFN_REGISTERFUNCTION			g_fn_RegisterFunction; | ||||||
|  | extern PFN_REQ_FNPTR				g_fn_RequestFunction; | ||||||
|  | extern PFN_AMX_PUSH					g_fn_AmxPush; | ||||||
|  |  | ||||||
| #ifdef MAY_NEVER_BE_DEFINED | #ifdef MAY_NEVER_BE_DEFINED | ||||||
| // Function prototypes for intellisense and similar systems | // Function prototypes for intellisense and similar systems | ||||||
| // They understand #if 0 so we use #ifdef MAY_NEVER_BE_DEFINED | // They understand #if 0 so we use #ifdef MAY_NEVER_BE_DEFINED | ||||||
| int				MF_AddNatives				(const AMX_NATIVE_INFO *list) { } | int				MF_AddNatives				(const AMX_NATIVE_INFO *list) { } | ||||||
| char *			MF_BuildPathname			(const char * format, ...) { } | char *			MF_BuildPathname			(const char * format, ...) { } | ||||||
|  | char *			MF_BuildPathnameR			(char *buffer, size_t maxlen, const char *fmt, ...) { } | ||||||
| cell *			MF_GetAmxAddr				(AMX * amx, cell offset) { } | cell *			MF_GetAmxAddr				(AMX * amx, cell offset) { } | ||||||
| void			MF_PrintSrvConsole			(char * format, ...) { } | void			MF_PrintSrvConsole			(char * format, ...) { } | ||||||
| const char *	MF_GetModname				(void) { } | const char *	MF_GetModname				(void) { } | ||||||
| @@ -2089,10 +2123,15 @@ void			MF_UnregisterSPForward		(int id) { } | |||||||
| int				MF_GetPlayerFlags			(int id) { } | int				MF_GetPlayerFlags			(int id) { } | ||||||
| edict_t*		MF_GetPlayerEdict			(int id) { } | edict_t*		MF_GetPlayerEdict			(int id) { } | ||||||
| const char *	MF_Format					(const char *fmt, ...) { } | const char *	MF_Format					(const char *fmt, ...) { } | ||||||
|  | void			MF_RegisterFunction			(void *pfn, const char *description) { } | ||||||
|  | void *			MF_RequestFunction			(const char *description) { } | ||||||
|  | int				MF_AmxPush					(AMX *amx, cell *params) { } | ||||||
|  | int				MF_AmxExec					(AMX *amx, cell *retval, int idx) { } | ||||||
| #endif	// MAY_NEVER_BE_DEFINED | #endif	// MAY_NEVER_BE_DEFINED | ||||||
|  |  | ||||||
| #define MF_AddNatives g_fn_AddNatives | #define MF_AddNatives g_fn_AddNatives | ||||||
| #define MF_BuildPathname g_fn_BuildPathname | #define MF_BuildPathname g_fn_BuildPathname | ||||||
|  | #define MF_BuildPathnameR g_fn_BuildPathnameR | ||||||
| #define MF_FormatAmxString g_fn_FormatAmxString | #define MF_FormatAmxString g_fn_FormatAmxString | ||||||
| #define MF_GetAmxAddr g_fn_GetAmxAddr | #define MF_GetAmxAddr g_fn_GetAmxAddr | ||||||
| #define MF_PrintSrvConsole g_fn_PrintSrvConsole | #define MF_PrintSrvConsole g_fn_PrintSrvConsole | ||||||
| @@ -2150,6 +2189,9 @@ void MF_LogError(AMX *amx, int err, const char *fmt, ...); | |||||||
| #define MF_GetPlayerFlags g_fn_GetPlayerFlags | #define MF_GetPlayerFlags g_fn_GetPlayerFlags | ||||||
| #define MF_GetPlayerEdict g_fn_GetPlayerEdict | #define MF_GetPlayerEdict g_fn_GetPlayerEdict | ||||||
| #define MF_Format g_fn_Format | #define MF_Format g_fn_Format | ||||||
|  | #define MF_RegisterFunction g_fn_RegisterFunction | ||||||
|  | #define MF_RequestFunction g_fn_RequestFunction; | ||||||
|  | #define MF_AmxPush g_fn_AmxPush | ||||||
|  |  | ||||||
| /*** Memory ***/ | /*** Memory ***/ | ||||||
| void	*operator new(size_t reportedSize); | void	*operator new(size_t reportedSize); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user