Перейти к содержимому

循环构建器

更新于 2026年10月18日

循环构建器是 KeyRota 中的一个窗口,无需手写代码即可在其中组装高级循环:带标记的槽位、光环、规则,旁边同步显示 KRC 文本和 JSON。本文档同时适用于 Windows 和 macOS,截图取自 Windows,展示的是示例中的奇袭团队副本循环。

打开构建器#

  • 你的循环。 在主窗口的“输出循环”区块中选择配置,然后点击“设置”。
  • 新循环。 “新建”——“在构建器中…”。专精取自游戏或当前配置。第一次保存时,循环会成为一个配置。
  • 从文件或剪贴板。 “新建”——“从文件…”可接受 KRC 文本(.txt)、循环 JSON 和 KeyRota 配置文件;“新建”——“从剪贴板”则从剪贴板读取同样的内容。然后点击“设置”,在构建器中打开新配置。
构建器中的新循环:“常规”页面,尚无槽位和规则
新循环:“新建”——“在构建器中…”

对于 Blizzard 配置,构建器只显示名称和按键延迟:主按钮由游戏决定。“创建自定义循环”会新建一个带高级循环的配置;Blizzard 配置仍保留在列表中。

构建器中的 Blizzard 配置:配置名称、按键延迟和“创建自定义循环”
Blizzard 配置:只有名称和延迟

窗口布局#

  • 左侧是各个页面:“常规”“槽位”“光环”“规则”(附规则数量)和“文本和 JSON”。页面上方显示“自定义循环”和所选专精。
  • 右侧是所选页面。
  • 底部是状态栏:显示循环是否正常(“循环正常:15 条规则,11 个槽位,10 个光环”)、是否有未保存的更改;出错时显示出错位置和“查看”按钮。右侧是“关闭”和“保存”。

在点击“保存”之前,任何更改都不会生效(在 Windows 上也可以按 Ctrl+S)。

常规#

“常规”页面:配置、专精、循环名称、忽略主图标、按键延迟
“常规”页面
控件作用
配置名称配置在主窗口循环列表中显示的名称。
专精决定循环的资源(能量、连击点数、怒气…)以及 Better Assistant 配置的职业和专精。更改专精会替换资源,除非规则中读取了原专精的资源(生命值不算)。
循环名称KRC 文本的第一行(rotation "…"),显示在 KeyRota 日志中。不能包含双引号。适合写上版本号,例如“奇袭 v1.3”。
忽略主图标开启:KeyRota 只按规则按键;没有符合的规则时就等待。关闭:此时改按游戏推荐。自定义循环通常开启此项:等待(例如攒能量)是正常的。
按键延迟每次按键前稍作停顿,像真人一样:“无”“固定”(间隔 0–1000 毫秒)或“随机”(范围 0–1000 毫秒)。“也用于打断和防御”会对打断和防御技能应用同样的停顿。
“常规”页面下半部分:Better Assistant 区块、敌人计数半径、仅计入战斗中的敌人和描述
Better Assistant 和描述
控件作用
配置:…Better Assistant 配置字符串的摘要:专精、法术数量和光环数量。
根据槽位和光环生成根据槽位的法术 ID、每个槽位的“Better Assistant 显示条件”、按顺序排列的光环、专精、半径和“仅计入战斗中的敌人”,生成 Better Assistant 配置字符串。如果已经粘贴了同一专精的配置,则保留它的其他设置。
从剪贴板粘贴现成的配置字符串。它的专精必须与循环的专精一致。
复制复制字符串,以便粘贴到游戏中。
敌人计数半径(码)1–100,默认 8。用于“附近敌人数”条件(enemies)。
仅计入战斗中的敌人默认开启:尚未进入战斗的敌人不计入。
描述循环备注:KRC 文本中以 # 开头的行。不影响循环运行。

按钮下方会显示警告:规则中使用的哪些槽位没有法术 ID(它们不会进入 Better Assistant 配置),以及已粘贴的配置中哪些内容与循环不符。

重要

