Files
BlockLua/src/tsliblua.cpp
2025-10-06 17:00:12 -04:00

34 lines
831 B
C++

// 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;
}