# miniExtend Core

对应源文件: core.lua

TIP

如果你对高级功能没有兴趣,请跳过本页。

miniExtend 已尽可能恢复标准 Lua 环境,这意味着你能正常调用那些被删除的基本函数。 以下是有相对标准 Lua 环境有所不同的部分:

# loadstring2 函数

简而言之,当解析的代码只进行一些简单的计算,不需要 API 和交换数据的话,使用 loadstring() ,否则使用 loadstring2()

该函数等价于 LoadLuaScript(string, [, chuckname]) 函数。

查看本函数与 `loadstring()` 的差异

该函数效果类似于 Lua5.1 中 loadstring(string, [, chuckname]

但是 loadstring() 运行时的 _G 完全是标准的 Lua5.1 的 _G ,它不能访问迷你世界 API ,当前脚本下的全局变量,包括 miniExtend

loadstring2() 运行时的 _G 等于你的脚本中的 _G

# _G2

只要一个脚本在 miniExtend 的 core 脚本后运行,都能直接访问该表,因此可以通过 _G2 来在各个脚本之间交换数据。

不要使用 "__" + 大写字母组合 来作为自己的索引,因为 miniExtend 使用这种标识符作为索引存储一些变量。你可以遍历 _G2 来确定 miniExtend 使用了哪些标识符。

loadstring() 返回的函数执行时不能使用 _G2

# 注意事项

由于迷你世界不是简单的 Lua 解释器,有些函数会在服务端运行。因此,一些 Lua 基本功能可能存在歧义。

对于任何可以访问到系统的函数(如 iopackageos.execute ),行为取决于游戏的服务器,具有不可移植性。

  • 在单人模式下,服务器就是玩家的设备。
  • 由房主开启的多人游戏,服务器是房主的设备。
  • 开发者申请的云服,服务器是迷你世界管理该云服的服务器(暂未考证)。

这些函数只会在服务器上运行,访问的操作系统方法也取决于服务器。

某些函数非常危险

以下是一些例子:

  • 如果你使用 io.close() ,默认输出会关闭。在迷你世界中,这将导致程序突然退出
  • 执行 os.execute("cmd") ,会弹出一个命令行窗口,并阻塞程序运行。