[server] Update CPlugins constructor

This commit is contained in:
RD42 2023-11-23 23:34:47 +08:00
parent f91d165449
commit 89f7c4553a
5 changed files with 138 additions and 0 deletions

62
server/plugincommon.h Normal file
View File

@ -0,0 +1,62 @@
#ifndef _PLUGINCOMMON_H_INCLUDED
#define _PLUGINCOMMON_H_INCLUDED
enum PLUGIN_DATA_TYPE
{
// For some debugging
PLUGIN_DATA_LOGPRINTF = 0x00, // void (*logprintf)(char* format, ...)
// AMX
PLUGIN_DATA_AMX_EXPORTS = 0x10, // void* AmxFunctionTable[] (see PLUGIN_AMX_EXPORT)
};
enum PLUGIN_AMX_EXPORT
{
PLUGIN_AMX_EXPORT_Align16 = 0,
PLUGIN_AMX_EXPORT_Align32 = 1,
PLUGIN_AMX_EXPORT_Align64 = 2,
PLUGIN_AMX_EXPORT_Allot = 3,
PLUGIN_AMX_EXPORT_Callback = 4,
PLUGIN_AMX_EXPORT_Cleanup = 5,
PLUGIN_AMX_EXPORT_Clone = 6,
PLUGIN_AMX_EXPORT_Exec = 7,
PLUGIN_AMX_EXPORT_FindNative = 8,
PLUGIN_AMX_EXPORT_FindPublic = 9,
PLUGIN_AMX_EXPORT_FindPubVar = 10,
PLUGIN_AMX_EXPORT_FindTagId = 11,
PLUGIN_AMX_EXPORT_Flags = 12,
PLUGIN_AMX_EXPORT_GetAddr = 13,
PLUGIN_AMX_EXPORT_GetNative = 14,
PLUGIN_AMX_EXPORT_GetPublic = 15,
PLUGIN_AMX_EXPORT_GetPubVar = 16,
PLUGIN_AMX_EXPORT_GetString = 17,
PLUGIN_AMX_EXPORT_GetTag = 18,
PLUGIN_AMX_EXPORT_GetUserData = 19,
PLUGIN_AMX_EXPORT_Init = 20,
PLUGIN_AMX_EXPORT_InitJIT = 21,
PLUGIN_AMX_EXPORT_MemInfo = 22,
PLUGIN_AMX_EXPORT_NameLength = 23,
PLUGIN_AMX_EXPORT_NativeInfo = 24,
PLUGIN_AMX_EXPORT_NumNatives = 25,
PLUGIN_AMX_EXPORT_NumPublics = 26,
PLUGIN_AMX_EXPORT_NumPubVars = 27,
PLUGIN_AMX_EXPORT_NumTags = 28,
PLUGIN_AMX_EXPORT_Push = 29,
PLUGIN_AMX_EXPORT_PushArray = 30,
PLUGIN_AMX_EXPORT_PushString = 31,
PLUGIN_AMX_EXPORT_RaiseError = 32,
PLUGIN_AMX_EXPORT_Register = 33,
PLUGIN_AMX_EXPORT_Release = 34,
PLUGIN_AMX_EXPORT_SetCallback = 35,
PLUGIN_AMX_EXPORT_SetDebugHook = 36,
PLUGIN_AMX_EXPORT_SetString = 37,
PLUGIN_AMX_EXPORT_SetUserData = 38,
PLUGIN_AMX_EXPORT_StrLen = 39,
PLUGIN_AMX_EXPORT_UTF8Check = 40,
PLUGIN_AMX_EXPORT_UTF8Get = 41,
PLUGIN_AMX_EXPORT_UTF8Len = 42,
PLUGIN_AMX_EXPORT_UTF8Put = 43,
};
#endif // _PLUGINCOMMON_H_INCLUDED

8
server/plugininternal.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef _PLUGININTERNAL_H_INCLUDED
#define _PLUGININTERNAL_H_INCLUDED
#define MAX_PLUGIN_DATA 256
#define MAX_PLUGIN_AMX_EXPORT 44
#endif

View File

