Предположим, у меня есть функция обратного вызова, которая выполняется, когда указанный игрок умирает.Преобразование функции C в функцию Lua
function OnPlayerDeath(playerid)
end
Я хочу, чтобы эта функция будет называться внутри модуля Lua C, не помещая его в Lua скрипт:
static int l_OnPlayerConnect (lua_State * L) {
enum { lc_nformalargs = 1 };
lua_settop(L,1);
// so here I can use playerid argument - 1 arg
return 0;
}
Это как-то можно получить этот аргумент обратного вызова в C?
#define LUA extern "C" __declspec(dllexport) int __cdecl
LUA luaopen_mymodule(lua_State *L)
{
/* function OnPlayerConnect(playerid)
*
* end */
lua_pushcfunction(L,l_OnPlayerConnect);
lua_setfield(L,LUA_GLOBALSINDEX,"OnPlayerConnect"); //there's already OnPlayerConnect I just want to also call it here but I don't know how.
assert(lua_gettop(L) - lc_nextra == 0);
return 1;
}
Я не хочу нажимать эту функцию на стек lua, потому что эта функция уже существует. Я просто хочу, чтобы это уже существовала функция Lua.
Правильно, но это толкает функцию/кусок в стеке ... –