// ===== 全局延迟配置(统一管理所有 sleep、查找、点击节奏) =====
var DelayConfig = {
clickDelayMin: 100, // 点击后最短延迟(模拟手动点完后停顿)
clickDelayMax: 150, // 点击后最长延迟
findTimeout: 150, // findOne 查找控件最大等待时间
findFast: 100, // 快速查找超时
findSlow: 300, // 较慢查找超时
loopSleep: 150, // 循环中每轮的等待时间(如立即购买刷新循环)
stepSleep: 50, // 各阶段之间默认停顿时间
consoleClearInterval: 8000, // 控制台“清空”时间(毫秒)
retryMax: 100, // 每轮最大状态检测次数(即主流程循环次数)
payStepRetry: 15, // 支付阶段内子步骤最大尝试次数
betweenRoundSleep: 0, // 每轮之间的大延迟(完成或异常后等待时间)
busyRefreshSleep: 80 // 忙点刷新间隔(for 立即购买循环,默认 80ms,与设置界面一致)
};
var settingsWindow;
// ===== 全局运行控制开关 =====
var isRunning = false; // 点击“开始/暂停”按钮后切换,用于控制主循环
// ===== 后台线程生命周期控制 =====
var keepRunning = true; // 点击关闭时设为 false,主线程即刻结束
var mainLoopThread = null; // 保存后台线程对象,便于中断
// ===== 购买方式设置 =====
// "送到家" 或 "到店取"
// 默认购买方式改为到店取;实际值将从存储中载入,可在设置里修改
var purchaseMode = "到店取";
// 是否抢两端(加购数量为2)
var grabTwoItems = false;

// ===== 设置持久化(Auto.js Storage) =====
var settingsStore = storages.create("BuyScriptSettings");

function openSettingsWindow() {
if (settingsWindow) return; // 已打开

    settingsWindow = floaty.rawWindow(
        <vertical bg="#DD000000">
            {/* 可拖拽的标题栏 */}
            <horizontal id="title_bar" bg="#FF333333" padding="8" gravity="center_vertical">
                <text text="📱" textColor="#FFFFFF" textSize="16sp" marginRight="8"/>
                <text text="速度参数设置" textColor="#FFFFFF" textSize="16sp" gravity="center" w="*"/>
                <text text="✕" textColor="#FF6666" textSize="18sp" id="btn_title_close" padding="4"/>
            </horizontal>
            
            {/* 内容区域 */}
            <vertical padding="12">
                <text text="通过下方滑块调节脚本点击、查找、循环等速度 (单位 ms)" textColor="#CCCCCC" textSize="12sp" gravity="center" marginTop="2"/>
                <vertical marginTop="8">
                    <horizontal>
                        <text id="lbl_min" text="最小点击延迟: 100ms" textColor="#FFFFFF" textSize="14sp"/>
                        <text id="lbl_max" text="最大点击延迟: 150ms" textColor="#FFFFFF" textSize="14sp" marginLeft="10"/>
                    </horizontal>
                    <seekbar id="sb_min" max="1000" progress="100"/>
                    <seekbar id="sb_max" max="1000" progress="150"/>
                </vertical>
                <vertical marginTop="8">
                    <text id="lbl_loop" text="循环间隔: 150ms" textColor="#FFFFFF" textSize="14sp"/>
                    <seekbar id="sb_loop" max="2000" progress="150"/>
                </vertical>
                <vertical marginTop="4">
                    <text id="lbl_step" text="步骤间隔: 200ms" textColor="#FFFFFF" textSize="14sp"/>
                    <seekbar id="sb_step" max="2000" progress="200"/>
                </vertical>
                <vertical marginTop="4">
                    <text id="lbl_fast" text="快速查找超时: 100ms" textColor="#FFFFFF" textSize="14sp"/>
                    <seekbar id="sb_fast" max="1000" progress="100"/>
                </vertical>
                <vertical marginTop="4">
                    <text id="lbl_slow" text="慢速查找超时: 300ms" textColor="#FFFFFF" textSize="14sp"/>
                    <seekbar id="sb_slow" max="2000" progress="300"/>
                </vertical>
                <vertical marginTop="4">
                    <text id="lbl_busy" text="盲点刷新间隔: 80ms" textColor="#FFFFFF" textSize="14sp"/>
                    <seekbar id="sb_busy" max="2000" progress="80"/>
                </vertical>

                <text text="购买方式" textColor="#FFFFFF" textSize="14sp" marginTop="8"/>
                <radiogroup id="rg_mode" orientation="horizontal">
                    <radio id="rb_home" text="送到家" checked="true" textColor="#FFFFFF"/>
                    <radio id="rb_store" text="到店取" textColor="#FFFFFF"/>
                </radiogroup>
                <checkbox id="cb_grab_two" text="抢两端 (加购数量为2)" textColor="#FFFFFF" checked="false"/>
                <button id="btn_save" text="保存" marginTop="10"/>
                <button id="btn_close" text="关闭" marginTop="4"/>
                <button id="btn_debug" text="Debug" marginTop="4"/>
            </vertical>
        </vertical>
    );
}

