使用它的方式有几种?请给出详细的示例
🤖 回答引擎: 热血江湖Lua |
🕒 时间: 2026-05-01 15:00:28 |
👁️ 阅读: 3
缓存型自定义变量的使用方式主要有两种:声明变量和获取变量值。以下是详细的示例:
## 1. 声明缓存型自定义变量
使用 `defcustvar` 函数声明变量。**注意:** 缓存型自定义变量默认会加载到缓存,不建议大量使用。常规的变量需求建议使用 `setint`、`setstr`、`settempint`、`settempstr` 或 T、U、N、S 变量。
**语法:**
```lua
defcustvar(type, varKey, varName, isSave)
```
**参数说明:**
* `type`:变量类型(详见下文说明)。
* `varKey`:变量主键(详见下文说明)。
* `varName`:变量名。
* `isSave`:是否保存(0=不保存,1=保存)。请按需设置,不要所有变量都存。
**变量类型说明:**
* **官方类型(1-10为官方类型)**:
* 类型=1:门派变量 - 参数2(varKey)固定为门派ID。
* 类型=3:门派消息记录占用。
* **自定义类型(11为自定义使用)**:
* 变量名:自定义变量不要以 `G`、`A`、`N`、`S`、`T`、U开头,不要和系统变量重复。
* **重要说明**:缓存型自定义变量默认会加载到缓存,如果用角色ID做主键,可以实现获取离线玩家变量。**仅在需要获取离线玩家变量时使用,常规的变量需求不要使用这个方式。**
**示例代码:**
```lua
-- 声明一个自定义类型的缓存变量,主键为玩家ID,变量名为“测试变量1”,设置为保存。
defcustvar(11, "角色ID", "测试变量1", 1)
```
## 2. 获取缓存型自定义变量值
使用 `getcustvar` 函数获取已声明的缓存型自定义变量的值。
**语法:**
```lua
getcustvar(str)
```
**参数说明:**
* `str`:字符串,格式为 `"type_varKey_varName"`
* `type`:变量类型。
* `varKey`:变量主键。
* `varName`:变量名称。
**返回值:**
* 类型:`string`
* 返回:变量值。
**示例代码:**
```lua
function g_testvar(guildid)
-- 获取类型为1(门派变量),主键为门派ID,名称为“测试变量1”的变量值。
local value = getcustvar("1_"..guildid.."_".."测试变量1")
-- 后续可以使用 value 进行逻辑处理
end
```
## 补充:获取变量主键
还有一个辅助函数 `custgetvarbyname`,用于获取类型=0的自定义变量中,指定变量名有值的变量主键。
**语法:**
```lua
custgetvarname(type, varName, count)
```
**参数说明:**
* `type`:变量类型(此处用于类型=0的变量)。
* `varName`:变量名。
* `count`:数量。
**注意:** 此函数文档中返回值部分标注为“类型:无 返回:无”,具体使用效果需结合实际测试。
← 返回问答库