diff --git a/amxmodx/CGameConfigs.cpp b/amxmodx/CGameConfigs.cpp index 2b0e9421..35c07655 100644 --- a/amxmodx/CGameConfigs.cpp +++ b/amxmodx/CGameConfigs.cpp @@ -516,7 +516,21 @@ bool CGameConfig::Reparse(char *error, size_t maxlength) if (!g_LibSys.PathExists(path)) { - return false; + g_LibSys.PathFormat(path, sizeof(path), "%s.txt", m_File); + + if (!EnterFile(path, error, maxlength)) + { + return false; + } + + build_pathname_r(path, sizeof(path), "%s/gamedata/custom/%s.txt", dataDir, m_File); + + if (g_LibSys.PathExists(path)) + { + g_LibSys.PathFormat(path, sizeof(path), "custom/%s.txt", m_File); + return EnterFile(path, error, maxlength); + } + return true; } SMCError err; diff --git a/amxmodx/modules.cpp b/amxmodx/modules.cpp index f68cbcbf..5d32c809 100755 --- a/amxmodx/modules.cpp +++ b/amxmodx/modules.cpp @@ -31,6 +31,7 @@ #include "messages.h" #include "trie_natives.h" #include "CDataPack.h" +#include "CGameConfigs.h" CList g_modules; CList g_loadedscripts; @@ -1810,6 +1811,11 @@ int amx_Execv() return AMX_ERR_NOTFOUND; } +IGameConfigManager *MNF_GetConfigManager() +{ + return &ConfigManager; +} + void Module_CacheFunctions() { func_s *pFunc; @@ -1824,6 +1830,7 @@ void Module_CacheFunctions() REGISTER_FUNC("Format", MNF_Format) REGISTER_FUNC("RegisterFunction", MNF_RegisterFunction); REGISTER_FUNC("RegisterFunctionEx", MNF_RegisterFunctionEx); + REGISTER_FUNC("GetConfigManager", MNF_GetConfigManager); // Amx scripts loading / unloading / managing REGISTER_FUNC("GetAmxScript", MNF_GetAmxScript) diff --git a/public/sdk/amxxmodule.cpp b/public/sdk/amxxmodule.cpp index 332a98df..ea4049b0 100644 --- a/public/sdk/amxxmodule.cpp +++ b/public/sdk/amxxmodule.cpp @@ -2501,6 +2501,7 @@ PFN_GETLOCALINFO g_fn_GetLocalInfo; PFN_AMX_REREGISTER g_fn_AmxReRegister; PFN_REGISTERFUNCTIONEX g_fn_RegisterFunctionEx; PFN_MESSAGE_BLOCK g_fn_MessageBlock; +PFN_GET_CONFIG_MANAGER g_fn_GetConfigManager; // *** Exports *** C_DLLEXPORT int AMXX_Query(int *interfaceVersion, amxx_module_info_s *moduleInfo) @@ -2560,6 +2561,7 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc) REQFUNC("Format", g_fn_Format, PFN_FORMAT); REQFUNC("RegisterFunction", g_fn_RegisterFunction, PFN_REGISTERFUNCTION); REQFUNC("RegisterFunctionEx", g_fn_RegisterFunctionEx, PFN_REGISTERFUNCTIONEX); + REQFUNC("GetConfigManager", g_fn_GetConfigManager, PFN_GET_CONFIG_MANAGER); // Amx scripts REQFUNC("GetAmxScript", g_fn_GetAmxScript, PFN_GET_AMXSCRIPT); @@ -2787,6 +2789,7 @@ void ValidateMacros_DontCallThis_Smiley() MF_RemoveLibraries(NULL); MF_OverrideNatives(NULL, NULL); MF_MessageBlock(0, 0, NULL); + MF_GetConfigManager(); } #endif diff --git a/public/sdk/amxxmodule.h b/public/sdk/amxxmodule.h index 4f4cd705..5f0feab5 100644 --- a/public/sdk/amxxmodule.h +++ b/public/sdk/amxxmodule.h @@ -18,6 +18,7 @@ // config #include "moduleconfig.h" +#include #include // size_t // metamod include files @@ -2217,6 +2218,7 @@ typedef const char * (*PFN_GETLOCALINFO) (const char * /*name*/, const char * typedef int (*PFN_AMX_REREGISTER) (AMX * /*amx*/, AMX_NATIVE_INFO * /*list*/, int /*list*/); typedef void * (*PFN_REGISTERFUNCTIONEX) (void * /*pfn*/, const char * /*desc*/); typedef void (*PFN_MESSAGE_BLOCK) (int /* mode */, int /* message */, int * /* opt */); +typedef IGameConfigManager* (*PFN_GET_CONFIG_MANAGER) (); extern PFN_ADD_NATIVES g_fn_AddNatives; extern PFN_ADD_NEW_NATIVES g_fn_AddNewNatives; @@ -2297,6 +2299,7 @@ extern PFN_GETLOCALINFO g_fn_GetLocalInfo; extern PFN_AMX_REREGISTER g_fn_AmxReRegister; extern PFN_REGISTERFUNCTIONEX g_fn_RegisterFunctionEx; extern PFN_MESSAGE_BLOCK g_fn_MessageBlock; +extern PFN_GET_CONFIG_MANAGER g_fn_GetConfigManager; #ifdef MAY_NEVER_BE_DEFINED // Function prototypes for intellisense and similar systems @@ -2374,6 +2377,7 @@ const char * MF_GetLocalInfo (const char *name, const char *def) { } int MF_AmxReRegister (AMX *amx, AMX_NATIVE_INFO *list, int number) { return 0; } void * MF_RegisterFunctionEx (void *pfn, const char *description) { } void * MF_MessageBlock (int mode, int msg, int *opt) { } +IGameConfigManager* MF_MessageBlock () { } #endif // MAY_NEVER_BE_DEFINED #define MF_AddNatives g_fn_AddNatives @@ -2456,6 +2460,7 @@ void MF_LogError(AMX *amx, int err, const char *fmt, ...); #define MF_AmxReRegister g_fn_AmxReRegister #define MF_RegisterFunctionEx g_fn_RegisterFunctionEx #define MF_MessageBlock g_fn_MessageBlock +#define MF_GetConfigManager g_fn_GetConfigManager #ifdef MEMORY_TEST /*** Memory ***/