脚本 · 可直接复制

脚本示例

完整可运行的脚本范例。复制到 App 编辑器,改掉识别文字就能用。

示例一:英雄没有闪 — 公会任务日常

自动完成每日 5 次公会任务 + 公会悬赏 + 公会讨伐 BOSS,共六个阶段。 使用前需要针对该游戏训练好 YOLO 模型(类别清单见文末)。

公会任务日常.dsl
#脚本: 英雄没有闪-公会任务日常
#绑定: 英雄没有闪
#默认重试: 3
#默认等待: 0.8~1.8秒

# ============================================
# 阶段一:从主城进入公会界面
# ============================================
状态: 主城
等待 ocr:"主城" 最长10秒

# 点击公会入口按钮(底部菜单栏或主城建筑)
点击 yolo:guild_entry 直到 ocr:"公会"

# ============================================
# 阶段二:公会捐献(每日必做)
# ============================================
状态: 公会主界面
等待 ocr:"公会" 最长10秒

# 点击捐献按钮
点击 yolo:donate_btn 直到 ocr:"捐献"

# 基础捐献(1000奥术结晶)
状态: 捐献界面
点击 yolo:basic_donate 直到 ocr:"捐献成功"

# 关闭捐献弹窗
点击 yolo:close_btn 直到 ocr:"公会"

# ============================================
# 阶段三:公会任务(每日5次,SABC难度)
# ============================================
状态: 公会主界面

# 进入公会任务界面
点击 yolo:guild_task_btn 直到 ocr:"公会任务"

状态: 公会任务列表
等待 ocr:"公会任务" 最长10秒

# 循环5次任务
循环 5 次
    # --- 3.1 刷新任务到S级(有S就不刷)---
    如果 不存在 ocr:"S级"
        # 还有免费刷新次数就刷
        点击 yolo:refresh_btn 直到 ocr:"刷新"
        等待 1~2秒
    结束如果

    # --- 3.2 接取任务(点击第一个任务)---
    状态: 接取任务
    点击 yolo:task_first 直到 ocr:"前往" 或 ocr:"提交"

    # --- 3.3 判断任务类型并执行 ---
    # 类型A:挑战类(需要打怪/通关副本)
    如果 ocr:"前往"
        状态: 执行挑战任务
        点击 ocr:"前往" 直到 ocr:"挑战"
        点击 yolo:challenge_btn 直到 ocr:"战斗中" 或 ocr:"扫荡"

        # 如果有扫荡按钮直接扫荡
        如果 ocr:"扫荡"
            点击 ocr:"扫荡" 直到 ocr:"完成"
        否则
            # 手动战斗等待结束
            状态: 战斗中
            等待 ocr:"胜利" 最长120秒
        结束如果

        # 战斗结算,点击任意处继续
        等待 ocr:"胜利" 最长30秒
        点击 (500,800) 直到 ocr:"公会任务" 或 ocr:"提交"
    结束如果

    # 类型B:提交类(提交道具/材料)
    如果 ocr:"提交"
        状态: 提交任务
        点击 ocr:"提交" 直到 ocr:"确认"
        点击 ocr:"确认" 直到 ocr:"完成"
        点击 yolo:close_btn 直到 ocr:"公会任务"
    结束如果

    # --- 3.4 领取任务奖励 ---
    状态: 领取奖励
    如果 ocr:"领取"
        点击 ocr:"领取" 直到 ocr:"获得"
        点击 yolo:close_btn 直到 ocr:"公会任务"
    结束如果

    # --- 3.5 异常:任务次数用完 ---
    如果 ocr:"次数不足" 或 ocr:"明日再来"
        停止
    结束如果

    等待 1~2秒
结束循环

# ============================================
# 阶段四:公会悬赏赛(如果活动开启)
# ============================================
状态: 返回公会主界面
点击 yolo:close_btn 直到 ocr:"公会"

# 进入悬赏大厅
如果 ocr:"悬赏" 或 yolo:bounty_entry
    点击 yolo:bounty_entry 直到 ocr:"悬赏大厅"

    状态: 悬赏大厅
    等待 ocr:"悬赏大厅" 最长10秒

    # 接取传奇悬赏(4星优先)
    循环 3 次
        如果 yolo:bounty_4star 置信>0.6
            点击 yolo:bounty_4star 直到 ocr:"接取"
            点击 ocr:"接取" 直到 ocr:"前往"
            点击 ocr:"前往" 直到 ocr:"挑战"
            点击 yolo:challenge_btn 直到 ocr:"战斗中"
            等待 ocr:"胜利" 最长120秒
            点击 (500,800) 直到 ocr:"悬赏大厅"
        否则
            # 没有4星就做3星
            如果 yolo:bounty_3star 置信>0.6
                点击 yolo:bounty_3star 直到 ocr:"接取"
                点击 ocr:"接取" 直到 ocr:"前往"
                点击 ocr:"前往" 直到 ocr:"挑战"
                点击 yolo:challenge_btn 直到 ocr:"战斗中"
                等待 ocr:"胜利" 最长120秒
                点击 (500,800) 直到 ocr:"悬赏大厅"
            结束如果
        结束如果

        # 悬赏次数用完
        如果 ocr:"次数不足"
            停止
        结束如果
    结束循环
