外观 先读这几句流水线各部分模拟器
设计稿 · 冷却管理器 · 卡 #1501

冷却管理器模拟器

给老板在游戏外试玩的页面:前面几节讲现在做了什么、每一部分的设计原则;最后一节是模拟器,左边的画面完全照冷却管理器的工作流程走,右边是设置页的复刻(弹窗等几处是替身),改什么画面就变什么。职业:牧师、萨满,技能来自法术池的全部数据。

这是模拟,不是游戏:时间是页面自己走的;游戏里还没验证的地方(圆形遮罩、动画细节、计时器文字在几个位置)以游戏为准。

先读这几句

  1. 测试版,默认关闭。设置菜单第一项是“Aura 冷却管理器·测试版”,勾选启用才有东西;开启时会提示可以和暴雪冷却管理器一起用,但建议把暴雪的关掉。
  2. 一个面板像一条动作条。选横排、竖排或进度条,选每排几个、几排(最多 8 个面板,每个最多 10×8 格);点一个格子就设置它,任意一格都行,不用从第一格排起。
  3. 每个格子选一种“来源”:技能冷却和层数、我对自己的 buff、我对目标释放的 buff、我对队友的 debuff(虚弱灵魂这一类)、物品(药水、治疗石、饰品 1/2)。多等级的法术:技能冷却里选“全等级”就自动跟你学会的最高等级,选具体等级就只跟那一级(buff 的“全等级”则是任何一级都算)。
  4. 每个格子都能调样子:图标方/圆、计时器位置和大小、层数样式、四种透明度,以及冷却好时的九种效果、结束时的声音、最后几秒的数字变色(后两项 buff 格子没有)。
  5. 敌人身上我放的 debuff 不放进格子。它是单独的一整组,外加一个测试面板:战斗中没办法只挑某一个法术,所以显示的是“我放的所有 debuff”,测试面板里的勾选只影响预览。队友身上的 debuff 是例外:虚弱灵魂这一类放得进格子,来源叫“我对队友的 debuff”。
  6. 战斗中游戏把冷却时间、buff、层数变成“秘密值”。插件读不到也不能比较,只能交给游戏去画;所以战斗中图标、转圈、数字照常,但 buff 格子和整组 debuff 的改动要等脱战才生效,也读不到“身上现在有什么”。
  7. 做得到:冷却结束那一刻的闪光、放大缩小、淡入淡出、声音,以及最后几秒数字变色。做不到:战斗中“结束前几秒”响声音;整组 debuff 真实图标上的边框发光、放大缩小、闪烁(只有预览和屏幕测试里有)。
  8. 小队/团队大减伤面板是另一个独立功能。生效中的大减伤由游戏画;别人的冷却游戏不告诉插件,所以是估计的(你自己的一行是真的);牧师、萨满、术士自己没有大减伤,不显示这几个职业的成员行。

这个页面是游戏外的模拟器,不是游戏:布局、倒计时、效果和设置项照游戏里现在的做法来做,时间是页面自己走的。凡是标了(游戏里还没验证)的地方,以游戏里的实际表现为准。

它是怎么工作的(一条流水线)

模拟器里的每一格,都是照下面这七步在走。

  1. 事件 — 游戏发出事件:进入/离开战斗、换目标、冷却/充能/可用变化、背包装备变化等。
  2. 标记“脏” — 事件本身什么都不画,只在面板上记一笔“该刷新了”。
  3. 每 0.1 秒刷新 — 一个计时器每 0.1 秒看一眼有没有“脏”,有就刷新所有面板的所有格子(测试/预览时固定每 0.5 秒刷一次)。刷新只更新内容,不重新排版。
  4. 来源回答 — 每个格子问它的来源:图标、名字、冷却(游戏的“计时对象”)、层数、可用与否、要不要发光。来源只回答,不画。
  5. 格子把它画出来 — 转圈和倒计时数字由游戏画,数字是向上取整的整数;层数 0 和 1 不显示(充能法术例外);不可用 → 图标变成“不可用透明度”;要发光 → “可用时的效果”亮。buff 格子(包括队友的 debuff)不走这一步:由游戏的光环容器画,格子只垫一个变暗的图标。
  6. 冷却走完补一次刷新 — 游戏没有“冷却结束”事件,所以格子自己的冷却控件走完时(秘密值也会触发)响“结束时的声音”,0.05 秒后补一次刷新(模拟器只是标记“脏”,最多再等一个 0.1 秒),这时效果才亮(游戏里还没验证:用接口给的计时对象时是否每次都触发)。
  7. 进入战斗后 — 冷却时间、充能、可用与否、光环变成“秘密值”:只能交给游戏画,不能比较、不能计算。光环容器不能新建、改大小位置、显示/隐藏,这些活欠到脱战再补;战斗中变的只有透明度、文字、颜色和游戏自己画的东西。

脱战读得到 / 战斗中是秘密值 / 插件怎么办

