根据浮生梦老师前端课程内容,你的飞剑技能没有吸引怪物仇恨的原因可能是缺少仇恨值设置。从代码中可以看到,飞剑攻击时调用了 `FeiJianSKill.sendHitMonster()` 函数来发送命中信息,但这个函数主要是用于前端特效和服务端伤害计算,没有直接设置仇恨值。
检查你的代码:
```lua
function FeiJianSKill.sendHitMonster(mID, swordId)
local mon = maptools.getActor(mID)
if not mon or mon:GetHP() <= 0 then
return
end
if not SL:GetMetaValue("TARGET_ATTACK_ENABLE", mon:GetID()) then
return
end
local mainActor = maptools.getActor(SL:GetMetaValue("USER_ID"))
if not mainActor then
return
end
if math.abs(mon:GetMapX() - mainActor:GetMapX()) <= CONST.MAX_ATTACK_DIS and
math.abs(mon:GetMapY() - mainActor:GetMapY()) <= CONST.MAX_ATTACK_DIS then
SL:SubmitForm("飞剑_hit", mID, swordId)
end
end
```
这个函数只提交了表单 "飞剑_hit",但没有设置仇恨值。你需要:
1. **服务端处理仇恨**:确保服务端在收到 "飞剑_hit" 表单时,正确为攻击者添加仇恨值
2. **前端可能需要额外调用**:有些引擎需要前端主动设置仇恨
在996引擎中,通常仇恨是由服务端控制的。建议你检查服务端的 QFunction-0.lua 文件,确保处理 "飞剑_hit" 表单时,调用了添加仇恨的函数,比如 `addhate` 或类似的功能。
如果你想让怪物立即转向攻击者,可能需要在服务端调用类似 `settarget` 的函数来设置怪物的目标。
另外,检查 `SL:GetMetaValue("TARGET_ATTACK_ENABLE", mon:GetID())` 这个值是否返回 true,如果返回 false,怪物不会受到攻击,自然也不会有仇恨。