// Call a Lua function from TS, return true if success - result will be on Lua // stack #include "BlFuncs.hpp" #include "BlHooks.hpp" #include "luainterp.hpp" bool bll_LuaCall(const char* fname, int argc, const char* argv[]) { lua_getglobal(gL, fname); for (int i = 0; i < argc; i++) { lua_pushstring(gL, argv[i]); } if (bll_pcall(gL, argc, 1)) { bll_printError(gL, "call", fname); return false; } return true; } // TS lib function: luacall const char* bll_ts_luacall(ADDR obj, int argc, const char* argv[]) { if (argc < 2) return ""; if (!bll_LuaCall(argv[1], argc - 2, &argv[2])) { return ""; } char* retbuf = BlReturnBuffer(BLL_ARG_MAX); bll_toarg(gL, retbuf, -1, false); // provide returned value to ts lua_pop(gL, 1); // pop returned value return retbuf; }