结束如果

# ============================================
# 阶段五:公会讨伐 BOSS(每日3次)
# ============================================
状态: 返回公会主界面
点击 yolo:close_btn 直到 ocr:"公会"

# 进入公会讨伐
如果 ocr:"讨伐" 或 yolo:boss_entry
    点击 yolo:boss_entry 直到 ocr:"公会讨伐"

    状态: 公会讨伐
    等待 ocr:"公会讨伐" 最长10秒

    循环 3 次
        如果 ocr:"挑战" 或 yolo:challenge_btn
            点击 yolo:challenge_btn 直到 ocr:"战斗中"
            等待 ocr:"胜利" 最长180秒
            点击 (500,800) 直到 ocr:"公会讨伐"
            等待 1~2秒
        否则
            # 次数用完
            停止
        结束如果
    结束循环
结束如果

# ============================================
# 阶段六:返回主城,脚本结束
# ============================================
状态: 返回主城
点击 yolo:home_btn 直到 ocr:"主城"
等待 2秒

# 全部完成
停止

六个阶段

阶段内容关键识别
主城 → 进入公会guild_entryocr:"公会"
公会捐献donate_btnbasic_donate
公会任务 ×5(自动刷 S 级)guild_task_btntask_firstrefresh_btn
公会悬赏赛(4 星优先)bounty_entrybounty_4star
公会讨伐 BOSS ×3boss_entrychallenge_btn
返回主城home_btn

任务类型自动判断

  • 出现 ocr:"前往" → 挑战类任务,自动进入战斗或扫荡
  • 出现 ocr:"提交" → 提交类任务,自动提交道具
  • 出现 ocr:"领取" → 领取任务奖励
  • 出现 ocr:"次数不足" → 提前终止,避免无意义重试

状态节点与自动回退

脚本标记了 12 个状态节点:主城 → 公会主界面 → 捐献界面 → 公会任务列表 → 接取任务 → 执行挑战任务 → 战斗中 → 提交任务 → 领取奖励 → 悬赏大厅 → 公会讨伐 → 返回主城。

当画面因为弹窗、掉线、切后台发生变化时,引擎会自动匹配最近的状态节点回退继续执行, 而不是从头重跑。这是长期无人值守的关键。

示例二:野外刷怪(极简)

#脚本: 野外刷怪
#默认等待: 0.8~1.8秒

状态: 野外
循环
    点击 yolo:monster 直到 ocr:"战斗中"
    等待 ocr:"战斗胜利" 最长30秒
    点击 yolo:loot

    如果 ocr:"网络断开"
        停止
    结束如果
结束循环

示例三:多账号轮询

在脚本头部加登录与登出切号,用轮询循环包住业务逻辑,即可自动跑完整个账号池:

#脚本: 英雄没有闪-公会任务-多账号
#绑定: 英雄没有闪
#模式: 轮询
#默认重试: 3
#默认等待: 0.8~1.8秒

循环(轮询)
    # === 登录阶段 ===
    状态: 登录页
    等待 ocr:"登录" 最长10秒
    输入 yolo:input_account 内容 "${account}"
    输入 yolo:input_password 内容 "${password}"
    点击 yolo:login_btn 直到 ocr:"主城"

    # === 上面示例一的阶段一到阶段六 ===

    # === 登出切号 ===
    状态: 登出
    点击 yolo:setting_btn 直到 ocr:"退出登录"
    点击 ocr:"退出登录" 直到 ocr:"登录"
    标记成功
结束循环

需要训练的 YOLO 目标

示例一中用到的类别名,需要在模型里一一对应标注,否则识别不到。

类别名说明建议标注量
guild_entry主城公会入口按钮 / 建筑30~50 张
donate_btn公会捐献按钮20~30 张
basic_donate基础捐献按钮20 张
guild_task_btn公会任务入口20~30 张
task_first任务列表第一个任务30 张(覆盖不同任务样式)
refresh_btn任务刷新按钮20 张
challenge_btn挑战 / 开始战斗按钮30~50 张
close_btn关闭 / 叉号按钮50 张(各种弹窗样式)
bounty_entry悬赏大厅入口20 张
bounty_4star4 星悬赏任务20~30 张
bounty_3star3 星悬赏任务20~30 张
boss_entry公会讨伐入口20 张
home_btn返回主城按钮20 张

OCR 文字不需要训练,引擎内置通用 OCR 直接识别。但脚本里 ocr:"..." 的文字必须与游戏内实际文字一致。

使用前检查清单

  1. YOLO 模型已训练并导入 App,类别名与脚本完全一致
  2. 游戏已登录,停在主城界面
  3. 背包中有足够的提交类任务材料
  4. 体力充足(挑战类任务需要体力)
  5. 悬浮状态条已开启,可观察执行进度
  6. 先用单步调试跑一遍,确认每个按钮识别准确,再开启全自动