openSettingsWindow()显示了一下就又隐藏了

已存档
jay7l4gg4t · 10 天前

回答

Hamibot AI
1
· 10 天前

你提到的 openSettingsWindow() 显示了一下就又隐藏了,可能是由于浮窗窗口(floaty window)没有正确设置或者被系统自动关闭了。以下是一些可能的原因和解决方法:

1. 确保 floaty.rawWindow 正确创建

检查 floaty.rawWindow 是否成功创建并显示。你可以通过添加日志来确认是否执行到相关代码。

function openSettingsWindow() {
    if (settingsWindow) return; // 已打开

    // 添加日志,确认函数是否被调用
    console.log("openSettingsWindow 被调用");

    settingsWindow = floaty.rawWindow(
        <vertical bg="#DD000000">
            {/* 可拖拽的标题栏 */}
            <horizontal id="title_bar" bg="#FF333333" padding="8" gravity="center_vertical">
                <text text="📱" textColor="#FFFFFF" textSize="16sp" marginRight="8"/>
                <text text="速度参数设置" textColor="#FFFFFF" textSize="16sp" gravity="center" w="*"/>
                <text text="✕" textColor="#FF6666" textSize="18sp" id="btn_title_close" padding="4"/>
            </horizontal>
            
            {/* 内容区域 */}
            <vertical padding="12">
                <text text="通过下方滑块调节脚本点击、查找、循环等速度 (单位 ms)" textColor="#CCCCCC" textSize="12sp" gravity="center" marginTop="2"/>
                <vertical marginTop="8">
                    <horizontal>
                        <text id="lbl_min" text="最小点击延迟: 100ms" textColor="#FFFFFF" textSize="14sp"/>
                        <text id="lbl_max" text="最大点击延迟: 150ms" textColor="#FFFFFF" textSize="14sp" marginLeft="10"/>
                    </horizontal>
                    <seekbar id="sb_min" max="1000" progress="100"/>
                    <seekbar id="sb_max" max="1000" progress="150"/>
                </vertical>
                <vertical marginTop="8">
                    <text id="lbl_loop" text="循环间隔: 150ms" textColor="#FFFFFF" textSize="14sp"/>
                    <seekbar id="sb_loop" max="2000" progress="150"/>
                </vertical>
                <vertical marginTop="4">
                    <text id="lbl_step" text="步骤间隔: 200ms" textColor="#FFFFFF" textSize="14sp"/>
                    <seekbar id="sb_step" max="2000" progress="200"/>
                </vertical>
                <vertical marginTop="4">
                    <text id="lbl_fast" text="快速查找超时: 100ms" textColor="#FFFFFF" textSize="14sp"/>
                    <seekbar id="sb_fast" max="1000" progress="100"/>
                </vertical>
                <vertical marginTop="4">
                    <text id="lbl_slow" text="慢速查找超时: 300ms" textColor="#FFFFFF" textSize="14sp"/>
                    <seekbar id="sb_slow" max="2000" progress="300"/>
                </vertical>
                <vertical marginTop="4">
                    <text id="lbl_busy" text="盲点刷新间隔: 80ms" textColor="#FFFFFF" textSize="14sp"/>
                    <seekbar id="sb_busy" max="2000" progress="80"/>
                </vertical>

                <text text="购买方式" textColor="#FFFFFF" textSize="14sp" marginTop="8"/>
                <radiogroup id="rg_mode" orientation="horizontal">
                    <radio id="rb_home" text="送到家" checked="true" textColor="#FFFFFF"/>
                    <radio id="rb_store" text="到店取" textColor="#FFFFFF"/>
                </radiogroup>
                <checkbox id="cb_grab_two" text="抢两端 (加购数量为2)" textColor="#FFFFFF" checked="false"/>
                <button id="btn_save" text="保存" marginTop="10"/>
                <button id="btn_close" text="关闭" marginTop="4"/>
                <button id="btn_debug" text="Debug" marginTop="4"/>
            </vertical>
        </vertical>
    );

    // 确保窗口显示
    settingsWindow.show();
}

2. 确保 floaty 权限已开启

Hamibot 的浮窗功能需要开启“悬浮窗”权限,否则浮窗窗口会无法显示或被系统关闭。你可以通过以下代码检查浮窗权限是否已开启:

if (!float
ℹ️ 本回答由 AI 生成,内容仅供参考