@ -3,6 +3,61 @@
CPlugins::CPlugins()
{
// Set up the table of AMX functions to be exported
#if defined AMX_ALIGN || defined AMX_INIT
m_AMXExports[PLUGIN_AMX_EXPORT_Align16] = (void*)&amx_Align16;
m_AMXExports[PLUGIN_AMX_EXPORT_Align32] = (void*)&amx_Align32;
#if defined _I64_MAX || defined HAVE_I64
m_AMXExports[PLUGIN_AMX_EXPORT_Align64] = (void*)&amx_Align64;
#endif
#endif
m_AMXExports[PLUGIN_AMX_EXPORT_Allot] = (void*)&amx_Allot;
m_AMXExports[PLUGIN_AMX_EXPORT_Callback] = (void*)&amx_Callback;
m_AMXExports[PLUGIN_AMX_EXPORT_Cleanup] = (void*)&amx_Cleanup;
m_AMXExports[PLUGIN_AMX_EXPORT_Clone] = (void*)&amx_Clone;
m_AMXExports[PLUGIN_AMX_EXPORT_Exec] = (void*)&amx_Exec;
m_AMXExports[PLUGIN_AMX_EXPORT_FindNative] = (void*)&amx_FindNative;
m_AMXExports[PLUGIN_AMX_EXPORT_FindPublic] = (void*)&amx_FindPublic;
m_AMXExports[PLUGIN_AMX_EXPORT_FindPubVar] = (void*)&amx_FindPubVar;
m_AMXExports[PLUGIN_AMX_EXPORT_FindTagId] = (void*)&amx_FindTagId;
m_AMXExports[PLUGIN_AMX_EXPORT_Flags] = (void*)&amx_Flags;
m_AMXExports[PLUGIN_AMX_EXPORT_GetAddr] = (void*)&amx_GetAddr;
m_AMXExports[PLUGIN_AMX_EXPORT_GetNative] = (void*)&amx_GetNative;
m_AMXExports[PLUGIN_AMX_EXPORT_GetPublic] = (void*)&amx_GetPublic;
m_AMXExports[PLUGIN_AMX_EXPORT_GetPubVar] = (void*)&amx_GetPubVar;
m_AMXExports[PLUGIN_AMX_EXPORT_GetString] = (void*)&amx_GetString;
m_AMXExports[PLUGIN_AMX_EXPORT_GetTag] = (void*)&amx_GetTag;
m_AMXExports[PLUGIN_AMX_EXPORT_GetUserData] = (void*)&amx_GetUserData;
m_AMXExports[PLUGIN_AMX_EXPORT_Init] = (void*)&amx_Init;
m_AMXExports[PLUGIN_AMX_EXPORT_InitJIT] = (void*)&amx_InitJIT;
m_AMXExports[PLUGIN_AMX_EXPORT_MemInfo] = (void*)&amx_MemInfo;
m_AMXExports[PLUGIN_AMX_EXPORT_NameLength] = (void*)&amx_NameLength;
m_AMXExports[PLUGIN_AMX_EXPORT_NativeInfo] = (void*)&amx_NativeInfo;
m_AMXExports[PLUGIN_AMX_EXPORT_NumNatives] = (void*)&amx_NumNatives;
m_AMXExports[PLUGIN_AMX_EXPORT_NumPublics] = (void*)&amx_NumPublics;
m_AMXExports[PLUGIN_AMX_EXPORT_NumPubVars] = (void*)&amx_NumPubVars;
m_AMXExports[PLUGIN_AMX_EXPORT_NumTags] = (void*)&amx_NumTags;
m_AMXExports[PLUGIN_AMX_EXPORT_Push] = (void*)&amx_Push;
m_AMXExports[PLUGIN_AMX_EXPORT_PushArray] = (void*)&amx_PushArray;
m_AMXExports[PLUGIN_AMX_EXPORT_PushString] = (void*)&amx_PushString;
m_AMXExports[PLUGIN_AMX_EXPORT_RaiseError] = (void*)&amx_RaiseError;
m_AMXExports[PLUGIN_AMX_EXPORT_Register] = (void*)&amx_Register;
m_AMXExports[PLUGIN_AMX_EXPORT_Release] = (void*)&amx_Release;
m_AMXExports[PLUGIN_AMX_EXPORT_SetCallback] = (void*)&amx_SetCallback;
m_AMXExports[PLUGIN_AMX_EXPORT_SetDebugHook] = (void*)&amx_SetDebugHook;
m_AMXExports[PLUGIN_AMX_EXPORT_SetString] = (void*)&amx_SetString;
m_AMXExports[PLUGIN_AMX_EXPORT_SetUserData] = (void*)&amx_SetUserData;
m_AMXExports[PLUGIN_AMX_EXPORT_StrLen] = (void*)&amx_StrLen;
//m_AMXExports[PLUGIN_AMX_EXPORT_UTF8Check] = (void*)&amx_UTF8Check;
//m_AMXExports[PLUGIN_AMX_EXPORT_UTF8Get] = (void*)&amx_UTF8Get;
//m_AMXExports[PLUGIN_AMX_EXPORT_UTF8Len] = (void*)&amx_UTF8Len;
//m_AMXExports[PLUGIN_AMX_EXPORT_UTF8Put] = (void*)&amx_UTF8Put;
// Set up table of Plugin exports
m_PluginData[PLUGIN_DATA_LOGPRINTF] = (void*)&logprintf;
m_PluginData[PLUGIN_DATA_AMX_EXPORTS] = m_AMXExports;
// TODO: CPlugins::CPlugins W: 0046A1D0 L: constructor
}

View File

@ -2,9 +2,16 @@
#ifndef _PLUGINS_H_INCLUDED
#define _PLUGINS_H_INCLUDED
#include "plugincommon.h"
#include "plugininternal.h"
class CPlugins // size: W: 1216 L: 1212
{
private:
void* m_PluginData[MAX_PLUGIN_DATA];
void* m_AMXExports[MAX_PLUGIN_AMX_EXPORT];
public:
CPlugins();
~CPlugins();

View File

@ -238,6 +238,12 @@
<File
RelativePath=".\playerpool.h">
</File>
<File
RelativePath=".\plugincommon.h">
</File>
<File
RelativePath=".\plugininternal.h">
</File>
<File
RelativePath=".\plugins.cpp">
</File>