[Lua] 纯文本查看 复制代码 -- 暗影牧师全自动攻击脚本(主动寻敌+死亡拾取+持续攻击)
-- ===================== 核心配置(仅改这里)=====================
local MAIN_SKILL = "噬灵疫病" -- 主攻技能(必须和游戏内完全一致)
local LOOT_ITEM_NAME = "一键拾取" -- 拾取物品名称(背包复制)
local LOOT_ITEM_ID = 60003 -- 拾取物品ID
local SCAN_RANGE = 30 -- 主动寻敌范围(码)
local SCAN_INTERVAL = 1 -- 主动寻敌间隔(秒)
-- ===================== 全局变量(无需修改)=====================
local lastScanTime = 0 -- 上次主动寻敌时间
-- ===================== 核心工具函数 =====================
-- 1. 目标死亡检测
local function IsTargetDead()
return UnitExists("target") and UnitIsDeadOrGhost("target")
end
-- 2. 死亡自动拾取(简化版)
local function LootDeadTarget()
if IsTargetDead() then
BeeRun("/cleartarget")
BeeRun("/targetenemy [dead]") -- 选中最近尸体
if UnitExists("target") and UnitIsDeadOrGhost("target") then
-- 强制拾取(跳过背包校验,直接用)
BeeRun("/use " .. LOOT_ITEM_NAME)
BeeRun("/use item:" .. LOOT_ITEM_ID)
BeeRun("/cleartarget")
end
lastScanTime = 0 -- 拾取后立即触发寻敌
return true
end
return false
end
-- 3. 主动360°寻敌(核心:无目标时主动找)
local function ActiveFindEnemy()
local currentTime = GetTime()
-- 控制寻敌频率,避免刷屏
if currentTime - lastScanTime < SCAN_INTERVAL then
return false
end
lastScanTime = currentTime
-- 步骤1:先转向身后,覆盖360°
BeeRun("/run SetFacing(180)")
BeeRun("/run C_Timer.After(0.1, function() end)")
-- 步骤2:遍历附近所有目标(优先攻击范围内)
for i = 1, 40 do -- 扩大遍历数量,确保覆盖
local unitID = "target" .. i
if UnitExists(unitID)
and UnitIsEnemy("player", unitID)
and not UnitIsDeadOrGhost(unitID)
and CheckInteractDistance(unitID, 4) -- 攻击距离内
then
BeeRun("/target " .. unitID)
BeeRun("/face target")
return true
end
end
-- 步骤3:兜底:找最近的敌对目标(全局)
BeeRun("/cleartarget")
BeeRun("/targetenemy [noharm][dead]") -- 强制找活的敌对目标
if UnitExists("target") and not UnitIsDeadOrGhost("target") then
BeeRun("/face target")
return true
end
return false
end
-- 4. 强制攻击(无拦截,保证释放)
local function ForceAttack()
-- 无目标时先主动寻敌
if not UnitExists("target") or UnitIsDeadOrGhost("target") then
ActiveFindEnemy()
return
end
-- 1. 维持暗影形态
local buffs = BeeUnitBuffList("player")
if not BeeStringFind(buffs, "暗影形态", 1) then
BeeRun("/cast 暗影形态")
end
-- 2. 强制面向目标(关键:避免脱战/放不出技能)
BeeRun("/face target")
-- 3. 启用平砍兜底
BeeAttack(0)
BeeRun("/run SetCVar(\"autoAttack\", 1)")
-- 4. 暴力释放主攻技能(服务器自动处理CD)
BeeRun("/cast " .. MAIN_SKILL)
end
-- ===================== 核心逻辑(主动攻击+拾取)=====================
local function AutoFight()
-- 优先级1:目标死亡→拾取
if LootDeadTarget() then
return
end
-- 优先级2:无论是否有目标,强制攻击/寻敌(核心:主动攻击)
ForceAttack()
end
-- 启动脚本(魔蜂高频执行,主动寻敌+持续攻击)
AutoFight()
|