我在一款名为《Amalur 王国》的游戏中使用了 Lua 5.1 版本。这是havocscript,但afaik,havocscript是lua。现在有一个称为ui64
游戏的自定义类型和一个自定义包,它注入了我添加到游戏中的钩子。
如果我执行以下操作:
module("playerdodge_hook", package.seeall)
function save_to_file(filename, data)
if io then
io.output(filename)
io.write(data)
io.flush()
end
end
function dodge_hook()
local x = SIMTYPE_ID("longbow_unique11a")
save_to_file("type", type(x))
save_to_file("directly", x)
save_to_file("tostring", tostring(x))
save_to_file("concat", "" .. x)
end
文件的输出如下:
ui64
直接地
罪
字符串
0
连接(不存在)
我不是 Lua 专家,但我试图了解它是如何工作的。因为我希望能够打印调试信息并将其保存在外部。
编辑:简短的回答是游戏的引擎使用了专有的重写 io write 方法。
Amalur 有不同的类型,ui64
实际上是指向一些 lua/havok 脚本无法访问的内存的指针,但该库允许操作。基本上,当 aui64
传入 raw 以调用内部对象表示的或或任何内部对象write
的本地化时。Type
Actor
有一个更改版本的 io 库,当它收到一个 ui64 时会询问