求大佬指教:2秒攻击不到目标切换目标的指令
求大佬指教:2秒攻击不到目标切换目标的指令说实话,这个比较复杂判断条件,职业不一样 ,可以用距离判断,目标是否可攻击,然后清除当前目标,更好用的函数,需要进阶区,我还进不去 本帖最后由 blxyz521 于 2022-6-24 09:27 AM 编辑
判断怪的血量,如果血量变少,就继续循环。如果血量没变或者变多就记录时间1,继续循环。
如果血量还是没变或者变多,时间1已经有值就记录时间2,如果时间2-时间1>2就切换目标 清空时间1 否则继续循环
如果血量变少了,就清空时间1.继续循环
本帖最后由 idlng 于 2022-7-4 07:33 PM 编辑
参考楼上根据血量变化来检测是否在攻击. 可以写个例子
local thp = UnitHealth("target")
if checkdelay == nil then
checkdelay = 0
end
if thp == lastgethp and
GetTime() - checkdelay > 2 then
--2秒血量 没有变化 做点什么吧
lastgethp = UnitHealth("target")
checkdelay = GetTime()
end
如果复杂一点 就要创建一个frame
获取所有当前发生的events(事件) 每一个动作都会发生事件
events = {} 它是Table
delaytime = 0
i = 0
循环找发生的事件
for a,b in ipairs(events) do
if GetTime() - delaytime > 2 do
if b == "SPELL_CAST_FAILED" then --事件发生
要不要做点什么
i = i +1
if i >= 3 then
同一事件发生3次 换目标
end
delaytime = GetTime()
end
end
遍历这个表所有事件, 查找出你角色当前什么行为造成的什么事件,
例如, SPELL_CAST_FAILED --技能总是释放失败 触发该事件
或 如 PLAYER_REGEN_DISABLED -- 自我恢复关闭 表示进入战斗了
2秒查找一次发生事件
这是最源头写法,
idlng 发表于 2022-7-4 06:58 PM
参考楼上根据血量变化来检测是否在攻击. 可以写个例子
local thp = UnitHealth("ta ...
local thp = UnitHealth("target")
if checkdelay == nil then
checkdelay = 0
end
if thp == lastgethp and
GetTime() - checkdelay > 2 then
--2秒血量 没有变化 做点什么吧
BeeRun("/targetenemy");
lastgethp = UnitHealth("target")
checkdelay = GetTime()
end
大佬我把你码 弄过来..测试一下 貌似没有效果 ..我选定一个 目标. 如果目标2秒后血量没有变化...就切换一个目标...但是 没用..不知道 是不是 我改得问题
页:
[1]