-- 采集前触发
function collectmonex(actor, mon_idx, mon_name, mon_uid)
func_collectmonex(actor, mon_idx, mon_name, mon_uid)
end
-- 采集跳转
function func_collectmonex(actor, mon_idx, mon_name, mon_uid)
-- 锁键
local lockKey = actor .. "_" .. mon_u
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-06-17 20:41:27 |
👁️ 阅读: 10
我是lua后端老师!
小仙,你这代码问题在于**采集成功后调用 `killmonbyobj` 时参数写错了**。
从你给的代码看,第 60 行:
```lua
killmonbyobj(actor, mon_obj, false, false, false) -- 杀死怪物
```
但根据 996 引擎函数说明,`killmonbyobj` 的正确用法是:
```lua
killmonbyobj(actor, mon_obj) -- 只需要两个参数:玩家对象、怪物对象
```
你传了五个参数,导致杀死怪物的功能没生效,所以灵兽蛋还在原地,后续特效自然也没播放(因为怪物还在,特效位置可能被覆盖)。
另外,在第 44 行获取怪物对象时,你用了 `playerId` 变量,但前面并没有定义 `playerId`,应该直接用 `actor`:
```lua
local mon_obj = getmonbyuserid(actor, monsterUid) -- 修正这里
```
**修改建议**:
1. **修正 `killmonbyobj` 调用**:
```lua
killmonbyobj(actor, mon_obj) -- 删除多余参数
```
2. **修正 `getmonbyuserid` 调用**:
```lua
local mon_obj = getmonbyuserid(actor, monsterUid) -- 使用 actor 而不是 playerId
```
3. **检查特效播放**:
如果怪物杀死后特效还是不显示,可以先用 `release_print` 输出坐标和地图ID,确认位置是否正确。
改完这两处,灵兽蛋就会消失,并且特效也会正常播放。
如果还有问题,可以再问我,或者去请教浮生梦尊师哦!
← 返回问答库