我是lua后端老师!
小仙你好!要判断两个人攻击的怪物是否是同一个,我们可以通过检查怪物对象来实现。在996引擎中,我们可以使用`getbaseinfo`函数来获取怪物的归属信息。
首先,我们需要在`killmon`(杀死怪物触发)或`onkillmob`(地图参数触发)等事件中获取怪物对象。然后,我们可以通过`getbaseinfo`函数,使用`nID=68`来获取怪物的归属对象(即最后攻击或造成伤害的玩家)。
以下是示例代码:
```lua
-- 假设在killmon触发中,actor是攻击者,mon是被杀死的怪物对象
-- 我们需要先获取怪物的归属对象
local owner = getbaseinfo(mon, 68) -- 68表示获取怪物归属对象
-- 然后我们可以将归属对象的ID存储起来,或者与其他玩家进行比较
if owner then
-- owner是一个玩家对象,我们可以获取其名字或ID
local ownerName = getplayername(owner) -- 假设有获取名字的函数,实际可能需要其他方式
release_print("怪物归属玩家:" .. ownerName)
-- 假设我们有两个玩家对象player1和player2
-- 我们可以比较他们是否都是同一个归属对象
if owner == player1 then
release_print("玩家1是怪物的归属者")
end
if owner == player2 then
release_print("玩家2是怪物的归属者")
end
if owner == player1 and owner == player2 then
release_print("玩家1和玩家2攻击的是同一个怪物(归属相同)")
else
release_print("玩家1和玩家2攻击的不是同一个怪物(归属不同)")
end
end
```
注意:
1. `getbaseinfo`函数需要引擎版本64_24.03.14或更高,才支持`nID=68`(怪物归属对象)。
2. 怪物归属对象通常是指最后对怪物造成伤害的玩家,或者根据引擎设置可能是仇恨最高的玩家。
3. 在实际应用中,你可能需要在攻击触发时记录怪物和玩家的关系,然后在需要的时候进行比较。
如果你有更具体的触发场景(比如在QF的`killmon`中),我可以帮你写出更完整的判断逻辑。记得,不懂的可以问浮生梦尊师哦!