喂给豆包第四版函数手册,写了一段代码,不知道正确不
以下是不使用自定义变量,直接使用手册中可调用函数来实现 “当敌对目标的目标不是坦克玩家时,若清算技处于非冷却状态,对目标释放清算技能,若清算技能处于冷却状态,且正义防御处于非冷却状态,则对敌对目标的目标释放正义防御” 功能的 Lua 代码:
```lua
-- 遍历团队成员找出坦克玩家
local isTargetTargetTank = false
for i = 1, 40 do
local raidUnit = "raid" .. i
if UnitExists(raidUnit) then
local class = BeeUnitClassBase(raidUnit)
local isTank = false
if class == "战士" then
isTank = BeeGetShapeshiftFormInfo(2)
elseif class == "德鲁伊" then
isTank = BeeGetShapeshiftFormInfo(1)
elseif class == "圣骑士" then
isTank = BeeUnitBuff(raidUnit, "正义之怒")
elseif class == "死亡骑士" then
isTank = BeeUnitBuff(raidUnit, "寒冰灵气")
end
if isTank and UnitIsUnit("targettarget", raidUnit) then
isTargetTargetTank = true
break
end
end
end
-- 如果敌对目标的目标不是坦克玩家
if not isTargetTargetTank then
-- 检查清算技能是否冷却
if BeeSpellCD("清算") == 0 then
-- 清算技能非冷却状态,释放清算技能
if BeeIsRun("清算", "target") then
BeeRun("清算", "target")
end
else
-- 清算技能冷却,检查正义防御是否冷却
if BeeSpellCD("正义防御") == 0 then
-- 正义防御非冷却状态,对敌对目标的目标释放正义防御
if BeeIsRun("正义防御", "targettarget") then
BeeRun("正义防御", "targettarget")
end
end
end
end
```
### 代码解释:
1. **遍历团队找出坦克玩家并检查敌对目标的目标是否为坦克**:
- 使用 `for` 循环从 `1` 到 `40` 遍历团队成员(`raid1` 到 `raid40`)。
- 对于每个团队成员,使用 `BeeUnitClassBase` 函数获取其职业,然后根据不同职业使用相应的条件判断是否为坦克(如战士的防御姿态、德鲁伊的熊形态等)。
- 如果该成员是坦克,并且通过 `UnitIsUnit` 函数判断敌对目标的目标(`targettarget`)就是这个坦克成员,将 `isTargetTargetTank` 标记为 `true` 并跳出循环。
2. **技能释放逻辑**:
- 如果 `isTargetTargetTank` 为 `false`,表示敌对目标的目标不是坦克玩家。
- 首先使用 `BeeSpellCD("清算")` 检查清算技能的冷却状态,如果冷却时间为 `0`,并且通过 `BeeIsRun("清算", "target")` 检查可以对目标释放清算技能,则调用 `BeeRun("清算", "target")` 释放清算技能。
- 如果清算技能处于冷却状态,再使用 `BeeSpellCD("正义防御")` 检查正义防御技能的冷却状态,如果冷却时间为 `0`,并且通过 `BeeIsRun("正义防御", "targettarget")` 检查可以对敌对目标的目标释放正义防御技能,则调用 `BeeRun("正义防御", "targettarget")` 释放正义防御技能。
### 注意事项:
- 此代码假设在团队副本环境下运行,对于 5 人小队,需要将 `raid` 前缀改为 `party` 并调整遍历范围。
- 要确保 `"清算"`、`"正义防御"`、`"正义之怒"` 和 `"寒冰灵气"` 是游戏中准确的技能和 buff 名称,若名称有变化需相应修改代码。
- 代码中使用的形态代码(防御姿态代码 2、熊形态代码 1)可能因游戏版本不同而有所变化,需根据实际情况进行调整。 调教的不错啊,我喂给DS天知道它写了个啥
页:
[1]