Better Assistant 配置中的光环必须从第一个开始连续排列。如果光环 3 没有 ID 而光环 4 有,配置将无法生成:“光环 3 没有法术编号”。请填写 ID,或重新为光环编号。

游戏中的 Better Assistant 配置#

循环的槽位 N 就是 Better Assistant 中的槽位 N,光环 N 就是其列表中的光环 N。配置字符串会按正确的顺序把你的槽位和光环放进去。

  1. 在“常规”页面上点击“根据槽位和光环生成”,然后点击“复制”。
  2. 在游戏中输入 /ba,打开 Profile 选项卡,粘贴字符串,点击 Apply 并确认。
  3. 每次更改槽位或光环(ID、顺序、“有目标时”/“战斗中”)后,都要重新生成并粘贴配置。

槽位#

“槽位”页面:左侧是 12 个位置,右侧是选中的槽位 10 消失,ID 1856
“槽位”页面

左侧是 12 个位置:编号、名称、法术 ID、标记(“不占 GCD,队列内”),槽位未被任何规则使用时显示“未使用”。空位置显示“空”;选中它即可看到“添加槽位”按钮。

控件作用
名称法术在游戏中的名称。显示在规则列表和日志中。
法术 IDWowhead 链接中的数字:wowhead.com/spell=1856/vanish 中的 1856。Better Assistant 据此把法术放入此槽位。
Better Assistant 显示条件“有目标时”或“战斗中”。只有 Better Assistant 显示该槽位时,槽位才算就绪。“战斗中”用于没有目标时也必须能用的治疗和防御技能。
按键方式四个标记开关,见下表。
文本中的名称槽位在规则和 KRC 文本中的名称:字母、数字和 _,不含空格。
注释文本中声明行末尾的注释。
使用它的规则按下或读取该槽位的规则。只有槽位未被使用时,才能“移除槽位”。

要让 KeyRota 按下某个槽位,它的法术必须放在游戏中的动作条上并绑定按键:KeyRota 从你的动作条读取按键。也可以使用带 #showtooltip 名称 的宏。没有按键的槽位永远不会被按下。

按键方式:标记#

消失槽位的“按键方式”开关:已开启“不占 GCD(O)”和“法术队列窗口(Q)”
槽位标记:不占 GCD 和法术队列窗口
开关作用适用场景
无标记槽位像普通法术一样按下:在公共冷却即将结束时、法术队列窗口内。几乎所有占用 GCD 的法术。
仅手动(M)KeyRota 从不自动按此槽位,并会跳过它的规则。你亲自按下它的按键时,循环会暂停。只想自己按的技能。
引导(C)该法术引导期间,KeyRota 不按任何键,也不会打断引导。引导法术,例如影舞步。
不占 GCD(O)不等待公共冷却:立即按下,即使正处于 GCD 中。不占 GCD 的法术,例如时运继延。
法术队列窗口(Q)仅与“不占 GCD”一起使用:在 GCD 的最后、法术队列窗口内按下。第二行占用 GCD 的宏(冲动 + 影舞步),以及需要上一次攻击结果的按钮(君王之灾之后的消失)。

所有标记组合及其 JSON 写法请参阅槽位标记。

光环#

“光环”页面:光环 1“目标身上的锁喉 [703]”,ID 703,文本中的名称 Garrote_DoT,用于规则 3、4、5、7、8、10
“光环”页面

光环是规则读取的你自己的增益效果,以及你在目标身上的减益效果。循环的光环 N 就是 Better Assistant 列表中的光环 N。

控件作用
名称光环的名称,显示在规则中。建议在方括号中附上 ID:“目标身上的锁喉 [703]”。
法术 ID光环在 Wowhead 上的编号。Better Assistant 会在你自己的增益效果和你在目标身上的减益效果中查找它。
文本中的名称、注释与槽位相同。
使用它的规则读取该光环的规则。只有未被使用的光环才能“移除光环”。

注意

光环的 ID 可能与施加它的法术 ID 不同。消失法术是 1856,它给予的增益效果是 11327;潜行是 1784,带“诡诈”天赋的潜行是 115191。请在 Wowhead 上核对增益或减益效果本身的 ID。

