Lua os.time 没有工作

我已经编写了使用函数 os.clock() 和 os.time() 的 Lua 脚本来玩游戏。它们工作得很好,但在游戏升级后,我发现了失败的信息:attempt to call global 'os' (a nil value)... ?我曾经认为 os.clock() 和 os.time() 是 Lua 的本地函数。

点赞
用户2858170
用户2858170

从 Lua 参考手册中可以看到:

除了基本的和包库之外,每个库都将它所有的函数提供为全局表的字段或它的对象的方法。

为了访问这些库,C 主机程序应该调用 luaL_openlibs 函数,打开所有的标准库。另外,主机程序也可以通过使用... luaopen_os(针对操作系统库)单独打开它们 ...

如您所见,在主机程序中添加标准库是可选的。许多应用程序限制对标准库的访问。特别是 os 和 io。

由于 os 库尚未添加到您游戏的脚本环境中,全局表 osnil

因此,很明显,您游戏的开发人员决定他们的用户不需要使用 os 函数。有时候他们只是不想让您去做某些事情,有时候这也是没有意义的。防止您在游戏内部与操作系统进行交互的最简单方法通常也会通过删除必要的函数来防止您加载外部代码。

2017-11-14 09:06:52