|
|
@@ -0,0 +1,90 @@
|
|
|
+# pipeline_bot 交付总结 — 新手九任务流水线(2026-10-01 ~ 10-02)
|
|
|
+
|
|
|
+> 账号 longwu988 / 玖扬复古176。本会话从零建成 `pipeline_bot/` 独立工程,
|
|
|
+> 九任务串行流水线全链实测通过,期间定案 6 个协议根因。
|
|
|
+> 探索参考(冻结只读): `../protocol_bot`、`../protocol_bot_backup`。
|
|
|
+
|
|
|
+## 一、最终架构
|
|
|
+
|
|
|
+```
|
|
|
+pipeline_bot/
|
|
|
+├── pipeline/
|
|
|
+│ ├── bootstrap.py 登录编排(端口表三级策略/删全区角色/创角/进世界)
|
|
|
+│ ├── run_pipeline.py 总控(串行9任务, 软/硬失败策略, --reset/--zone)
|
|
|
+│ ├── ctx.py 共用会话上下文 + 打勾文件(进度_区_角色.md)
|
|
|
+│ ├── naming.py 随机纯中文角色名
|
|
|
+│ └── tasks/
|
|
|
+│ ├── t01_heal.py 喝药保护(读态验证, 最多toggle 1+1次)
|
|
|
+│ ├── t02_biqi_kill20.py 比奇20杀 + 落地即点【点我刷怪】
|
|
|
+│ ├── t03_cave_kill20.py 天然洞穴20杀(renwu链+AutoFight)
|
|
|
+│ ├── t04_mine_kill20.py 比奇矿区20杀(传送员链+AutoFight)
|
|
|
+│ ├── t05_wugong_kill40.py 蜈蚣洞穴40杀+冲35级
|
|
|
+│ ├── t06_shentong.py 35级开神通(CS3199 @mingge_kaiqi,1)
|
|
|
+│ ├── t07_wuxing.py 五行之力(@renwu_qwyd,33→NPC10031→@func17_wxqh,1)
|
|
|
+│ ├── t08_woma_farm.py 沃玛挂机(时长变量, 死亡回城重传闭环)
|
|
|
+│ └── heal_guard.py 战斗任务喝药防线(高危图非on拒跑)
|
|
|
+├── src/pbot/ 框架(codec/login/transport/game/world/bot)
|
|
|
+├── scripts/ 行为库(AutoFight/CaveEnter/MineEnter等)
|
|
|
+└── assets/ 地图墙格/抓包证据/模板
|
|
|
+```
|
|
|
+
|
|
|
+## 二、实测战绩(run12, 裁决36区·姚孤)
|
|
|
+
|
|
|
+| 任务 | 结果 | 用时 |
|
|
|
+|---|---|---|
|
|
|
+| T1 喝药保护 | ✓ on | 1s |
|
|
|
+| T2 比奇20杀 | ✓ 20/20 | 126s |
|
|
|
+| T3 天然洞穴20杀 | ✓ 20/20 | 230s |
|
|
|
+| T4 比奇矿区20杀 | ✓ 20/20 | 515s |
|
|
|
+| T5 蜈蚣40杀+35级 | ✓ 40/40, 等级35 | 1017s |
|
|
|
+| T6 神通开启 | ✓ 5s静默通过 | 7s |
|
|
|
+| T7 五行之力 | ✓ 五行珠入包(50675) | 4s |
|
|
|
+| T8 沃玛挂机 | ✓ 独立验证: 19杀零死亡, 喝药防线/死亡回城重传/低血逃跑全工作 | 30min计时 |
|
|
|
+
|
|
|
+刷怪功能终验(裁决37区·萧厂苍): 落地比奇 9 秒即点 NPC(aid=10074) →
|
|
|
+20/20 连杀收官。
|
|
|
+
|
|
|
+## 三、本会话定案的协议根因(全部实测闭环)
|
|
|
+
|
|
|
+1. **任务图移动 body = 中文显示名**(208dad0): 洞穴 392 帧静默根因,
|
|
|
+ `_DISPLAY_TO_PROTO` 的 d011 映射是未验证假设; 真机 21040 帧定案。
|
|
|
+2. **喝药 toggle 读态**(ae2a815): 旧面板缓存掩盖 toggle 后新值 → 反复
|
|
|
+ 误切; 修复=panel_seq 到达序号取最新 + 最多切一次(实机 off→on 一次过)。
|
|
|
+3. **区服端口表**(20ee6ca): serverlist XXTEA 解密(modlist→b64→4meJnPyl
|
|
|
+ sign+34UFXMgtkz key)按区直取端口; 新物理机端口与旧表不同(33区=8081)。
|
|
|
+4. **战斗统一 AutoFight 模式**(9d6cd7a): 旧 KillBehavior ATTACK_RADIUS=3
|
|
|
+ 超程空刀(我方击杀全部≤2 实证), 抢怪空转 60s; 切客户端复刻模式
|
|
|
+ (贴身出刀/4刀重锁/低血逃跑) + Monster.contested_t 抢怪避让。
|
|
|
+5. **M2 锚点卡死自愈**(da39650): 连续拉回 8 次静置 4s 洗超速计数,
|
|
|
+ 16 次弃目标换向(spawn5 252帧钉死实证)。
|
|
|
+6. **比奇刷怪 NPC 定案**(aef24db): aid=10074/index=83@(287,615),
|
|
|
+ 服务器不推 SC10、点击帧即触发、怪多时静默无副作用可重复点
|
|
|
+ (cap_v5 真机抓包, 证据 assets/cap_spawn_npc_20261002.pcap)。
|
|
|
+
|
|
|
+## 四、踩坑记录(避免重走)
|
|
|
+
|
|
|
+- 游戏服是负载均衡集群: 抓包/直连前先 `netstat` 确认客户端实际 IP
|
|
|
+ (本会话三次抓包空跑皆因节点切换)。
|
|
|
+- 新区可能 DNS 未就绪: 38区域名解析到 10.x 内网地址(46326), 端口表
|
|
|
+ state=1 也不代表可接入; 接入前先解析域名验公网 IP。
|
|
|
+- 登录频控: 10 分钟内 3 次登录触发 SC658 超时, 等 4 分钟恢复。
|
|
|
+- perl 批量替换 + 秒级 mtime 精度会生成陈旧 __pycache__, 排查怪问题
|
|
|
+ 先 `find . -name __pycache__ -exec rm -rf {} +`。
|
|
|
+- 删角须删 last=1 的选中角色并循环重拉(服务器仅受理删选中)。
|
|
|
+
|
|
|
+## 五、质量门禁终态
|
|
|
+
|
|
|
+- 141 pytest 全绿 / ruff(src tests pipeline) clean
|
|
|
+- 终审 code review: FIX-FIRST 两项 Critical 已修复并复审通过
|
|
|
+ (F1 潜伏崩溃 af._dir8→kill._heading_to; F2 判定为误报有据)
|
|
|
+- 全部 commits: 03f35f1..aef24db(约 35 个)
|
|
|
+
|
|
|
+## 六、已知未结项
|
|
|
+
|
|
|
+- t02 刷怪点击在"怪多"时服务器静默(设计内, 无副作用), 但无法从
|
|
|
+ 回包确认是否真的刷怪 — 依赖视野怪恢复做间接判定(已如此实现)。
|
|
|
+- T8 挂机 30 分钟完整计时未被观测到自然结束(用户中止), 计时逻辑
|
|
|
+ 经代码审查+部分实测认为可靠。
|
|
|
+- 终审 deferred minors(M1-M16)全部不阻塞, 见 ledger。
|
|
|
+
|
|
|
+— 会话闭环 2026-10-02 08:30
|