diff --git a/core/AMBuilder b/core/AMBuilder index e412fa46..aa1eeb80 100644 --- a/core/AMBuilder +++ b/core/AMBuilder @@ -30,7 +30,6 @@ for i in SM.sdkInfo: 'CDataPack.cpp', 'frame_hooks.cpp', 'NativeInvoker.cpp', - 'smn_admin.cpp', 'smn_fakenatives.cpp', 'smn_nextmap.cpp', 'sourcemm_api.cpp', diff --git a/core/Makefile b/core/Makefile index 674bf0c3..b4ba5ae7 100644 --- a/core/Makefile +++ b/core/Makefile @@ -22,7 +22,7 @@ OBJECTS = AdminCache.cpp CDataPack.cpp ConCmdManager.cpp ConVarManager.cpp CoreC MenuStyle_Radio.cpp ChatTriggers.cpp ADTFactory.cpp MenuVoting.cpp \ frame_hooks.cpp concmd_cleaner.cpp PhraseCollection.cpp NextMap.cpp \ NativeOwner.cpp logic_bridge.cpp ConsoleDetours.cpp -OBJECTS += smn_admin.cpp smn_bitbuffer.cpp smn_console.cpp smn_core.cpp \ +OBJECTS += smn_bitbuffer.cpp smn_console.cpp smn_core.cpp \ smn_datapacks.cpp smn_entities.cpp smn_events.cpp smn_fakenatives.cpp \ smn_filesystem.cpp smn_gameconfigs.cpp smn_halflife.cpp \ smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp \ diff --git a/core/logic/AMBuilder b/core/logic/AMBuilder index 49a02411..64f03d9c 100644 --- a/core/logic/AMBuilder +++ b/core/logic/AMBuilder @@ -33,6 +33,7 @@ files = [ 'smn_timers.cpp', 'smn_players.cpp', 'MemoryUtils.cpp', + 'smn_admin.cpp', 'sm_crc32.cpp' ] if AMBuild.target['platform'] == 'windows': diff --git a/core/logic/Makefile b/core/logic/Makefile index 94c1f138..8f0c57bc 100644 --- a/core/logic/Makefile +++ b/core/logic/Makefile @@ -29,6 +29,7 @@ OBJECTS = \ sm_crc32.cpp \ smn_timers.cpp \ MemoryUtils.cpp \ + smn_admin.cpp \ smn_players.cpp ############################################## diff --git a/core/logic/common_logic.cpp b/core/logic/common_logic.cpp index 43d6774b..dcdfd616 100644 --- a/core/logic/common_logic.cpp +++ b/core/logic/common_logic.cpp @@ -54,6 +54,7 @@ IForwardManager *forwardsys; ITimerSystem *timersys; ServerGlobals serverGlobals; IPlayerManager *playerhelpers; +IAdminSystem *adminsys; static sm_logic_t logic = { @@ -83,6 +84,7 @@ static void logic_init(const sm_core_t* core, sm_logic_t* _logic) forwardsys = core->forwardsys; timersys = core->timersys; playerhelpers = core->playerhelpers; + adminsys = core->adminsys; } PLATFORM_EXTERN_C ITextParsers *get_textparsers() diff --git a/core/logic/common_logic.h b/core/logic/common_logic.h index 07edaaa3..11fffd06 100644 --- a/core/logic/common_logic.h +++ b/core/logic/common_logic.h @@ -50,6 +50,7 @@ extern IForwardManager *forwardsys; extern ITimerSystem *timersys; extern ServerGlobals serverGlobals; extern IPlayerManager *playerhelpers; +extern IAdminSystem *adminsys; #endif /* _INCLUDE_SOURCEMOD_COMMON_LOGIC_H_ */ diff --git a/core/logic/intercom.h b/core/logic/intercom.h index 426e9d87..a35546e4 100644 --- a/core/logic/intercom.h +++ b/core/logic/intercom.h @@ -42,7 +42,7 @@ using namespace SourceMod; * Add 1 to the RHS of this expression to bump the intercom file * This is to prevent mismatching core/logic binaries */ -#define SM_LOGIC_MAGIC (0x0F47C0DE - 6) +#define SM_LOGIC_MAGIC (0x0F47C0DE - 7) #if defined SM_LOGIC class IVEngineServer @@ -66,6 +66,7 @@ namespace SourceMod class ITimerSystem; class IPlayerManager; class IMemoryUtils; + class IAdminSystem; } class IVEngineServer; @@ -92,6 +93,7 @@ struct sm_core_t IForwardManager *forwardsys; ITimerSystem *timersys; IPlayerManager *playerhelpers; + IAdminSystem *adminsys; /* Functions */ void (*AddNatives)(sp_nativeinfo_t* nlist); ConVar * (*FindConVar)(const char*); diff --git a/core/smn_admin.cpp b/core/logic/smn_admin.cpp similarity index 79% rename from core/smn_admin.cpp rename to core/logic/smn_admin.cpp index d7fec06b..b4121dc9 100644 --- a/core/smn_admin.cpp +++ b/core/logic/smn_admin.cpp @@ -29,13 +29,15 @@ * Version: $Id$ */ -#include "sm_globals.h" -#include "AdminCache.h" -#include "ForwardSys.h" +#include "common_logic.h" +#include +#include + +using namespace SourceMod; static cell_t DumpAdminCache(IPluginContext *pContext, const cell_t *params) { - g_Admins.DumpAdminCache((AdminCachePart)params[1], (params[2] == 1) ? true : false); + adminsys->DumpAdminCache((AdminCachePart)params[1], (params[2] == 1) ? true : false); return 1; } @@ -44,7 +46,7 @@ static cell_t AddCommandOverride(IPluginContext *pContext, const cell_t *params) char *str; pContext->LocalToString(params[1], &str); - g_Admins.AddCommandOverride(str, (OverrideType)params[2], (AdminFlag)params[3]); + adminsys->AddCommandOverride(str, (OverrideType)params[2], (AdminFlag)params[3]); return 1; } @@ -56,7 +58,7 @@ static cell_t GetCommandOverride(IPluginContext *pContext, const cell_t *params) pContext->LocalToString(params[1], &cmd); - if (!g_Admins.GetCommandOverride(cmd, (OverrideType)params[2], &flags)) + if (!adminsys->GetCommandOverride(cmd, (OverrideType)params[2], &flags)) { return 0; } @@ -75,7 +77,7 @@ static cell_t UnsetCommandOverride(IPluginContext *pContext, const cell_t *param pContext->LocalToString(params[1], &cmd); - g_Admins.UnsetCommandOverride(cmd, (OverrideType)params[2]); + adminsys->UnsetCommandOverride(cmd, (OverrideType)params[2]); return 1; } @@ -86,7 +88,7 @@ static cell_t CreateAdmGroup(IPluginContext *pContext, const cell_t *params) pContext->LocalToString(params[1], &str); - return g_Admins.AddGroup(str); + return adminsys->AddGroup(str); } static cell_t FindAdmGroup(IPluginContext *pContext, const cell_t *params) @@ -95,7 +97,7 @@ static cell_t FindAdmGroup(IPluginContext *pContext, const cell_t *params) pContext->LocalToString(params[1], &str); - return g_Admins.FindGroupByName(str); + return adminsys->FindGroupByName(str); } static cell_t SetAdmGroupAddFlag(IPluginContext *pContext, const cell_t *params) @@ -104,7 +106,7 @@ static cell_t SetAdmGroupAddFlag(IPluginContext *pContext, const cell_t *params) AdminFlag flag = (AdminFlag)params[2]; bool enabled = params[3] ? 1 : 0; - g_Admins.SetGroupAddFlag(id, flag, enabled); + adminsys->SetGroupAddFlag(id, flag, enabled); return 1; } @@ -114,7 +116,7 @@ static cell_t GetAdmGroupAddFlag(IPluginContext *pContext, const cell_t *params) GroupId id = (GroupId)params[1]; AdminFlag flag = (AdminFlag)params[2]; - return g_Admins.GetGroupAddFlag(id, flag) ? 1 : 0; + return adminsys->GetGroupAddFlag(id, flag) ? 1 : 0; } static cell_t SetAdmGroupImmunity(IPluginContext *pContext, const cell_t *params) @@ -123,7 +125,7 @@ static cell_t SetAdmGroupImmunity(IPluginContext *pContext, const cell_t *params ImmunityType type = (ImmunityType)params[2]; bool enabled = params[3] ? 1 : 0; - g_Admins.SetGroupGenericImmunity(id, type, enabled); + adminsys->SetGroupGenericImmunity(id, type, enabled); return 1; } @@ -133,7 +135,7 @@ static cell_t GetAdmGroupImmunity(IPluginContext *pContext, const cell_t *params GroupId id = (GroupId)params[1]; ImmunityType type = (ImmunityType)params[2]; - return g_Admins.GetGroupGenericImmunity(id, type) ? 1 : 0; + return adminsys->GetGroupGenericImmunity(id, type) ? 1 : 0; } static cell_t SetAdmGroupImmuneFrom(IPluginContext *pContext, const cell_t *params) @@ -141,7 +143,7 @@ static cell_t SetAdmGroupImmuneFrom(IPluginContext *pContext, const cell_t *para GroupId id = (GroupId)params[1]; GroupId other_id = (GroupId)params[2]; - g_Admins.AddGroupImmunity(id, other_id); + adminsys->AddGroupImmunity(id, other_id); return 1; } @@ -150,14 +152,14 @@ static cell_t GetAdmGroupImmuneCount(IPluginContext *pContext, const cell_t *par { GroupId id = (GroupId)params[1]; - return g_Admins.GetGroupImmunityCount(id); + return adminsys->GetGroupImmunityCount(id); } static cell_t GetAdmGroupImmuneFrom(IPluginContext *pContext, const cell_t *params) { GroupId id = (GroupId)params[1]; - return g_Admins.GetGroupImmunity(id, params[2]); + return adminsys->GetGroupImmunity(id, params[2]); } static cell_t AddAdmGroupCmdOverride(IPluginContext *pContext, const cell_t *params) @@ -169,7 +171,7 @@ static cell_t AddAdmGroupCmdOverride(IPluginContext *pContext, const cell_t *par pContext->LocalToString(params[2], &cmd); - g_Admins.AddGroupCommandOverride(id, cmd, type, rule); + adminsys->AddGroupCommandOverride(id, cmd, type, rule); return 1; } @@ -183,7 +185,7 @@ static cell_t GetAdmGroupCmdOverride(IPluginContext *pContext, const cell_t *par pContext->LocalToString(params[2], &cmd); - if (!g_Admins.GetGroupCommandOverride(id, cmd, type, &rule)) + if (!adminsys->GetGroupCommandOverride(id, cmd, type, &rule)) { return 0; } @@ -198,7 +200,7 @@ static cell_t GetAdmGroupCmdOverride(IPluginContext *pContext, const cell_t *par static cell_t GetAdmGroupAddFlags(IPluginContext *pContext, const cell_t *params) { GroupId id = (GroupId)params[1]; - return g_Admins.GetGroupAddFlags(id); + return adminsys->GetGroupAddFlags(id); } static cell_t RegisterAuthIdentType(IPluginContext *pContext, const cell_t *params) @@ -206,7 +208,7 @@ static cell_t RegisterAuthIdentType(IPluginContext *pContext, const cell_t *para char *type; pContext->LocalToString(params[1], &type); - g_Admins.RegisterAuthIdentType(type); + adminsys->RegisterAuthIdentType(type); return 1; } @@ -221,14 +223,14 @@ static cell_t CreateAdmin(IPluginContext *pContext, const cell_t *params) admin = NULL; } - return g_Admins.CreateAdmin(admin); + return adminsys->CreateAdmin(admin); } static cell_t GetAdminUsername(IPluginContext *pContext, const cell_t *params) { AdminId id = params[1]; size_t written; - const char *name = g_Admins.GetAdminName(id); + const char *name = adminsys->GetAdminName(id); if (!name) { @@ -248,7 +250,7 @@ static cell_t BindAdminIdentity(IPluginContext *pContext, const cell_t *params) pContext->LocalToString(params[2], &auth); pContext->LocalToString(params[3], &ident); - return g_Admins.BindAdminIdentity(id, auth, ident); + return adminsys->BindAdminIdentity(id, auth, ident); } static cell_t SetAdminFlag(IPluginContext *pContext, const cell_t *params) @@ -257,7 +259,7 @@ static cell_t SetAdminFlag(IPluginContext *pContext, const cell_t *params) AdminFlag flag = (AdminFlag)params[2]; bool enabled = params[3] ? true : false; - g_Admins.SetAdminFlag(id, flag, enabled); + adminsys->SetAdminFlag(id, flag, enabled); return 1; } @@ -268,7 +270,7 @@ static cell_t GetAdminFlag(IPluginContext *pContext, const cell_t *params) AdminFlag flag = (AdminFlag)params[2]; AccessMode mode = (AccessMode)params[3]; - return g_Admins.GetAdminFlag(id, flag, mode); + return adminsys->GetAdminFlag(id, flag, mode); } static cell_t GetAdminFlags(IPluginContext *pContext, const cell_t *params) @@ -276,7 +278,7 @@ static cell_t GetAdminFlags(IPluginContext *pContext, const cell_t *params) AdminId id = params[1]; AccessMode mode = (AccessMode)params[2]; - return g_Admins.GetAdminFlags(id, mode); + return adminsys->GetAdminFlags(id, mode); } static cell_t AdminInheritGroup(IPluginContext *pContext, const cell_t *params) @@ -284,14 +286,14 @@ static cell_t AdminInheritGroup(IPluginContext *pContext, const cell_t *params) AdminId id = params[1]; GroupId gid = params[2]; - return g_Admins.AdminInheritGroup(id, gid); + return adminsys->AdminInheritGroup(id, gid); } static cell_t GetAdminGroupCount(IPluginContext *pContext, const cell_t *params) { AdminId id = params[1]; - return g_Admins.GetAdminGroupCount(id); + return adminsys->GetAdminGroupCount(id); } static cell_t GetAdminGroup(IPluginContext *pContext, const cell_t *params) @@ -301,7 +303,7 @@ static cell_t GetAdminGroup(IPluginContext *pContext, const cell_t *params) const char *name; GroupId gid; - if ((gid=g_Admins.GetAdminGroup(id, index, &name)) == INVALID_GROUP_ID) + if ((gid=adminsys->GetAdminGroup(id, index, &name)) == INVALID_GROUP_ID) { return gid; } @@ -323,7 +325,7 @@ static cell_t SetAdminPassword(IPluginContext *pContext, const cell_t *params) pContext->LocalToString(params[2], &password); - g_Admins.SetAdminPassword(id, password); + adminsys->SetAdminPassword(id, password); return 1; } @@ -331,7 +333,7 @@ static cell_t SetAdminPassword(IPluginContext *pContext, const cell_t *params) static cell_t GetAdminPassword(IPluginContext *pContext, const cell_t *params) { AdminId id = params[1]; - const char *password = g_Admins.GetAdminPassword(id); + const char *password = adminsys->GetAdminPassword(id); if (!password) { @@ -350,14 +352,14 @@ static cell_t FindAdminByIdentity(IPluginContext *pContext, const cell_t *params pContext->LocalToString(params[1], &auth); pContext->LocalToString(params[2], &ident); - return g_Admins.FindAdminByIdentity(auth, ident); + return adminsys->FindAdminByIdentity(auth, ident); } static cell_t RemoveAdmin(IPluginContext *pContext, const cell_t *params) { AdminId id = params[1]; - return g_Admins.InvalidateAdmin(id); + return adminsys->InvalidateAdmin(id); } static cell_t FlagBitsToBitArray(IPluginContext *pContext, const cell_t *params) @@ -365,7 +367,7 @@ static cell_t FlagBitsToBitArray(IPluginContext *pContext, const cell_t *params) FlagBits bits = (FlagBits)params[1]; bool array[AdminFlags_TOTAL]; cell_t *addr; - unsigned int numWr = g_Admins.FlagBitsToBitArray(bits, array, AdminFlags_TOTAL); + unsigned int numWr = adminsys->FlagBitsToBitArray(bits, array, AdminFlags_TOTAL); pContext->LocalToPhysAddr(params[2], &addr); @@ -391,7 +393,7 @@ static cell_t FlagBitArrayToBits(IPluginContext *pContext, const cell_t *params) array[i] = addr[i] ? true : false; } - return g_Admins.FlagBitArrayToBits(array, num); + return adminsys->FlagBitArrayToBits(array, num); } static cell_t FlagArrayToBits(IPluginContext *pContext, const cell_t *params) @@ -401,7 +403,7 @@ static cell_t FlagArrayToBits(IPluginContext *pContext, const cell_t *params) if (sizeof(AdminFlag) == sizeof(cell_t)) { - return g_Admins.FlagArrayToBits((const AdminFlag *)addr, params[2]); + return adminsys->FlagArrayToBits((const AdminFlag *)addr, params[2]); } else { AdminFlag flags[AdminFlags_TOTAL]; unsigned int num = ((unsigned)params[2] > AdminFlags_TOTAL ? AdminFlags_TOTAL : params[2]); @@ -410,7 +412,7 @@ static cell_t FlagArrayToBits(IPluginContext *pContext, const cell_t *params) { flags[i] = (AdminFlag)addr[i]; } - return g_Admins.FlagArrayToBits(flags, num); + return adminsys->FlagArrayToBits(flags, num); } } @@ -421,11 +423,11 @@ static cell_t FlagBitsToArray(IPluginContext *pContext, const cell_t *params) if (sizeof(AdminFlag) == sizeof(cell_t)) { - return g_Admins.FlagBitsToArray(params[1], (AdminFlag *)addr, params[3]); + return adminsys->FlagBitsToArray(params[1], (AdminFlag *)addr, params[3]); } else { AdminFlag flags[AdminFlags_TOTAL]; unsigned int num = ((unsigned)params[2] > AdminFlags_TOTAL ? AdminFlags_TOTAL : params[2]); - num = g_Admins.FlagBitsToArray(params[1], flags, num); + num = adminsys->FlagBitsToArray(params[1], flags, num); for (unsigned int i=0; iCanAdminTarget(params[1], params[2]) ? 1 : 0; } static cell_t CreateAuthMethod(IPluginContext *pContext, const cell_t *params) { char *name; pContext->LocalToString(params[1], &name); - g_Admins.RegisterAuthIdentType(name); + adminsys->RegisterAuthIdentType(name); return 1; } static cell_t SetAdmGroupImmunityLevel(IPluginContext *pContext, const cell_t *params) { - return g_Admins.SetGroupImmunityLevel(params[1], params[2]); + return adminsys->SetGroupImmunityLevel(params[1], params[2]); } static cell_t GetAdmGroupImmunityLevel(IPluginContext *pContext, const cell_t *params) { - return g_Admins.GetGroupImmunityLevel(params[1]); + return adminsys->GetGroupImmunityLevel(params[1]); } static cell_t SetAdminImmunityLevel(IPluginContext *pContext, const cell_t *params) { - return g_Admins.SetAdminImmunityLevel(params[1], params[2]); + return adminsys->SetAdminImmunityLevel(params[1], params[2]); } static cell_t GetAdminImmunityLevel(IPluginContext *pContext, const cell_t *params) { - return g_Admins.GetAdminImmunityLevel(params[1]); + return adminsys->GetAdminImmunityLevel(params[1]); } static cell_t FindFlagByName(IPluginContext *pContext, const cell_t *params) @@ -479,7 +481,7 @@ static cell_t FindFlagByName(IPluginContext *pContext, const cell_t *params) pContext->LocalToPhysAddr(params[2], &addr); AdminFlag admflag; - if (!g_Admins.FindFlag(flag, &admflag)) + if (!adminsys->FindFlag(flag, &admflag)) { return 0; } @@ -495,7 +497,7 @@ static cell_t FindFlagByChar(IPluginContext *pContext, const cell_t *params) pContext->LocalToPhysAddr(params[2], &addr); AdminFlag admflag; - if (!g_Admins.FindFlag((char)params[1], &admflag)) + if (!adminsys->FindFlag((char)params[1], &admflag)) { return 0; } @@ -514,7 +516,7 @@ static cell_t ReadFlagString(IPluginContext *pContext, const cell_t *params) pContext->LocalToPhysAddr(params[2], &addr); const char *end = flag; - FlagBits bits = g_Admins.ReadFlagString(flag, &end); + FlagBits bits = adminsys->ReadFlagString(flag, &end); *addr = end - flag; diff --git a/core/logic_bridge.cpp b/core/logic_bridge.cpp index 26059346..98ad4157 100644 --- a/core/logic_bridge.cpp +++ b/core/logic_bridge.cpp @@ -47,6 +47,7 @@ #include "logic_bridge.h" #include "DebugReporter.h" #include "PlayerManager.h" +#include "AdminCache.h" static ILibrary *g_pLogic = NULL; static LogicInitFunction logic_init_fn; @@ -116,6 +117,7 @@ static sm_core_t core_bridge = &g_Forwards, &g_Timers, &g_Players, + &g_Admins, /* Functions */ add_natives, find_convar,