From 741666b74294c3f0de977208eaff7adc7848a1ff Mon Sep 17 00:00:00 2001 From: Pavol Marko Date: Fri, 29 Oct 2004 19:50:38 +0000 Subject: [PATCH] Added two natives: -callfunc_begin_i -get_function_id --- amxmodx/amxmodx.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/amxmodx/amxmodx.cpp b/amxmodx/amxmodx.cpp index f769c04e..546e15f4 100755 --- a/amxmodx/amxmodx.cpp +++ b/amxmodx/amxmodx.cpp @@ -2433,6 +2433,49 @@ static cell AMX_NATIVE_CALL callfunc_begin(AMX *amx, cell *params) return 1; // success: 1 } +// native callfunc_begin_i(funcId, pluginId = -1) +static cell AMX_NATIVE_CALL callfunc_begin_i(AMX *amx, cell *params) +{ + CPluginMngr::CPlugin *plugin; + if (params[2] < 0) + plugin = g_plugins.findPluginFast(amx); + else + plugin = g_plugins.findPlugin(params[2]); + + if (!plugin) + return -1; + + if (!plugin->isExecutable(params[1])) + return -2; + + g_CallFunc_Plugin = plugin; + g_CallFunc_Func = params[1]; + + return 1; +} + +// native get_func_id(funcName[], pluginId = -1) +static cell AMX_NATIVE_CALL get_func_id(AMX *amx, cell *params) +{ + CPluginMngr::CPlugin *plugin; + if (params[2] < 0) + plugin = g_plugins.findPluginFast(amx); + else + plugin = g_plugins.findPlugin(params[2]); + + if (!plugin) + return -1; + + int len; + const char *funcName = get_amxstring(amx, params[1], 0, len); + + int index; + if (amx_FindPublic(amx, funcName, &index) != AMX_ERR_NONE) + index = -1; + + return index; +} + // native callfunc_end(); static cell AMX_NATIVE_CALL callfunc_end(AMX *amx, cell *params) { @@ -2856,7 +2899,9 @@ AMX_NATIVE_INFO amxmod_Natives[] = { { "get_modulesnum", get_modulesnum }, { "get_module", get_module }, { "log_amx", log_amx }, + { "get_func_id", get_func_id }, { "callfunc_begin", callfunc_begin }, + { "callfunc_begin_i", callfunc_begin_i }, { "callfunc_end", callfunc_end }, { "callfunc_push_int", callfunc_push_byval }, { "callfunc_push_str", callfunc_push_str },