================================================================================ 自动处理组队 · 接你的调用代码(定稿 v2,含复选框事件上下文) 热血江湖 YGOnline.exe · 2026-09-28 · 32位无ASLR · 模块基址恒 0x400000 ================================================================================ 【你这次贴的完整真实代码,原样,一字不差】 ---------------------------------------------------------------- ① 复选框事件处理(启动逻辑的真正位置) .版本 2 .支持库 EThread .如果真 (接受组队.选中) 自动组队.选中 = 假 ' 【写法优化】同上:接受组队线程重入保护+旧句柄回收,原写法每个周期都新开线程 .如果真 (接受组队线程运行中 = 假) .如果真 (接受组队线程 ≠ 0) 关闭线程句柄 (接受组队线程) 接受组队线程 = 0 .如果真结束 接受组队线程运行中 = 真 启动线程 (&自动处理组队, , 接受组队线程) .如果真结束 ② 自动处理组队(线程体,直接 启动线程(&自动处理组队) 调它) .版本 2 .子程序 自动处理组队 .局部变量 接口管理, 整数型 .局部变量 组队窗, 整数型 .局部变量 按钮, 整数型 .如果真 (窗口是否弹出 (窗口.组队) = 假) 返回 () .如果真结束 接口管理 = 内存_读整数型 (全局_进程句柄, #IFManager基址) 组队窗 = 内存_读整数型 (全局_进程句柄, 接口管理 + 窗口.组队) 按钮 = 内存_读整数型 (全局_进程句柄, 组队窗 + #组队接受) .如果真 (按钮 > 65536) 按钮点击call (内存_读整数型 (全局_进程句柄, 按钮 + #控件ID偏移)) .如果真结束 接受组队线程运行中 = 假 返回 () ================================================================================ 一、常量表(缺哪行补哪行) ================================================================================ .版本 2 .常量 IFManager基址, "25740828" .常量 控件ID偏移, "12" .常量 组队接受, "952" .常量 组队拒绝, "960" ================================================================================ 二、变量声明(全局变量表) ================================================================================ .版本 2 .全局变量 接受组队线程运行中, 逻辑型 .全局变量 接受组队线程, 整数型 ================================================================================ 三、必须先做:窗口.组队 要有值(漏了就“永远点不到”) ---------------------------------------------------------------- 自动处理组队 用的是「窗口.组队」——自定义数据类型 窗口 的成员 (来源:D:\AI空间\rxjh\窗口槽位表_数据类型_0928.txt 的 .数据类型 窗口槽位表)。 ★ 易语言 .成员 不能带默认值,声明即 0;不调 窗口槽位表_初始化() 则 窗口.组队 = 0 → 窗口是否弹出(0) 恒假 → 永远点不到组队窗。 必须调一次 窗口槽位表_初始化()(只做常量赋值、不读内存,时机任意): .版本 2 .子程序 _启动窗口_创建完毕 窗口槽位表_初始化 () ================================================================================ 四、为什么“没有自动接受组队”——启动逻辑必须每个周期都跑 ---------------------------------------------------------------- ① 的块在 接受组队.选中 为真时,每周期只“补一个线程”(重入保护: 只有 接受组队线程运行中=假 才启动)。线程体 ② 跑完一次就 接受组队线程运行中=假 并退出 → 等于“单发”:一次启动处理一个邀请。 要连续自动接,必须满足:① 那个块被**反复执行**(每个周期/时钟 tick 都进来判断一次)。 你注释里“原写法每个周期都新开线程”说明它本来就设计在循环里跑——保持即可。 结构就是: 周期循环 { .如果真 (接受组队.选中) ← 每周期都判断 自动组队.选中 = 假 .如果真 (接受组队线程运行中 = 假) ← 没在跑才补一个线程 回收旧句柄 → 接受组队线程运行中 = 真 → 启动线程(&自动处理组队) .如果真结束 } · 组队窗没弹 → 线程立即返回、running=假 → 下周期再补; · 组队窗弹着 → 线程点一次接受 → running=假 → 下周期补下一个。 ⇒ 这就是“来了就自动接”的连续模型。 如果你把 ① 只放在“复选框被单击”事件里(只触发一次),那它只处理一个邀请就停, 表现就是“没有自动接受组队”——把 ① 整段挪进 时钟/挂机主循环 即可解决。 停止:取消勾选 接受组队(接受组队.选中=假)→ 不再补线程,在跑的线程跑完自然停。 (不需要手动 接受组队线程运行中=假,线程自身末尾会置假。) ================================================================================ 五、依赖清单(工程里已有即可,不用从本文件粘) ================================================================================ · 自定义数据类型 窗口 含成员 组队(来自 窗口槽位表_数据类型_0928.txt) · 子程序 窗口槽位表_初始化() · 子程序 窗口是否弹出(槽偏移) —— 判定窗口是否弹出 · 子程序 按钮点击call(控件ID) —— 派发事件 0x409 给 [0x0188C60C] · 全局变量 全局_进程句柄 · 复选框 接受组队(.选中)/ 自动组队(.选中) —— 你工程里的 UI 控件 · 支持库 EThread —— 启动线程 / 关闭线程句柄 ================================================================================ 相关文件 D:\AI空间\rxjh\窗口槽位表_数据类型_0928.txt 窗口.组队 定义 + 初始化子程序 D:\AI空间\rxjh\窗口是否弹出_参数防呆_0928.txt 窗口是否弹出 + 初始化放哪 D:\AI空间\rxjh\按钮点击call_纠正_0928.txt 按钮点击call 机器码 + 名字分工 D:\AI空间\rxjh\自动处理交易组队_合并_0928.txt 交易+组队合并版(含 组队接受 自判定备选) ================================================================================