← 返回总索引自动处理组队 · 接你的调用(定稿 v2)🔑 卡密引导09_组队与队员/自动处理组队_接你的调用_定稿_代码.html

自动处理组队 · 接你的调用(定稿 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
.全局变量 接受组队线程运行中, 逻辑型
.全局变量 接受组队线程, 整数型
⑤ 必须先做:窗口.组队 要有值
.版本 2
.子程序 _启动窗口_创建完毕
窗口槽位表_初始化 ()
★ 必须调一次 窗口槽位表_初始化()。 ② 用的是「窗口.组队」——自定义数据类型 窗口 的成员(来源:窗口槽位表_数据类型_0928.txt)。
易语言 .成员 不能带默认值,声明即 0;不初始化则 窗口.组队 = 0 → 窗口是否弹出(0) 恒假 → 永远点不到组队窗。
⑥ 为什么“没有自动接受组队” + 怎么让它连续接
① 的块只在 接受组队.选中 为真 时每周期“补一个线程”(重入保护:只在 接受组队线程运行中=假 时启动)。 ② 跑完一次就 接受组队线程运行中=假 并退出 → 单发模型:一次启动处理一个邀请。

要连续自动接,必须让 ① 那个块被反复执行(每个周期 / 时钟 tick 都进来判断一次)。你注释里“原写法每个周期都新开线程”说明它就设计在循环里跑——保持即可:
  周期循环 { .如果真(接受组队.选中) → 自动组队.选中=假 → .如果真(接受组队线程运行中=假) → 回收旧句柄→置真→启动线程(&自动处理组队) }
· 组队窗没弹 → 线程立即返回、running=假 → 下周期再补;
· 组队窗弹着 → 点一次接受、running=假 → 下周期补下一个。
⇒ 这就是“来了就自动接”的连续模型。

如果 ① 只放在“复选框被单击”事件里(只触发一次),它就只处理一个邀请后停 → 表现就是“没有自动接受组队”。 把 ① 整段挪进 时钟 / 挂机主循环 即可解决。

停止:取消勾选 接受组队(.选中=假)→ 不再补线程;在跑的线程跑完自然停(末尾已置 running=假,无需手动停)。
依赖(工程里已有即可):自定义数据类型 窗口(含成员 组队) / 窗口槽位表_初始化() / 窗口是否弹出() / 按钮点击call() / 全局_进程句柄 / 复选框 接受组队(选中)·自动组队(选中) / EThread 支持库。
相关:D:\AI空间\rxjh\窗口槽位表_数据类型_0928.txt  ·  D:\AI空间\rxjh\按钮点击call_纠正_0928.txt
热血江湖助手 · 分析资料站← 报告总目录助手主页