只有你自己的光环可见:你给自己施加的增益效果,以及你施加在目标身上的减益效果。规则看不到其他玩家给你的增益效果,也看不到其他玩家施加在目标身上的减益效果。

规则#

“规则”页面:左侧是 15 条规则,右侧是规则 4 死亡印记及其条件组
“规则”页面

规则从上到下检查:KeyRota 按下第一条已满足且法术可以施放的规则;如果无法施放(冷却、资源、距离),就检查下一条。

列表上方的工具栏:

按钮作用
+在所选规则下方新建规则。新规则按第一个槽位,暂时没有条件。
复制规则在下方创建该规则的副本。
删除规则(垃圾桶图标)删除规则。
上移、下移向上移动(更早检查)或向下移动(更晚检查)。

列表中的每条规则都会显示编号(即优先级)、槽位、名称和组数;有错误的规则带有红色标记。

所选规则:

控件作用
按下规则满足时要按的槽位。
名称规则触发时显示在日志中。
描述KRC 文本中规则上方的备注。
何时按下条件组:只要有一个组满足,规则即满足(或);组内所有条件都满足,组才满足(且)。
割裂规则的条件组:组 1 和组 2 之间以“或”分隔
“或”组与“且”条件

每个组都有“组 N”标题、“组注释”输入框,以及“复制组”和“删除组”按钮。条件行包括检查对象、属性、比较方式和数值;点击叉号可移除条件。“+ 条件”向组中添加条件,“+ 组(或)”添加新组。一个组最多 16 个条件,一条规则最多 16 个组:达到上限时,按钮会被禁用。没有组的规则会显示“无条件:只要法术可以施放,规则就会触发。”

检查对象属性KRC 文本中的写法
光环(循环中的每个光环)存在、不存在、剩余时间(%)、层数Garrote_DoT.up、.down、.duration <= 30、.stacks >= 3
槽位(每个槽位)就绪、冷却中、冷却(%)、充能次数、高亮、未高亮Kingsbane.ready、.oncd、.cd <= 3、.charges >= 2、.glow、.noglow
资源玩家和目标的生命值、专精的资源(%)PlayerHP <= 40、Energy >= 70
战斗:附近敌人数数量enemies >= 3
战斗:与目标的距离码target.distance <= 8
快速设置面板开启、关闭aoe == 1、st == 1、cd == 1、defensives == 1、ground_spells == 1、movement == 1

比较方式:<、≤、=、≥、>;数值为 0 到 100。新条件默认为第一个光环“存在”;更改检查对象后,属性和数值会重置为默认值(资源为 ≥ 50,敌人数为 ≥ 2,距离为 ≤ 8)。各条件的详细说明请参阅条件。

错误和状态栏#

规则 9 中的错误:没有条件的组 1 以红框标出,状态栏显示“规则 9,组 1:组中没有条件”和“查看”
错误:没有条件的组
  • 绿色:“循环正常:…”,表示没有错误,可以保存。
  • 红色会指出出错位置:“规则 9,组 1:组中没有条件”。点击“查看”即可跳转到该位置。列表中会标记该规则,并用红框标出该组。
  • 有错误的循环无法保存:“有错误的循环无法保存:请修正下方标出的问题”。
  • 循环运行期间无法保存:“请先停止输出循环再保存”。

文本和 JSON#

“文本和 JSON”页面的 KRC 文本模式:循环文本开头的描述和 buff1–buff7 声明
KRC 文本
“文本和 JSON”页面的 JSON 模式:循环 JSON 开头的 format、version、title、specID、ignoreMainIcon、enemies 和 notes
循环 JSON
控件作用
KRC 文本 / JSON切换视图。
复制复制全部文本或 JSON。
粘贴用剪贴板内容替换循环:KRC 文本、循环 JSON 或 KeyRota 配置。
打开…从 .txt 或 .json 文件加载循环。
保存…将当前视图保存为文件:文本存为 .txt,JSON 存为 .json。

在输入框中所做的修改如果没有错误,会立即生效;有错误时,错误信息显示在输入框下方,其他页面保留最后一个有效版本。

