修复猎人野兽训练展示技能所需训练点数错误问题
修复拾取问题 修复其他已知问题 修复自动下马问题以及带来的猎人守护自动关闭问题 彻底修复拾取界面问题 修复目标框架的施法条监控 修复其他已知问题 调整dps插件对仇恨的估算方式 优化dps插件 修复远程攻击条问题
This commit is contained in:
89
docs/AutoDismount-技术总结.md
Normal file
89
docs/AutoDismount-技术总结.md
Normal file
@@ -0,0 +1,89 @@
|
||||
# 自动下马 / 取消变形(Auto Dismount)技术总结
|
||||
|
||||
## 功能概述
|
||||
|
||||
骑乘或变形状态下尝试施法时,自动取消坐骑 / 变形 buff,使下次施法直接生效。
|
||||
|
||||
## 检测架构(三层)
|
||||
|
||||
### 第 1 层 — 错误消息匹配
|
||||
|
||||
监听 `UI_ERROR_MESSAGE` 事件:
|
||||
|
||||
| 方式 | 说明 |
|
||||
|---|---|
|
||||
| 哈希表精确匹配 | `ERR_ATTACK_MOUNTED`, `ERR_NOT_WHILE_MOUNTED`, `ERR_MOUNT_SHAPESHIFTED` 等标准全局变量 |
|
||||
| 关键词模糊匹配 | `mounted`, `shapeshifted`, `坐骑`, `骑乘`, `变形`, `形态`(兜底自定义错误消息) |
|
||||
|
||||
> Turtle WoW 使用自定义错误 `"你正在骑乘状态"`,不在标准全局变量中,通过关键词 `"骑乘"` 命中。
|
||||
|
||||
### 第 2 层 — Dismount() API
|
||||
|
||||
客户端若提供 `Dismount()` 函数则先调用(`pcall` 包裹),**不 early return**,继续 buff 扫描作为后备。
|
||||
|
||||
### 第 3 层 — Buff 扫描(0-39)
|
||||
|
||||
遍历玩家 buff,逐个按优先级检测:
|
||||
|
||||
| 优先级 | 检测方式 | 目标 | 示例 |
|
||||
|---|---|---|---|
|
||||
| 1 | 变形图标匹配 | 德鲁伊 / 萨满形态 | `ability_druid_catform`, `spell_nature_spiritwolf` |
|
||||
| 2 | 坐骑图标模式 | 坐骑 buff 图标 | `ability_mount_*`, `inv_pet_speedy` |
|
||||
| 3 | Tooltip 速度文本 | 坐骑速度描述(多语言) | `"又慢又稳"`, `"Increases speed by"` |
|
||||
| 4 | Buff 名称关键词 | Tooltip 首行含坐骑关键词 | `"骑乘"`, `"riding"` |
|
||||
|
||||
### 猎人守护跳过
|
||||
|
||||
猎人的猎豹 / 豹群守护使用 `ability_mount_*` 图标,需特殊跳过以免误取消。
|
||||
|
||||
## 调试关键发现
|
||||
|
||||
### Tooltip 扫描在 Turtle WoW 中失效
|
||||
|
||||
`GameTooltip:SetPlayerBuff(index)` 对所有 buff 均返回 **0 行**。
|
||||
即使重新 `SetOwner`、尝试 `GetPlayerBuff` 返回的 buffId,结果相同。
|
||||
|
||||
**影响**:tooltip 检测路径完全失效,必须依赖图标模式匹配。
|
||||
|
||||
### 非标准坐骑图标
|
||||
|
||||
| 坐骑 | 实际图标纹理 |
|
||||
|---|---|
|
||||
| 骑乘乌龟 | `inv_pet_speedy`(不匹配 `ability_mount_*`) |
|
||||
| 标准坐骑 | `Ability_Mount_*` |
|
||||
| AQ 坐骑 | `inv_misc_qirajicrystal_*` |
|
||||
|
||||
## 完整图标模式清单
|
||||
|
||||
```lua
|
||||
-- 坐骑
|
||||
mountIconPatterns = {
|
||||
"ability_mount_",
|
||||
"inv_misc_qirajicrystal",
|
||||
"inv_pet_speedy",
|
||||
}
|
||||
-- 变形
|
||||
shapeshiftIcons = {
|
||||
"ability_racial_bearform", -- 熊形态
|
||||
"ability_druid_catform", -- 猫形态
|
||||
"ability_druid_travelform", -- 旅行形态
|
||||
"spell_nature_forceofnature", -- 枭兽形态
|
||||
"ability_druid_aquaticform", -- 水栖形态
|
||||
"spell_nature_spiritwolf", -- 幽魂之狼
|
||||
"ability_druid_treeoflife", -- 生命之树
|
||||
"ability_druid_stagform", -- 鹿形态
|
||||
"ability_druid_flightform", -- 飞行形态
|
||||
}
|
||||
-- 猎人守护(跳过)
|
||||
hunterAspectIcons = {
|
||||
"ability_mount_jungletiger", -- 猎豹守护
|
||||
"ability_mount_packhorse", -- 豹群守护
|
||||
}
|
||||
```
|
||||
|
||||
## 扩展方法
|
||||
|
||||
遇到新坐骑无法自动下马时:
|
||||
1. 在 `InitAutoDismount` 中将 `_debug` 设为 `true`
|
||||
2. 骑上坐骑施法,查看聊天窗口中的 `[Nanami-DBG] buff[x]=` 输出
|
||||
3. 将新坐骑的图标关键字添加到 `mountIconPatterns`
|
||||
Reference in New Issue
Block a user