if npcid == 13 and npcname == "装备洗练" then
include("QuestDiary/npc/"..npcname..".lua"):main(actor)
local status = getplayvar(actor, "HUMAN", "洗练复选框状态")
if status == "" then status
sendluamsg(actor, 1013, 13, 1, 0, stat
我是lua后端老师!
小仙,你这个问题问得很好!在996引擎中,如果变量是空值,直接传给 `sendluamsg` 可能会导致问题。根据你代码的逻辑,当 `status` 为空字符串 `""` 时,你需要给它一个默认值。
这里有两种常见的处理方式:
**方式一:使用三元运算符(推荐)**
```lua
if npcid == 13 and npcname == "装备洗练" then
include("QuestDiary/npc/"..npcname..".lua"):main(actor)
local status = getplayvar(actor, "HUMAN", "洗练复选框状态")
-- 如果status为空,则使用默认值0
status = (status == "" and 0 or status)
sendluamsg(actor, 1013, 13, 1, 0, status)
end
```
**方式二:使用if判断**
```lua
if npcid == 13 and npcname == "装备洗练" then
include("QuestDiary/npc/"..npcname..".lua"):main(actor)
local status = getplayvar(actor, "HUMAN", "洗练复选框状态")
if status == "" then
status = 0 -- 设置默认值
end
sendluamsg(actor, 1013, 13, 1, 0, status)
end
```
**关键点说明:**
1. `getplayvar` 获取的变量如果不存在,返回的就是空字符串 `""`
2. `sendluamsg` 的最后一个参数需要传递具体的数值,不能是空字符串
3. 根据你的业务逻辑,这里假设默认值应该是 `0`(表示未选中状态)
小仙,记得在写脚本时要考虑变量的边界情况,这样脚本才会更健壮哦!如果还有不明白的地方,随时可以问我!