哪些内容只保存在 JSON 中。 KRC 文本不包含法术 ID、槽位标记、“有目标时”/“战斗中”、专精、“忽略主图标”和敌人计数设置。编辑文本时,这些设置保留在编号相同的槽位和光环上。JSON 则保存全部内容。粘贴或打开循环的新版本时,如果新版本中没有这些设置,编号相同的槽位和光环会保留原有的 ID、显示条件和标记。

保存和关闭#

  • “保存”(在 Windows 上也可以按 Ctrl+S)会把循环写入配置,按钮会短暂显示“已保存”。新循环会成为一个配置,并在列表中被选中。
  • 有未保存的更改时关闭窗口,会询问“保存更改?”:“保存”“不保存”或“取消”。关闭 KeyRota 时也是如此。
  • 主窗口中的“导出”会将配置连同其循环保存为 JSON;“导入”既接受 KeyRota 配置,也接受单独的循环 JSON。

示例:从零开始构建循环#

我们来构建一个简单的奇袭循环:两个流血效果(锁喉和割裂)、一个生成技能(毁伤)、一个消耗技能(毒伤)、一个防御技能(生命值 40% 及以下时使用猩红之瓶),以及由 Burst 按钮控制的冷却技能(死亡印记)。

1. 新建配置。 “输出循环”——“新建”——“在构建器中…”。

2. 常规。 配置名称:“奇袭:示例”。专精:奇袭(资源变为 PlayerHP、TargetHP、Energy、Combo_Points)。循环名称:“奇袭:示例 v1”。忽略主图标:开启。

3. 槽位。 按下表逐行操作:在左侧选择位置,点击“添加槽位”,填写“名称”“法术 ID”和“文本中的名称”;为猩红之瓶选择“战斗中”。不需要任何标记。

槽位名称ID文本中的名称Better Assistant 显示条件
1锁喉703Garrote有目标时
2割裂1943Rupture有目标时
3毒伤32645Envenom有目标时
4毁伤1329Mutilate有目标时
5死亡印记360194Deathmark有目标时
6猩红之瓶185311Crimson_Vial战斗中

4. 光环。 在“光环”页面上同样操作:

光环名称ID文本中的名称
1目标身上的锁喉 [703]703Garrote_DoT
2目标身上的割裂 [1943]1943Rupture_DoT
3毒伤 [32645]32645Envenom_Buff
4目标身上的死亡印记 [360194]360194Deathmark_DoT

5. 规则。 在“规则”页面上点击“+”,在“按下”中选择槽位并填写“名称”。“+ 组(或)”会添加一个带默认条件的组:修改检查对象、属性、比较方式和数值。“+ 条件”会向同一组添加下一个条件。规则按以下顺序排列:

#按下组(或),组内条件(且)
1猩红之瓶“治疗 / 防御”开启,玩家生命值 ≤ 40
2死亡印记Burst 开启,“目标身上的锁喉”存在,“目标身上的割裂”存在,“毒伤”存在
3锁喉(1)“目标身上的锁喉”不存在;(2)“目标身上的锁喉”存在,剩余时间 ≤ 30%
4割裂(1)连击点数 ≥ 70,“目标身上的割裂”不存在;(2)连击点数 ≥ 70,“目标身上的割裂”存在,剩余时间 ≤ 30%
5毒伤(1)连击点数 ≥ 70,“毒伤”不存在;(2)连击点数 ≥ 70,“毒伤”存在,剩余时间 ≤ 20%;(3)连击点数 ≥ 70,能量 ≥ 70;(4)连击点数 ≥ 70,“目标身上的死亡印记”存在
6毁伤连击点数 < 70

原因:

  • 防御技能放在最前:生命值低时,猩红之瓶比伤害更重要。它只在快速设置面板上的“治疗 / 防御”开启时触发。
  • 死亡印记由 Burst 控制:cd == 1 是 Burst 按钮(Windows 上为 F3,macOS 上为 ⌃⇧B),而不是法术的冷却。关闭 Burst,死亡印记就会等待。
  • DoT 与刷新窗口:不存在的光环剩余时间为 0,因此刷新需要两个组:“没有 DoT”和“DoT 存在且剩余 ≤ 30%”。
  • 5 个连击点 = 70:连击点上限为 7 时,5 点是 71%;无论怎样取整,阈值 70 都成立。对照表请参阅资源。
  • 毁伤放在最后,并且只在少于 5 个连击点时使用,这样在毒伤等待条件满足期间不会浪费能量。

