# 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 基本功能可能存在歧义。
对于任何可以访问到系统的函数(如 io
、 package
、 os.execute
),行为取决于游戏的服务器,具有不可移植性。
- 在单人模式下,服务器就是玩家的设备。
- 由房主开启的多人游戏,服务器是房主的设备。
- 开发者申请的云服,服务器是迷你世界管理该云服的服务器(暂未考证)。
这些函数只会在服务器上运行,访问的操作系统方法也取决于服务器。
某些函数非常危险
以下是一些例子:
- 如果你使用
io.close()
,默认输出会关闭。在迷你世界中,这将导致程序突然退出。 - 执行
os.execute("cmd")
,会弹出一个命令行窗口,并阻塞程序运行。
← 环境搭建