自定义个人变量
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-07-02 19:19:29 |
👁️ 阅读: 6
我是lua后端老师!小仙,你想了解自定义个人变量是吧?这可是996引擎里非常基础又重要的功能哦,就像给你的角色开一个专属的“记事本”一样。
自定义个人变量主要使用 `iniplayvar`、`setplayvar` 和 `getplayvar` 这三个函数。它们必须成对使用,而且变量在使用前**必须初始化**。
**1. 初始化变量 (iniplayvar)**
这个函数相当于给变量在数据库里“登记注册”,告诉系统这个变量叫什么名字,是数字还是文字。
```lua
-- 在玩家登录时初始化变量
function login(actor)
-- 初始化一个数字类型的个人变量,变量名为“玩家变量_1”
iniplayvar(actor, "integer", "HUMAN", "玩家变量_1")
-- 初始化一个字符串类型的个人变量,变量名为“玩家变量_2”
iniplayvar(actor, "string", "HUMAN", "玩家变量_2")
end
```
* `actor`: 玩家对象,就是触发这个脚本的玩家。
* `"integer"` 或 `"string"`: 变量类型。`integer`是整数,`string`是字符串。
* `"HUMAN"`: 变量范围,`HUMAN`代表这是个人变量,只属于这个玩家。
* `"玩家变量_1"`: 你给变量起的名字,后面设置和获取都要用这个名字。
**2. 设置变量值 (setplayvar)**
登记好了,就可以往里面存东西了。
```lua
-- 设置一个数字变量
local varName = "玩家自定义变量_1"
iniplayvar(actor, "integer", "HUMAN", varName)
setplayvar(actor, "HUMAN", varName, 996, 1) -- 将变量值设置为996,并保存到数据库(1表示保存)
release_print("玩家自定义变量[integer]", varName, getplayvar(actor, varName))
-- 设置一个字符串变量
local varName = "玩家自定义变量_2"
iniplayvar(actor, "string", "HUMAN", varName)
setplayvar(actor, "HUMAN", varName, "996abc", 1) -- 将变量值设置为"996abc",并保存到数据库
release_print("玩家自定义变量[string]", varName, getplayvar(actor, varName))
```
* 最后一个参数 `isSave` 很重要:`1` 表示保存到数据库,下次登录数据还在;`0` 表示只在内存中,下线就没了。
**3. 获取变量值 (getplayvar)**
需要的时候,再把存进去的值拿出来用。
```lua
-- 获取刚才设置的变量值
local myNumber = getplayvar(actor, "HUMAN", "玩家自定义变量_1") -- 返回 996
local myString = getplayvar(actor, "HUMAN", "玩家自定义变量_2") -- 返回 "996abc"
-- 可以用于判断,比如检查玩家今天是否已经签到
if getplayvar(actor, "HUMAN", "今日已签到") == 1 then
say(actor, "你今天已经签到过啦!")
else
say(actor, "签到成功!")
setplayvar(actor, "HUMAN", "今日已签到", 1, 1) -- 标记为已签到
end
```
**核心要点总结:**
1. **先 `iniplayvar` 初始化,再 `setplayvar`/`getplayvar` 操作**,顺序不能乱。
2. 变量名是字符串,要用引号括起来。
3. 个人变量的范围 (`varScope`) 用 `"HUMAN"`。
4. 想永久保存,设置时 `isSave` 参数要写 `1`。
小仙,你先从记录玩家简单的状态开始,比如“是否首充”、“今日挑战次数”,慢慢就掌握啦!哪里不明白随时问我。
← 返回问答库