6. 检查。 状态栏应显示“循环正常:6 条规则,6 个槽位,4 个光环”。打开“文本和 JSON”页面,即可看到与下方相同的内容。

7. Better Assistant 配置。 “常规”——“根据槽位和光环生成”——“复制”;在游戏中:/ba——Profile——粘贴——Apply。

8. 按键。 把这六个法术放到动作条上并绑定按键。

9. 运行。 点击“保存”,关闭窗口,选择配置“奇袭:示例”,然后启动循环(Windows 上按 F1,macOS 上按 ⌃⇧Space)。如果需要猩红之瓶,请在快速设置面板上开启“治疗 / 防御”;Burst 按钮用于开启和关闭死亡印记。

KRC 文本
rotation "奇袭:示例 v1"

# KeyRota 文档中的示例:两个流血、一个生成技能、一个攒能量的消耗技能,
# 低生命值时的防御,以及由 Burst 按钮控制的死亡印记。
# 连击点按 7 点的百分比计:5 点 = 71%,阈值 70 = 5 点以上。

buff1	Garrote_DoT = "目标身上的锁喉 [703]"
buff2	Rupture_DoT = "目标身上的割裂 [1943]"
buff3	Envenom_Buff = "毒伤 [32645]"
buff4	Deathmark_DoT = "目标身上的死亡印记 [360194]"
slot1	Garrote = "锁喉"
slot2	Rupture = "割裂"
slot3	Envenom = "毒伤"
slot4	Mutilate = "毁伤"
slot5	Deathmark = "死亡印记"
slot6	Crimson_Vial = "猩红之瓶"
resource1	PlayerHP
resource2	TargetHP
resource3	Energy
resource4	Combo_Points

# --- 防御:仅在“治疗 / 防御”开启时 ---
use Crimson_Vial when  # 猩红之瓶
	defensives == 1 and PlayerHP <= 40  # 生命值 40% 及以下

# --- 冷却技能:仅在 Burst 开启时 ---
use Deathmark when  # 死亡印记
	cd == 1 and Garrote_DoT.up and Rupture_DoT.up and Envenom_Buff.up  # Burst 开启,流血和毒伤都在

# --- 流血 ---
use Garrote when  # 锁喉
	Garrote_DoT.down  # 没有流血
	or
	Garrote_DoT.up and Garrote_DoT.duration <= 30  # 刷新窗口:剩余 30% 及以下

use Rupture when  # 割裂
	Combo_Points >= 70 and Rupture_DoT.down  # 5+ 个连击点,没有流血
	or
	Combo_Points >= 70 and Rupture_DoT.up and Rupture_DoT.duration <= 30  # 5+ 个连击点,刷新窗口

# --- 消耗:5+ 个连击点,攒能量 ---
use Envenom when  # 毒伤
	Combo_Points >= 70 and Envenom_Buff.down  # 没有增益
	or
	Combo_Points >= 70 and Envenom_Buff.up and Envenom_Buff.duration <= 20  # 增益快结束
	or
	Combo_Points >= 70 and Energy >= 70  # 避免能量溢出
	or
	Combo_Points >= 70 and Deathmark_DoT.up  # 目标身上有死亡印记

# --- 生成技能:少于 5 个连击点 ---
use Mutilate when  # 毁伤
	Combo_Points < 70  # 少于 5 个连击点
