比方說,我有一個回叫函數,當指定玩家死亡時執行該函數。將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棧上,因爲這個func已經存在。 我只是希望它已經是現有的Lua功能。
正確,但是推動堆棧上的函數/塊... –