数据脱战读得到战斗中是秘密值插件怎么办
冷却时间是,普通数字🔒 是不读。把游戏给的计时对象交给格子的冷却控件,转圈和数字由游戏画;脱战和战斗走同一条路。
充能数是,普通数字🔒 是不比较。“有几格充能上限”不是秘密,用来判断是不是充能法术;当前层数直接交给文字控件显示。
可用与否(法力、姿态…)是,普通布尔值🔒 是不做 if。用 SetAlphaFromBoolean 让游戏决定图标亮还是暗。“在冷却还是只在等公共冷却”(isActive / isOnGCD) 从不是秘密,可以直接判断。
光环有没有 / 层数 / 剩余时间是(只用来脱战时列“身上有”的清单)🔒 是不看。交给游戏的光环容器 (AuraContainer),按过滤词挑光环并画图标、转圈、数字、层数。
物品冷却是,普通数字不一定:接口文档没标成秘密,先当普通数字用(游戏里还没验证)优先读物品自己的开始时间和时长;读不到或是秘密值,就改用“物品使用效果”那个法术的计时对象。

整体与面板(#1488 #1490 #1498)

一个像动作条的空面板:先摆好格子,再点任意一格往里放东西。

做了什么

  • 设置菜单第一项“Aura 冷却管理器·测试版”;总开关“启用 P5UI Aura 冷却管理器(测试版)”默认关,勾选时弹窗说明可与暴雪冷却管理器共存,但建议关掉暴雪的。
  • “+ 新建面板”最多 8 个,可“改名”(最多 20 字)、“删除这个面板”(要确认)。
  • “布局”横排 / 竖排 / 进度条;“每排几个” 1–10、“几排” 1–8(最多 80 格);“格子大小” 20–80、“格子间距” 0–20、“进度条长度” 80–320、“面板缩放 (%)” 50–200、“水平位置 / 垂直位置”。竖排是同一张网格,编号先往下数。
  • 进度条布局:每格一个图标加一条进度条,左边名字、右边倒计时,条按剩余时间走(buff 格子的条永远是满的,有没有 buff 只看图标亮不亮)。设置页的“舞台”画出选中的面板,点格子选中,空格子是“+”。
  • 设置窗口开着时,所有面板的全部格子(用到的和空的“+”)都显示在屏幕上,按住面板就能拖,会吸附屏幕边线、中线、别的框体和暴雪编辑模式的网格;位置存进配置档;关掉设置窗口自动锁定。点屏幕上的格子,设置页跳到“格子”并选中它;只设第 5 格也行。
  • “测试/预览”让所有格子显示示例冷却、层数和效果,离开这一页或进入战斗自动关闭。来源里还有“测试”:12 秒循环的假冷却,战斗外用来试效果、声音和变色。

设计原则

  • 面板像动作条 — 老板要“可混合”,技能冷却、buff、物品能放进同一个面板。
  • “来源”和“显示”分开 — 来源只回答,怎么画归格子;几个开发能各做各的来源文件。
  • 设置页的舞台和屏幕上的面板用同一种格子 — 所见即所得。
  • 位置存格子号,不存“排到第几个” — 老板要在 x×y 的任意位置配置。
  • 设置窗口开着才显示全部格子并能拖,关了自动锁;窗口开着时格子不淡于 50% — 老板在 #1498 里说新建面板后看不到框体。
  • 默认关闭,没开时什么都不画 — 测试版不能影响现有功能。
老板的原话
「以上 除了第二类 其他都要做成可混合的panel比如用户可以选择横向几个按钮几排按钮 然后你提供一个类似空的action bar 然后可以创建新的类似action bar 之后用户点击action bar里面的一个位置 打开配置 允许填入一三四类任意技能 配置计时器 发光效果 等等 可用不可用透明度等等」#1488
「这个做成一个单独的横排或竖排或progress bar」#1488
「做artifact的同时直接做一版出来吧 create ticket然后让dev做一版真实的出来 然后把这个加入到setting菜单第一项P5UI Aura 冷却管理器 然后标明测试版 然后默认关闭 开启后提示可以和bkizzard cdm共存 但建议关闭 做一版今晚直接上线 明天我上线测试」#1488(负责人转述老板)
「现在点击新建面板之后并不会出现一个虚拟的框体 只有在开启暴雪框体移动时才会出现 这个要做成点击setting菜单就出现全部虚拟框体 使用的格子和没有使用的格子 并 允许拖动 然后如果打开暴雪布局管理器则支持贴着线拖动 这个配置要计入profile中 然后关闭setting文件夹自动锁住P5UI冷却管理器的位置 打开setting时候可以移动」#1498
「而且还有一个额外的需求, 就是如果用户类似像图中创建了x * y的格子 他可以在格子中的任意位置配置不需要从第一个开始这么往后排」#1498
「有很多文字的overlap 有很多button的text truncated 需要Avoid这些 把button显示全 然后fix texts的overlap」#1499
现在的限制 / 还没验证 / 等老板反馈
  • #1499 进行中,还没并进来:设置页有文字重叠、按钮被截断(老板的截图里“第 3 个格子”标题和“来源”叠在一起,来源按钮被截)。中英文两种语言都要查。
  • 设置窗口关着但暴雪编辑模式或 P5UI 解锁开着时,面板仍能拖 — 按“和别的框体一样”保留,等老板确认。
  • “任意位置”目前 = 任意一格、任意顺序设置;格子不会自动靠拢,也不能拖格子换位置。
  • (游戏里还没验证)圆形图标遮罩、进度条按计时对象走、计时器文字的四个位置、点手柄选格子和拖动是否分得开、吸附本身。
  • 设置页里有几处是替身:添加法术、改名、删除面板在游戏里是弹窗,模拟器是页内的一行(文字照弹窗);面板那一行多了个“面板”标签;位置滑块固定 ±640 / ±360,游戏里是屏幕宽高的一半(随屏幕和界面缩放变)。
  • 吸附是简化的:游戏里面板还吸面板边到中线、别的框体的边和中线、暴雪的网格线,按住 Shift 不吸附;模拟器只吸面板中心到中线、面板边到屏幕边(7 个界面单位)。
  • 关设置窗口会结束“测试/预览”和“在屏幕上显示测试”:后者游戏代码里明确这样写(关设置窗口自动关闭);前者(格子的预览)是按暴雪的页面 OnHide 约定推断的,游戏里还没验证。
  • 和早先设计稿不同:进度条是“剩余时间条”,越走越短,好了是满条不写字;没有“冷/目/我/物”小标;默认脱战透明度 100、默认效果“无”(设计稿是 45 和“闪烁”)。

去模拟器试一试

第一部分:自己的技能冷却和层数(#1490)

选一个自己的技能,格子显示它的冷却转圈、充能层数、可用与否,冷却好时“可用时的效果”亮。

做了什么

  • 来源“技能冷却和层数”:下拉里是你法术书里学会的、非被动、非别的专精、非专业技能的法术,按名字排(模拟器没有法术书,下拉只有法术池里的,见下面的限制)。
  • “按名字或编号添加…”可输入名字、编号或粘贴链接,没学会的也能加(格子变暗)。“等级”下拉:“全等级(自动跟最高)”或具体某一级,已学等级不到 2 个时不能选;输入编号或链接一律按“全等级”。
  • 显示:冷却转圈(不算公共冷却);有充能的法术显示充能数,1 和 0 也显示(模拟器不演示充能);法力、姿态不够就变暗到“不可用透明度”;冷却结束时“可用时的效果”亮。

设计原则

  • 冷却不读数字,交给游戏的计时对象 — 战斗中冷却数字是秘密值,只有“画”能用;有充能时取下一格的恢复时间。
  • 全等级 = 每次刷新按名字找最高的已学等级,具体等级 = 锁定那一级 — 老板的原话;升级后格子自己换。
  • “可用”只看从不是秘密的两个标志:不在冷却,或只在等公共冷却,就算可用 — 战斗中只有这两个能直接判断。
  • 没学会 → 变暗,不隐藏 — 隐藏了用户会以为设置丢了(开发者的取舍,等老板确认)。
  • 游戏没有“冷却结束”事件,用格子冷却控件走完的信号补一次刷新 — 效果和声音才能准时触发。
老板的原话
「第一部分 我自己的技能冷却和层数 要求可以配置计时器样式和位置 堆叠的样式和位置 这一部分可配置 用户可以从已有的list中选择出法术」#1490(#1488 共用段)
「主意有些法术是多等级 给用户提供单独选某一个等级和提供一个全等级选项 选了全等级就自动track最高等级的法术 特定等级track特定等级的法术」#1490(#1488 共用段)
「现在的痛点是 暴雪的默认冷却管理器是不显示一些低等级法术 我用萨满 大地震击和火焰震击都不显示 也没办法添加」#1487
现在的限制 / 还没验证 / 等老板反馈
  • 法术列表现在只来自法术书。法术池(#1495)还没接到这个来源:接口留着了,但代码里还没有地方调用它。
  • 模拟器的法术下拉只有法术池里的法术(有自己冷却或会挂光环、已学会的,按名字排);游戏里是整本法术书,快速治疗、治疗术、惩击、闪电箭这类也在,模拟器里没有,手输名字也只认池里的。
  • 模拟器不演示充能:池里没有充能数据。游戏里 maxCharges 大于 1 的法术显示当前层数,转圈显示下一层的恢复,有层数就发光。
  • 战斗中有充能的法术,层数是秘密值,“可用时的效果”改看是否在冷却,可能比实际晚亮(按代码推断,游戏里还没验证)。
  • (游戏里还没验证)法术书接口的返回值、低等级法术是否共享冷却、已就绪法术和满充能时冷却接口的返回。
  • 等级用下拉、链接编号一律“全等级”,这两个取舍等老板确认。

去模拟器试一试

样式和“可用时的效果”(#1491)

每个格子都能调图标形状、计时器、层数、四种透明度,以及冷却好时的效果、声音和数字变色。

做了什么

  • “图标”方 / 圆;“图标大小” 20–80(不超过面板的格子);“层数样式”角落小字 / 圆角标 / 居中大字。
  • “计时器位置”中 / 下 / 上 / 右侧 / 不显示;“计时器大小” 8–28。数字是向上取整的整数,没有 m:ss 和小数:不到 60 秒显示秒数,之后只显示分钟数(125 秒显示“3”),再往上是小时,不带单位。
  • 四种透明度,默认 100 / 100 / 100 / 40:整格 = 透明度 × (战斗中或脱战),“不可用透明度”只管图标本身。想“只在战斗中闪”,把脱战透明度设 0。
  • “可用时的效果”九种:无、一直高亮、发光边框呼吸、闪烁、放大缩小回到正常(Zoom)、扩散光圈、旋转光点环、抖动、淡入淡出;“效果颜色”金 / 白 / 红 / 绿 / 蓝 / 职业色。默认“无”。
  • “声音(冷却结束时响一声)”:无,或游戏自带的 8 种,带“试听”。几个格子同时结束只响一声;测试/预览和舞台不响。
  • “计时器变色:最后几秒(0 = 不变色)” 0–30,颜色默认红。

设计原则

  • 效果和声音都是可选,默认不加 — 用户没要的时候不闪、不吵。
  • 效果亮不亮由来源的“发光”结果决定,战斗中它可能是秘密布尔值,用 SetAlphaFromBoolean 整层切换,不做比较 — 所以战斗中效果照样能亮能灭。
  • 动画只用普通数字 — 动画终点不接受秘密值。
  • 声音只用游戏自带的音效 — 这个客户端的接口列表里没有播放自定义声音文件的函数(#1487 的结论)。
  • 计时器变色用游戏的数字格式器,不读剩余时间 — 战斗中也能变色。
  • “战斗中才闪”不单独做开关,用透明度组合 — 少一个设置。
老板的原话
「然后可以configuration计时器大小 图标样式 提供方圆两种 大小 计时器大小 透明度 战斗中透明度 脱战透明度 可以时候的一些样式 比如闪烁比如一个放大缩小到正常大小的一个zoom in and out效果提示 等等 多做一些效果让用户选择多一些 可以参考weakaura」#1491
「要求是可以控制比如快冷却完毕之后的闪光 声音 淡出 闪入等等等等」#1487
现在的限制 / 还没验证 / 等老板反馈
  • 做不到:战斗中“结束前 N 秒”响声音或触发动作,因为剩余时间是秘密值;冷却结束那一刻的声音和闪光没问题。
  • buff 格子(包括“我对队友的 debuff”)没有“计时器变色”和“结束时的声音”:它们的数字和转圈由游戏的光环容器画,不是格子自己的冷却控件。计时器放在“下 / 上 / 右侧”时(进度条布局一律如此),数字在那个位置,但没有转圈暗影;技能和物品格子没有这个限制。
  • 技能、物品格子的倒计时数字用“文字绑定”,#1355 曾在老板的客户端上遇到独立计时文字空白,这条路是冷却来源最大的风险(游戏里还没验证)。
  • (游戏里还没验证)缩放、平移、旋转动画和圆形遮罩;外观和音效要老板自己看、自己听。
  • 旋转光点的转向没有在游戏里核对过(模拟器画的方向可能和游戏相反)。
  • 和早先设计稿不同:数字是整数,不是 m:ss 或一位小数;“圆角标”目前只是右上角小字,没有实心圆底;放大缩小、抖动是让图标的副本动,原图标不动。

去模拟器试一试

第二部分:目标上我放的 debuff(整组)(#1492)

目标身上“我放的所有 debuff”放在一个单独的、可拖动的框里整组显示,不是格子;配一个测试面板。

做了什么

  • 设置页第 4 节“目标上我放的 debuff(整组)”:开关“显示我放在目标身上的 debuff(测试版,默认关)”,总开关关着时它也不画。
  • 只在目标是敌人时显示;默认在屏幕中间偏下,玩家框体和目标框体之间。
  • 选项和第一部分一致:形状、图标大小 16–64、间距、每行个数、最多显示、排列和换行方向、缩放,倒计时数字和层数,三种透明度(100 / 100 / 脱战 60);另有“快到期时的效果”无 / 边框发光 / 放大缩小 / 闪烁(默认边框发光)和“到期前多少秒开始”。
  • 测试面板:左边是当前职业所有会挂在目标身上的 debuff(默认勾选前 4 个,牧师是痛、吸血鬼之触、噬灵疫病、净化邪恶),右边预览里每个假图标按自己的持续时间循环。“在屏幕上显示测试”把假图标放进真框子里摆位置,开战或关设置窗口自动关闭。

设计原则

  • 显示整组,不挑单个法术 — 战斗中光环数据是秘密值,Lua 判断不了哪个 debuff 在,只有游戏的光环容器能挑;过滤词和目标框体“我的 debuff”那组一样。
  • 测试面板里的勾选只决定预览和屏幕测试里出现哪些 — 整组不能在战斗中按法术筛;老板要的“测试两边”就是这样给的。
  • 战斗中只改透明度,不显示/隐藏容器;只在目标可攻击时显示 — 战斗中安全框体不能动。
  • 自己身上的 debuff 不做 — 老板说了跟框体走。
老板的原话
「第二部分 要求一样监视目标我放的bebuff 这个没办法选法术 提供测试面板 要求测试两边提供当前职业的所有debuff 比如痛 虚弱灵魂 吸血鬼之触等等 然后可控制的condigurstion 跟上面一样」#1492
「!!!不需要做的是自己身上的debuff这个跟框体走」#1492
「对 要加入一类就是我给队友释放的debuff 比如虚弱灵魂 我想不到其他的了 但是这个很有用」#1500
现在的限制 / 还没验证 / 等老板反馈
  • 边框发光、放大缩小、闪烁只在预览和“在屏幕上显示测试”里有。战斗中真实图标由游戏的光环容器画,这三个效果能不能叠上去要游戏里试过才知道(游戏里还没验证)。真实图标只有“最后几秒数字变色”,战斗中也行;开发者建议老板先看这个够不够用。
  • 职业清单是手写的、凭记忆(牧师 13 项,萨满 8 项),法术编号错了会显示成别的法术。对照法术池,牧师的净化邪恶、分裂、心灵惊骇、虚空触须之握,萨满的避雷针、鞭挞烈焰、妖术、静电充能,在这个客户端的数据表里都没有(待确认)。
  • 真实图标的边框颜色:游戏里按驱散类型染色(魔法蓝、诅咒紫、疾病棕、毒绿、其他红),模拟器不知道类型,一律画“其他”的红;测试图标本来就是这个红。
  • 测试面板的摆法:游戏里它只是设置页上的一行字加一个开关、勾选列表和预览条,不是单独的一块;模拟器把它做成了单独的一块,勾选列表和预览条上下排。
  • #1500 已并进来,但不在这一组里:虚弱灵魂在牧师清单里,但整组只在目标是敌人时显示,所以友方身上的虚弱灵魂不在整组里。“我放在友方目标身上的 debuff”这一类做成了格子的一个来源“我对队友的 debuff”,见下面第三、四部分。
  • 和早先设计稿不同:设计稿是“只显示勾选的”加“最后 5 秒外框发光”;现在整组显示,勾选只管预览,发光只在测试里有,真实图标靠数字变色。

去模拟器试一试

第三、四部分:我对目标/自己释放的 buff,和我对队友的 debuff(#1493 #1489 #1500)

一个格子监视你放在目标或自己身上的一个 buff,或你放在队友身上的一个 debuff:有就显示图标、剩余时间和层数,战斗中也准;没有就变暗。

做了什么

  • 三个来源:“我对目标释放的 buff”(恢复、回春术、真言术:盾…)、“我对自己的 buff”(真言术:韧、心灵之火…)和“我对队友的 debuff”(#1500,下面单独说)。
  • 选法术的下拉:最上面是“目标身上有 / 身上有”的(现在你放的 buff,只在脱战读,目标要先选中友方),然后是法术池里你职业的 buff 法术(已学会的排前面,没学会的在后面,都按池的顺序;触发型 buff 如节能施法也在,排在最后),是一个扁平的列表,没有分组标题;也可输入名称、编号或粘贴链接再点“用这个”。
  • “等级:…”下拉:“全等级(所有等级的这个 buff 都算)”或“只算等级 N”。这里的“全等级”是任何一级都算,和技能冷却的“自动跟最高”不是一回事。
  • 有 buff 时,亮图标、转圈、倒计时数字、层数都由游戏画;没有(或目标是敌人、没有目标)时图标变暗成“不可用透明度”,设成 0% 就是没有时不显示。换目标自动跟着换;“可用时的效果”在 buff 在时亮。
  • “我对队友的 debuff”(#1500):为虚弱灵魂做的 — 你给队友放真言术:盾之后,他身上会留下虚弱灵魂,圣骑士的保护法术留下自律也一样;这个来源让格子一直看着“他现在身上有没有这个”。目标是友方、身上有你放的 debuff 时,亮图标、转圈、倒计时数字、层数由游戏画,战斗中也准,换目标跟着换;没有,或目标是敌人、没有目标时,只剩变暗的图标。
  • 它的下拉里是法术池里标了“debuff 挂在友方”的法术(牧师只有虚弱灵魂,萨满一个也没有),最上面是“目标身上有”的(现在目标身上你放的 debuff,只在脱战读,要先选中友方目标);没有“等级”下拉;也可输入名称、编号或链接再点“用这个”。战斗中打开下拉没有“目标身上有”,并提示“战斗中不能读目标身上的 debuff 列表,脱战后再选。”
  • 模拟器里怎么摆出来:牧师对友方目标放真言术:盾会自己留下虚弱灵魂;控制台“队友身上的 debuff”一行可以直接挂上(15 秒是法术池里估的,不是游戏查来的),“别人给队友挂…”是别的牧师的盾,用来看它不显示。这一行游戏里没有。

设计原则

  • 用游戏的光环容器:每个格子一个容器、一个槽,过滤词是“我放的有益光环”加这个法术所有等级的编号 — 战斗中 Lua 看不到 buff 在不在;团队框体角落图标已经这么做。
  • buff 不在时不隐藏,垫一个变暗的图标 — 用户看得到格子还在。
  • 切目标时让目标的容器重新读一遍 — 容器自己跟光环变化,但不知道“目标换了个人”。
  • 容器只在脱战时建和改,战斗中要改的欠到战斗结束 — 战斗中安全框体不能动。
  • 第三、四部分是同一份代码,只是单位不同 — 规则一样,不要两套行为;队友的 debuff 也走这份,只多下面两条不同。
  • 队友身上的 debuff 不能按法术挑,格子显示“你放在目标身上的任何一个 debuff” — 游戏不让插件按法术编号挑友方单位身上的 debuff;对虚弱灵魂、自律这类你的法术留下的 debuff,这恰好就是要的那一个。别的牧师的盾留下的虚弱灵魂不是你放的,不显示。上面选的法术只用来画变暗的图标和名字;槽要选了法术才打开(选法术就是这个格子的开关)。
  • 只在目标是友方时显示 — “我放的 debuff”这个过滤词也会匹配你放在敌人身上的 debuff,所以我们自己的宿主框(普通框体,战斗中也能显示/隐藏)只在目标是友方时显示,换目标时重新决定;否则目标是敌人时这个格子会亮起你的痛。
老板的原话
「第三部分 我对目标释放的buff 要求上同」#1493
「第四部分 我对自己的buff」#1489
「对 要加入一类就是我给队友释放的debuff 比如虚弱灵魂 我想不到其他的了 但是这个很有用」#1500
「用户可以从已有的list中选择出法术」#1489(#1488 共用段)
现在的限制 / 还没验证 / 等老板反馈
  • buff 格子在战斗中自己不知道 buff 在不在,全靠游戏的容器。战斗中换法术、换样式要等脱战才生效;在战斗中第一次设置的格子,只显示变暗图标直到战斗结束。战斗中也读不到“目标身上现在有哪些”,界面有提示。
  • 游戏只允许对友方单位按法术编号挑有益光环;目标是敌人时格子保持变暗,不报错。友方身上的 debuff 反过来,按法术挑不了(见上面)。
  • “我对队友的 debuff”有三处游戏里还没验证(代码头部的清单):(1) 没有法术列表的“我放的有害光环”槽,目标是友方时能不能填上,换目标后能不能跟着换;(2) 隐藏我们自己的宿主框,能不能在战斗中把容器的按钮一起藏起来(不能的话,目标是敌人时这个格子可能亮出你放在敌人身上的 debuff);(3) 战斗中 UnitCanAttack("player", "target") 是不是秘密值(第二部分的整组也靠它);不是的话,格子只显示变暗的图标。
  • “我对自己的 buff”的池子清单只收标了“自己”或“看目标”的法术。按数据,真言术:韧、恢复、真言术:盾只标了“友方”,不会出现在这个清单里,除非它们现在在你身上(走“身上有”)或你手输名称;测试步骤里写的是从下拉里选这几个,要对一下(游戏里还没验证)。
  • (游戏里还没验证)光环容器的槽放进格子是否正常、效果层挂到槽按钮上是否可行、圆形遮罩、切换目标后重新读一遍是否够用。

去模拟器试一试

第五部分:物品(#1494)

把血瓶、治疗石、饰品放进格子,显示图标、冷却和数量,冷却好时“可用时的效果”亮。

做了什么

  • 来源“物品”:把背包或角色面板里的物品拖到设置里的投放框(或舞台里的格子上);或输入物品 ID / 粘贴链接(按回车确认);或点“饰品 1 / 饰品 2”,跟着当前穿的饰品走。
  • 显示图标、冷却和倒计时、数量(只有 1 个时不显示数字)、冷却好时的效果。
  • 没有了、没穿、冷却还没开始、不可用时格子变暗;用完的药水留在面板里,不删格子。

设计原则

  • 拖入只在设置页有效,不在屏幕上的面板上 — 游戏里面板是点格子选的,拖放物品是配置动作。
  • “饰品 1 / 2”绑槽位,不绑具体物品 — 老板要“可以是饰品”,换饰品是常事;从角色窗口拖出来的饰品则盯那一件。
  • 冷却优先用物品自己的普通数字,读不到或是秘密值就借物品使用效果那个法术的计时对象 — 物品本身没有计时对象。
  • 冷却不超过 1.5 秒的当作公共冷却,不画 — 免得每次公共冷却药水格子都转一圈。
老板的原话
「第五部分 物品配置 可以把物品直接拖入进来 可以是血瓶 可以是饰品」#1494
现在的限制 / 还没验证 / 等老板反馈
  • (游戏里还没验证)战斗中物品冷却数字是不是秘密值、使用法术的冷却和物品冷却是否一致。测试步骤里最重要的一条,是在战斗中喝一瓶药水。
  • 战斗中喝了药水,按代码的说法冷却要等战斗结束才开始:这段时间格子保持变暗,没有转圈,也没有效果。
  • 从角色窗口拖出来的饰品按编号盯那一件,不跟槽位;只有“饰品 1 / 饰品 2”按钮才跟槽位。
  • 物品的拖放框在模拟器里是下拉(不能拖背包物品),物品只有药水、治疗石两种示例。控制台的“技能/物品不可用”开关让物品也变暗并关掉效果,对应游戏里 IsUsableItem 返回 false。

去模拟器试一试

第六部分:小队/团队大减伤面板(#1496)

一个完全独立的小窗,列出小队或团队成员的名字和他们的大减伤状态:生效中、冷却中、可用。

做了什么

  • 在“个人/小队团队工具”页的“大减伤面板”一节(不在 Aura 冷却管理器那页):“显示大减伤面板(队友的大减伤和冷却)”默认关,另有“锁定位置”“缩放 (%)”、位置和“预览小队”“预览团队”。
  • 职业有自己大减伤的成员各一行:战士盾墙(900 秒)、圣骑士圣盾术、猎人威慑、盗贼闪避、法师寒冰屏障(都是 300)、德鲁伊树皮术(60)。牧师、萨满、术士没有,不显示。一行有名字(按职业上色)、图标和状态;小队一列,团队两列。
  • 三种状态:生效中(红色,图标和剩余时间由游戏画)、冷却中(灰色,写“技能名冷却”和倒计时)、可用(绿色)。别人给他的外部减伤(比如保护祝福)也算生效中。
  • 冷却是估计的:看到成员的大减伤结束,就从它开始生效那一刻起按这个技能的冷却算;你自己那一行读游戏给的冷却(脱战读得到时);没看到用过的算“可用”。别人给的外部减伤结束后不算冷却,原来有冷却的话回到原来的冷却。
  • 战斗中改设置、换队伍,要等脱战才生效,窗口上会提示。

设计原则

  • 完全独立:不依赖框架和法术池,不改小队/团队框体 — 老板原话就是“完全独立”。
  • 生效中交给游戏:每行一个光环容器,只看按钮亮不亮 — 战斗中光环数据是秘密值,图标和时间只能由游戏画。
  • 别人的冷却不编,设置页的说明里写明“冷却是估计的” — 游戏不把别人的技能冷却告诉插件,能真读的只有你自己那一行。
  • 每个职业只算一个技能 — 战斗中光环的法术编号是秘密值,分不出用的是哪个大减伤(战士用破釜沉舟,会先显示生效中,再当作盾墙冷却)。
  • 大小和位置只在脱战时改,文字和颜色随时能改 — 光环按钮战斗中是锁住的。
老板的原话
「!!!第六做一个单独的功能 小队 团队大减伤 这个完全独立 单独panel显示小队成员名字和大减伤cd」#1496
现在的限制 / 还没验证 / 等老板反馈
  • 别人的冷却是估计:天赋、装备缩短冷却时不准;你来之前用过的会显示“可用”。
  • 和早先设计稿不同:“生效中”的剩余时间画在图标上(由游戏画),不在右边一列,因为战斗中只有游戏的代码写得了这个数字;右边那一列只在冷却中显示倒计时(等老板确认)。
  • 等老板在小队里跑 /p5ui probe defensives(用了大减伤之后再跑一次),才知道别人的冷却广播会不会发到我们这儿;有的话估计可以去掉(游戏里还没验证)。
  • 每个职业目前只有一个技能,要哪些等老板回答。
  • 模拟器没做“队伍或设置改变,等待脱战”:游戏里战斗中换队伍或改设置,窗口先不变,左下角写这句话,脱战后才生效;模拟器是立刻变。
  • 预览(“预览小队 / 预览团队”)里“生效中”的行只有红底和“生效中”三个字,没有转圈和倒计时数字,名字是“队员 N”(第一个是玩家自己),窗口底部没有那一行状态字。

去模拟器试一试

法术池数据(#1495)

一份随插件发的法术和光环清单,让用户从里面勾选;同名各级合成一组。

做了什么

  • 脚本读这个客户端版本(1.60.1.70009)的数据表,生成九个职业(战士、圣骑、猎人、盗贼、牧师、萨满、法师、术士、德鲁伊)的清单,约 54 KB。
  • 一组 = 一个法术和它所有等级的编号,带冷却秒数、给谁挂光环(自己 / 友方 / 敌人 / 看目标 / 宠物)、是不是 debuff。例:地震术 7 级、冷却 6 秒;烈焰震击 6 级、敌人 debuff;虚弱灵魂手补。

设计原则

  • 数据由脚本从游戏自己的数据表生成,不手打 — 只存事实,不存文字和图标。
  • 同名各级合成一组 — “全等级自动跟最高”需要一个法术下面有全部等级。
  • 只做加法,不换已有的手写表 — 换了会让团队框体里更多 buff 被算进去,是对默认开着功能的改动,另开一张卡。
老板的原话
「用户可以从已有的list中选择出法术」#1495(#1488 共用段)
「主意有些法术是多等级」#1495(#1488 共用段)
现在的限制 / 还没验证 / 等老板反馈
  • 数据还没和游戏对过,等老板跑 /p5ui probe pool(游戏里还没验证);老板对萨满那张表的意见还没有。
  • 现在只有 buff / debuff 来源(#1489 #1493 #1500)在用它;技能来源和第二部分的测试面板还没用。没有死亡骑士、武僧、恶魔猎手、唤魔师。

暴雪冷却管理器调研(#1487)

老板问的两个问题和调研结论;这份结论就是后来整套监视面板的起点。

做了什么

  • 写了报告,并给了三个探针 /p5ui probe cdm、cdm wait、cdm lab。
  • 问题 1:能显示,不用读数字,交给游戏画。暴雪管理器不显示震击是数据的问题:能显示哪些法术由客户端数据表决定,只能读不能加,也只显示已学会的。
  • 问题 2:结束时的闪光、声音、淡入淡出、最后几秒的视觉提示,自己做显示都能做;做不到的只有战斗中“结束前 N 秒”响声音。

设计原则

  • 不读,只画 — 冷却一律交给游戏的计时对象。
  • 不动暴雪的管理器,继续只美化 — 不改它的大小、不往里加法术。
  • 游戏里才能确认的地方做成探针让老板跑,不猜。
老板的原话
「做一个Spike 现在的痛点是 暴雪的默认冷却管理器是不显示一些低等级法术 我用萨满 大地震击和火焰震击都不显示 也没办法添加 研究一个问题:是否可以根据动作条来读取这个法术的冷却 再不济 是否可以直接用某种方法 直接把动作跳的特定结果显示成冷却的一部分 这样可以看到特定技能的冷却 第二个问题 spike一下我们是否可以在暴雪cdm的基础上 或者自己做一个cdm 要求是可以控制比如快冷却完毕之后的闪光 声音 淡出 闪入等等等等 然后给我报告」#1487
现在的限制 / 还没验证 / 等老板反馈
  • 以上结论来自文档,不是实测(游戏里还没验证)。等老板在游戏里做的四件事:/p5ui probe cdm(震击在不在管理器的数据里)、/p5ui probe cdm wait 后打木桩(战斗里的答案)、/p5ui probe cdm lab(自己画的震击图标,脱战战斗各试),以及在暴雪管理器设置里勾“显示未学会的”看震击有没有出现。
  • 这个客户端有没有播放自定义声音文件的函数要探针打出来;没有的话,声音只能用游戏自带的音效。

模拟器:完全照现在的做法走一遍

“游戏画面”(canvas):面板、格子、目标 debuff 组、大减伤窗口都按设置页里的设置画。“设置页”照游戏的设置页复刻(有几处替身,见它下面的说明),改什么画面就变什么;点画面里的格子就选中它。下面的控制台是你的角色:进战斗、换目标、放技能、用物品。最下面的检视器告诉你:这一刻插件读得到什么、读不到什么(战斗中是 🔒 秘密值),以及每个事件走过的流水线。

职业
角色等级60 速度

你的角色

战斗 目标

技能(点一下就施放)

施放等级

法术池里只有"有自己冷却或会挂光环"的法术,惩击、治疗术、闪电箭这类单纯的施法不在里面(游戏里的法术书有)。光环持续时间法术池没有,用常见值;没有时按 15 秒(敌人 12 秒)。

物品和队友

队伍
下面的按钮让队友用大减伤;牧师、萨满、术士自己没有大减伤,没有这几行。

设置页是游戏设置窗口的复刻,但有几处是替身:添加法术、改名、删除面板在游戏里是弹窗,这里是页内的一行;位置滑块固定 ±640 / ±360(游戏里是屏幕宽高的一半);法术下拉只有法术池里的法术;物品的拖放框用下拉代替。详细见上面“整体与面板”和各部分的“现在的限制”。

选中的格子:插件这一刻读到什么

事件和刷新记录