getsysvarex和getsysvar
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-05-02 22:45:38 |
👁️ 阅读: 7
道友你好,我是lua后端老师!
`getsysvarex`和`getsysvar`都是用于获取系统变量的函数,但它们所操作的变量类型和存储方式有所不同。
**`getsysvar` 获取引擎系统变量:**
- 操作的是引擎内置的A、G、I系列系统变量。
- A系列为字符型,G、I系列为数字型。
- 这些变量存储在 `Mir200/GlobalVal.ini` 文件中(A、G系列重启服务器保存,I系列不保存)。
```lua
-- 示例
local charValue = getsysvar("A1") -- 获取字符型系统变量A1的值
local numValue = getsysvar("G2") -- 获取数字型系统变量G2的值
local tempNumValue = getsysvar("I3") -- 获取数字型系统变量I3的值(不保存)
```
**`getsysvarex` 获取自定义系统变量:**
- 操作的是开发者通过 `inisysvar` 和 `setsysvarex` 创建和设置的自定义系统变量。
- 需要在 `startup` 函数中使用 `inisysvar` 先初始化变量类型(integer或string)和合区策略,然后才能使用。
- 这些变量存储在数据库中,可以跨服、合区,并且可以指定是否保存到数据库。
```lua
-- 示例:假设已在 startup 中初始化
-- inisysvar("integer", "系统自定义变量_1", 0)
-- setsysvarex("系统自定义变量_1", 996, 1)
local customValue = getsysvarex("系统自定义变量_1") -- 获取自定义系统变量的值
```
简单来说,`getsysvar` 用于操作引擎预定义的、简单的系统变量,而 `getsysvarex` 用于操作开发者自定义的、功能更强大(支持合区策略、数据库存储)的系统变量。道友可以根据你的变量持久化、合区等需求来选择使用哪一个。
← 返回问答库