自动处理交易 + 自动处理组队(合并版) 热血江湖 YGOnline.exe · 2026-09-28 · 32位无ASLR · 模块基址恒 0x400000 ================================================================================ 【一句话】 交易窗 = IFManager + 1236(0x4DC,InterExchange) 交易接受 +908(0x38C) / 交易拒绝 +916(0x394) 组队窗 = IFManager + 1256(0x4E8,InterParty) 组队接受 +952(0x3B8) / 组队拒绝 +960(0x3C0) 点法 = 按钮对象 + 12 现读控件ID → 按钮点击call(派发事件 0x409) 前置:窗口是否弹出 / 窗口槽位表_初始化 / 按钮点击call 已存在(见相关文件) 常量按「接受/拒绝」语义命名(你自己的优化,已对齐)。组队接受=952(左)为已采用的事实; 若担心版本更新把"左=接受"反置,可用下方 取组队接受按钮ID() 自判定函数代替 #组队接受。 交易接受 +908(左)= 确认 为已确认用法。 ================================================================================ 一、常量表(缺哪行补哪行) ================================================================================ .版本 2 .常量 IFManager基址, "25740828" .常量 控件ID偏移, "12" .常量 控件类型偏移, "8" .常量 面板类型码, "24" .常量 窗口可见标志, "64" .常量 按钮类型码, "34" .常量 窗口子槽起点, "768" .常量 窗口子槽终点, "1532" .常量 窗口子槽个数, "192" .常量 交易窗口槽, "1236" .常量 组队窗口槽, "1256" .常量 通知窗口槽, "1028" .常量 交易接受, "908" .常量 交易拒绝, "916" .常量 组队接受, "952" .常量 组队拒绝, "960" ================================================================================ 二、变量声明(全局变量表) ================================================================================ .版本 2 .全局变量 全局_交易已处理, 逻辑型 .全局变量 全局_组队已处理, 逻辑型 ================================================================================ 三、① 自动处理交易(带闸门:窗口关了自动复位,不连点) ================================================================================ .版本 2 .子程序 自动处理交易_带闸门 .局部变量 接口管理, 整数型 .局部变量 交易窗, 整数型 .局部变量 按钮, 整数型 .如果真 (窗口是否弹出 (#交易窗口槽) = 假) 全局_交易已处理 = 假 返回 () .如果真结束 .如果真 (全局_交易已处理 = 真) 返回 () .如果真结束 接口管理 = 内存_读整数型 (全局_进程句柄, #IFManager基址) 交易窗 = 内存_读整数型 (全局_进程句柄, 接口管理 + #交易窗口槽) 按钮 = 内存_读整数型 (全局_进程句柄, 交易窗 + #交易接受) .如果真 (按钮 ≤ 65536) 返回 () .如果真结束 按钮点击call (内存_读整数型 (全局_进程句柄, 按钮 + #控件ID偏移)) 全局_交易已处理 = 真 返回 () ================================================================================ 四、② 自动处理组队(带闸门,直接点 #组队接受) ---------------------------------------------------------------- 组队接受=952(左)已按你的命名确认为接受键。若想保险防反置,把下面一行 按钮 = 内存_读整数型 (..., 组队窗 + #组队接受) 换成:按钮 = 内存_读整数型 (..., 取组队接受按钮ID (组队窗)) (取组队接受按钮ID 见下方 五,会当场读按钮文字自判定,不会点反) ================================================================================ .版本 2 .子程序 自动处理组队_带闸门 .局部变量 接口管理, 整数型 .局部变量 组队窗, 整数型 .局部变量 按钮, 整数型 .如果真 (窗口是否弹出 (#组队窗口槽) = 假) 全局_组队已处理 = 假 返回 () .如果真结束 .如果真 (全局_组队已处理 = 真) 返回 () .如果真结束 接口管理 = 内存_读整数型 (全局_进程句柄, #IFManager基址) 组队窗 = 内存_读整数型 (全局_进程句柄, 接口管理 + #组队窗口槽) 按钮 = 内存_读整数型 (全局_进程句柄, 组队窗 + #组队接受) .如果真 (按钮 ≤ 65536) 返回 () .如果真结束 按钮点击call (内存_读整数型 (全局_进程句柄, 按钮 + #控件ID偏移)) 全局_组队已处理 = 真 返回 () ================================================================================ 五、③ 取组队接受按钮ID(运行时自判定,不靠"左=接受"假设) ---------------------------------------------------------------- 当场读左/右两个按钮【指向的文字】,匹配接受类词(接受/確認/確定/同意)就返回它; 匹配到拒绝类词在左则改返回右。两个都读不到时兜底返回左(沿用旧假设)。 主流程(四、②)已直接点 #组队接受;本函数作为「验证 / 防反置」的备选。 Big5 接受类:接受=B1B5A8FC 確認=BD54BB7B 確定=BD54A977 同意=A650B74E 拒绝类:拒絕=A9DAB5B4 取消=A8FAAEF8 忽略=A9BFB2A4 關閉=C3F6B3AC ================================================================================ .版本 2 .子程序 取组队接受按钮ID, 整数型, , 自动判定左/右哪个是"接受",返回它的控件ID;都读不到返回 0 .参数 窗口对象, 整数型 .局部变量 左, 整数型 .局部变量 右, 整数型 左 = 内存_读整数型 (全局_进程句柄, 窗口对象 + #组队接受) 右 = 内存_读整数型 (全局_进程句柄, 窗口对象 + #组队拒绝) .如果真 (左 ≤ 65536 或 右 ≤ 65536) 返回 (0) .如果真结束 .如果 (按钮文字是接受 (左)) 返回 (内存_读整数型 (全局_进程句柄, 左 + 12)) .否则如果 (按钮文字是拒绝 (左)) 返回 (内存_读整数型 (全局_进程句柄, 右 + 12)) .否则如果 (按钮文字是接受 (右)) 返回 (内存_读整数型 (全局_进程句柄, 右 + 12)) .否则 返回 (内存_读整数型 (全局_进程句柄, 左 + 12)) .如果结束 .子程序 按钮文字是接受, 逻辑型 .参数 按钮对象, 整数型 .局部变量 前4字节, 字节集 .局部变量 i, 整数型 .计次循环首 (192, i) 前4字节 = 取字节集左边 (内存_读字节集 (全局_进程句柄, 内存_读整数型 (全局_进程句柄, 按钮对象 + (i - 1) × 4), 4), 4) .如果真 (前4字节 = 机器码到字节集 (“B1B5A8FC”) 或 前4字节 = 机器码到字节集 (“BD54BB7B”) 或 前4字节 = 机器码到字节集 (“BD54A977”) 或 前4字节 = 机器码到字节集 (“A650B74E”)) 返回 (真) .如果真结束 .计次循环尾 () 返回 (假) .子程序 按钮文字是拒绝, 逻辑型 .参数 按钮对象, 整数型 .局部变量 前4字节, 字节集 .局部变量 i, 整数型 .计次循环首 (192, i) 前4字节 = 取字节集左边 (内存_读字节集 (全局_进程句柄, 内存_读整数型 (全局_进程句柄, 按钮对象 + (i - 1) × 4), 4), 4) .如果真 (前4字节 = 机器码到字节集 (“A9DAB5B4”) 或 前4字节 = 机器码到字节集 (“A8FAAEF8”) 或 前4字节 = 机器码到字节集 (“A9BFB2A4”) 或 前4字节 = 机器码到字节集 (“C3F6B3AC”)) 返回 (真) .如果真结束 .计次循环尾 () 返回 (假) ================================================================================ 六、④ 统一入口:一个子程序把交易 + 组队都管了 ---------------------------------------------------------------- 塞进挂机主循环,每轮调一次(交易在前、组队在后,互不干扰)。 前提:主循环第一行已调过 窗口槽位表_初始化 ()。 ================================================================================ .版本 2 .子程序 自动处理弹窗 自动处理交易_带闸门 () 自动处理组队_带闸门 () 返回 () ================================================================================ 七、⑤ 诊断:先看一眼组队窗按钮(确认哪个是接受) ---------------------------------------------------------------- 游戏更新后或想验证"左=接受"是否反了,跑一次把左右按钮文字打出来。 ================================================================================ .版本 2 .子程序 打印组队窗按钮表 .局部变量 接口管理, 整数型 .局部变量 组队窗, 整数型 .局部变量 i, 整数型 .局部变量 子对象, 整数型 接口管理 = 内存_读整数型 (全局_进程句柄, #IFManager基址) 组队窗 = 内存_读整数型 (全局_进程句柄, 接口管理 + #组队窗口槽) 挂机信息.加入文本 (“=== 组队窗 槽1256 按钮表 窗口=” + 到文本 (组队窗) + “ ===” + #换行符) .如果真 (组队窗 > 65536) .计次循环首 (#窗口子槽个数, i) 子对象 = 内存_读整数型 (全局_进程句柄, 组队窗 + #窗口子槽起点 + (i - 1) × 4) .如果真 (子对象 > 65536) .如果真 (内存_读整数型 (全局_进程句柄, 子对象 + #控件类型偏移) = #按钮类型码) 挂机信息.加入文本 (“ +0x” + 取十六进制文本 (内存_读整数型 (全局_进程句柄, 组队窗 + #窗口子槽起点 + (i - 1) × 4)) + “ 槽” + 到文本 (#窗口子槽起点 + (i - 1) × 4) + “ ID=” + 到文本 (内存_读整数型 (全局_进程句柄, 子对象 + #控件ID偏移)) + “ 坐标” + 到文本 (内存_读整数型 (全局_进程句柄, 子对象 + 40)) + “,” + 到文本 (内存_读整数型 (全局_进程句柄, 子对象 + 44)) + “ 可用=” + 到文本 (内存_读整数型 (全局_进程句柄, 子对象 + 64)) + “ 生效=” + 到文本 (内存_读整数型 (全局_进程句柄, 子对象 + 72)) + #换行符) .如果真结束 .如果真结束 .如果真结束 .计次循环尾 () .如果真结束 ================================================================================ 八、最小接入步骤 ================================================================================ ① 工程里已有:窗口是否弹出 / 窗口槽位表_初始化 / 按钮点击call ② 粘本文件「一、常量表」缺的行(至少 交易窗口槽 / 组队窗口槽 / 交易接受 / 组队接受 / 组队拒绝 / 按钮类型码) ③ 粘「二、变量声明」两行 ④ 粘「三、① 自动处理交易_带闸门」「四、② 自动处理组队_带闸门」「五、③ 取组队接受按钮ID 等 3 个」 ⑤ 挂机主循环里 窗口槽位表_初始化 () 之后加一行 自动处理弹窗 () .版本 2 .子程序 挂机主循环 .局部变量 继续跑, 逻辑型 窗口槽位表_初始化 () 继续跑 = 真 .判断循环首 (继续跑) 自动处理弹窗 () 挂机逻辑 () 延时 (500) .判断循环尾 () 返回 () ================================================================================ 相关文件 D:\AI空间\rxjh\窗口是否弹出_参数防呆_0928.txt 判定子程序 + 初始化放哪 D:\AI空间\rxjh\窗口槽位表_数据类型_0928.txt 窗口.交易 / 窗口.组队 数据类型 D:\AI空间\rxjh\按钮点击call_纠正_0928.txt 点按钮的机器码 + 三个名字的区别 D:\AI空间\rxjh\窗口按钮取法_固定吗_实测_0928.txt 偏移固定性 + 按钮对象结构 D:\AI空间\rxjh\组队接受按钮_怎么找_自判定_0928.txt 组队接受键判定的完整论证 + CE 探针 D:\AI空间\rxjh\自动处理组队_0928.txt 组队单独版(含按坐标/带日志等更多变体) ================================================================================