diff --git a/amxmodx/amxmodx.cpp b/amxmodx/amxmodx.cpp index fa47ac49..ac4cbeaa 100755 --- a/amxmodx/amxmodx.cpp +++ b/amxmodx/amxmodx.cpp @@ -2783,6 +2783,32 @@ static cell AMX_NATIVE_CALL amx_mkdir(AMX *amx, cell *params) #endif } +static cell AMX_NATIVE_CALL find_plugin_byfile(AMX *amx, cell *params) +{ + typedef int (*STRCOMPARE)(const char*, const char*); + + STRCOMPARE func; + + if (params[2]) + { + func = stricmp; + } else { + func = strcmp; + } + + int len, i=0; + char *file = get_amxstring(amx, params[1], 0, len); + + for (CPluginMngr::iterator iter = g_plugins.begin(); iter; ++iter) + { + if ( (func)((*iter).getName(), file) == 0 ) + return i; + i++; + } + + return -1; +} + AMX_NATIVE_INFO amxmod_Natives[] = { { "client_cmd", client_cmd }, { "client_print", client_print }, @@ -2793,6 +2819,7 @@ AMX_NATIVE_INFO amxmod_Natives[] = { { "engclient_cmd", engclient_cmd }, { "engclient_print", engclient_print }, { "find_player", find_player }, + { "find_plugin_byfile", find_plugin_byfile }, { "force_unmodified", force_unmodified }, { "format_time", format_time}, { "get_clcmd", get_clcmd}, diff --git a/amxmodx/msvc/amxmodx_mm.vcproj b/amxmodx/msvc/amxmodx_mm.vcproj index aa1d43bc..73eb6ab8 100755 --- a/amxmodx/msvc/amxmodx_mm.vcproj +++ b/amxmodx/msvc/amxmodx_mm.vcproj @@ -756,9 +756,6 @@ - - diff --git a/plugins/include/amxconst.inc b/plugins/include/amxconst.inc index 47ef57fe..10927494 100755 --- a/plugins/include/amxconst.inc +++ b/plugins/include/amxconst.inc @@ -260,3 +260,5 @@ enum { #define AMX_FLAG_LINEOPS (1<<5) /* line ops are parsed by the JIT [loadtime only flag] */ #define AMX_FLAG_BROWSE (1<<14) /* browsing/relocating or executing */ #define AMX_FLAG_RELOC (1<<15) /* jump/call addresses relocated */ + +#define INVALID_PLUGIN_ID -1 diff --git a/plugins/include/amxmodx.inc b/plugins/include/amxmodx.inc index 15c7a85e..bbafce17 100755 --- a/plugins/include/amxmodx.inc +++ b/plugins/include/amxmodx.inc @@ -677,4 +677,7 @@ native require_module(const module[]); native is_amd64_server(); /* Returns 0 on success, like the POSIX specification */ -native mkdir(const dirname[]); \ No newline at end of file +native mkdir(const dirname[]); + +/* Returns plugin id searched by file/name. Returns INVALID_PLUGIN_ID on failure. */ +native find_plugin_byfile(const filename[], ignoreCase=1); \ No newline at end of file