JSON
{
  "format": "keyrota-rotation",
  "version": 1,
  "title": "奇袭:示例 v1",
  "specID": 259,
  "ignoreMainIcon": true,
  "enemies": {"range": 8, "combatOnly": true},
  "notes": [
    "KeyRota 文档中的示例:两个流血、一个生成技能、一个攒能量的消耗技能,",
    "低生命值时的防御,以及由 Burst 按钮控制的死亡印记。",
    "连击点按 7 点的百分比计:5 点 = 71%,阈值 70 = 5 点以上。"
  ],
  "resources": ["PlayerHP", "TargetHP", "Energy", "Combo_Points"],
  "auras": [
    {"n": 1, "alias": "Garrote_DoT", "label": "目标身上的锁喉 [703]", "spell": 703},
    {"n": 2, "alias": "Rupture_DoT", "label": "目标身上的割裂 [1943]", "spell": 1943},
    {"n": 3, "alias": "Envenom_Buff", "label": "毒伤 [32645]", "spell": 32645},
    {"n": 4, "alias": "Deathmark_DoT", "label": "目标身上的死亡印记 [360194]", "spell": 360194}
  ],
  "slots": [
    {"n": 1, "alias": "Garrote", "label": "锁喉", "spell": 703, "show": "target"},
    {"n": 2, "alias": "Rupture", "label": "割裂", "spell": 1943, "show": "target"},
    {"n": 3, "alias": "Envenom", "label": "毒伤", "spell": 32645, "show": "target"},
    {"n": 4, "alias": "Mutilate", "label": "毁伤", "spell": 1329, "show": "target"},
    {"n": 5, "alias": "Deathmark", "label": "死亡印记", "spell": 360194, "show": "target"},
    {"n": 6, "alias": "Crimson_Vial", "label": "猩红之瓶", "spell": 185311, "show": "combat"}
  ],
  "rules": [
    {
      "use": "Crimson_Vial",
      "name": "猩红之瓶",
      "note": ["--- 防御:仅在“治疗 / 防御”开启时 ---"],
      "when": [{"all": ["defensives == 1", "PlayerHP <= 40"], "comment": "生命值 40% 及以下"}]
    },
    {
      "use": "Deathmark",
      "name": "死亡印记",
      "note": ["--- 冷却技能:仅在 Burst 开启时 ---"],
      "when": [
        {
          "all": ["cd == 1", "Garrote_DoT.up", "Rupture_DoT.up", "Envenom_Buff.up"],
          "comment": "Burst 开启,流血和毒伤都在"
        }
      ]
    },
    {
      "use": "Garrote",
      "name": "锁喉",
      "note": ["--- 流血 ---"],
      "when": [
        {"all": ["Garrote_DoT.down"], "comment": "没有流血"},
        {"all": ["Garrote_DoT.up", "Garrote_DoT.duration <= 30"], "comment": "刷新窗口:剩余 30% 及以下"}
      ]
    },
    {
      "use": "Rupture",
      "name": "割裂",
      "when": [
        {"all": ["Combo_Points >= 70", "Rupture_DoT.down"], "comment": "5+ 个连击点,没有流血"},
        {
          "all": ["Combo_Points >= 70", "Rupture_DoT.up", "Rupture_DoT.duration <= 30"],
          "comment": "5+ 个连击点,刷新窗口"
        }
      ]
    },
    {
      "use": "Envenom",
      "name": "毒伤",
      "note": ["--- 消耗:5+ 个连击点,攒能量 ---"],
      "when": [
        {"all": ["Combo_Points >= 70", "Envenom_Buff.down"], "comment": "没有增益"},
        {"all": ["Combo_Points >= 70", "Envenom_Buff.up", "Envenom_Buff.duration <= 20"], "comment": "增益快结束"},
        {"all": ["Combo_Points >= 70", "Energy >= 70"], "comment": "避免能量溢出"},
        {"all": ["Combo_Points >= 70", "Deathmark_DoT.up"], "comment": "目标身上有死亡印记"}
      ]
    },
    {
      "use": "Mutilate",
      "name": "毁伤",
      "note": ["--- 生成技能:少于 5 个连击点 ---"],
      "when": [{"all": ["Combo_Points < 70"], "comment": "少于 5 个连击点"}]
    }
  ]
}

下载此示例:JSON、KRC 文本。可以在“文本和 JSON”页面上用“打开…”打开,或通过“新建”——“从文件…”打开。