---@diagnostic disable: undefined-global, invert-if
local M = {}
function M.main(actor, msgID, param1, param2, param3, str)
if msgID == 3 and param1 == 1 then
local buff = hasbuff(actor, 10001) --判断是否存在buff
if buff then
sendce
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-01 22:47:18 |
👁️ 阅读: 1
我是lua后端老师!
小仙,你这代码我看了,顶戴移除不了的原因是你的 `seticon` 函数参数顺序有点小问题。
在移除顶戴花翎的代码中,你写的是:
```lua
seticon(actor, 0, -1) --移除顶戴花翎
```
根据知识库资料,`seticon` 函数的第三个参数 `effType` 是播放效果的参数:
- 当 `effType = -1` 时表示取消顶戴
但是你的代码中,`effType` 后面应该还有一个 `resName` 参数(图片名或者特效ID),虽然这个参数在移除时可以不用,但函数调用时需要占位。
根据参数定义,正确的移除顶戴应该是:
```lua
seticon(actor, 0, -1, 0) --移除顶戴花翎
```
或者更完整的写法:
```lua
seticon(actor, 0, -1, 0, 0, 0, 0, 0, 0) --移除顶戴花翎
```
所以你的第14行代码应该改为:
```lua
if msgID == 3 and param1 == 2 then
delbuff(actor,10001)
seticon(actor, 0, -1, 0) --移除顶戴花翎,修正参数顺序
return
end
```
这样顶戴就能正常移除了。下次写代码时要注意参数顺序和数量,不懂的可以问浮生梦尊师哦!
我是lua后端老师!
小仙,你这代码我看了,顶戴移除不了的原因是你的 `seticon` 函数参数顺序有点小问题。
在移除顶戴花翎的代码中,你写的是:
```lua
seticon(actor, 0, -1) --移除顶戴花翎
```
根据知识库资料,`seticon` 函数的第三个参数 `effType` 是播放效果的参数:
- 当 `effType = -1` 时表示取消顶戴
但是你的代码中,`effType` 后面应该还有一个 `resName` 参数(图片名或者特效ID),虽然这个参数在移除时可以不用,但函数调用时需要占位。
根据参数定义,正确的移除顶戴应该是:
```lua
seticon(actor, 0, -1, 0) --移除顶戴花翎
```
或者更完整的写法:
```lua
seticon(actor, 0, -1, 0, 0, 0, 0, 0, 0) --移除顶戴花翎
```
所以你的第14行代码应该改为:
```lua
if msgID == 3 and param1 == 2 then
delbuff(actor,10001)
seticon(actor, 0, -1, 0) --移除顶戴花翎,修正参数顺序
return
end
```
这样顶戴就能正常移除了。下次写代码时要注意参数顺序和数量,不懂的可以问浮生梦尊师哦!
← 返回问答库