var script = """
require "chunk";
testPrint("hello world")
print('test');
""";
var chunk = """
function testPrint(arg)
print(arg .. "hook 2");
end
""";
var luaEngine = new NLua.Lua(true);
luaEngine.State.Encoding = Encoding.UTF8;
luaEngine.RegisterFunction("print", PrintHook<object>);
luaEngine.RegisterFunction("require", RequireHook);
try
{
var result = luaEngine.DoString(script, "Main.lua");
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
static void PrintHook<T>(T text)
{
Console.WriteLine($"Hooked {text}");
}
LuaStatus RequireHook(string chunkName)
{
try
{
Console.WriteLine($"Hooked {chunkName}");
// not works
//return luaEngine.State.LoadString(chunk);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
// fallback
return LuaStatus.OK;
}
var script = """
require "chunk";
testPrint("hello world")
print('test');
""";
var chunk = """
function testPrint(arg)
print(arg .. "hook 2");
end
""";
var luaEngine = new NLua.Lua(true);
luaEngine.State.Encoding = Encoding.UTF8;
luaEngine.RegisterFunction("print", PrintHook<object>);
luaEngine.RegisterFunction("require", RequireHook);
try
{
var result = luaEngine.DoString(script, "Main.lua");
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
static void PrintHook<T>(T text)
{
Console.WriteLine($"Hooked {text}");
}
LuaStatus RequireHook(string chunkName)
{
try
{
Console.WriteLine($"Hooked {chunkName}");
// not works
//return luaEngine.State.LoadString(chunk);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
// fallback
return LuaStatus.OK;
}