Files
bettergi-scripts-list/repo/js/AccountSwitchStateMachine
mno b69f61d3dd js:带状态机的账号切换 (#2949)
* js:带状态机的账号切换

使用状态机管理账号切换过程中的各种页面
提高流程稳定性并方便管理和新增异常处理
支持自动截图保存,双模式切换账号

* Update main.js

将状态切换需要用到的函数挂载到globalThis,以适配AutoJs作为其中的账号切换工具

* 修复提到的问题

* Update main.js

修复提到的问题

* Update main.js

* Update main.js

* Update main.js
2026-03-04 18:35:10 +08:00
..

账号切换工具使用说明

快速开始

方式一:账号图片识别(推荐)

  1. 准备账号图片

    • 推荐方式:使用脚本的"截图模式"自动获取并保存截图(详见截图模式部分)
    • 手动方式:在 accounts/ 目录下放置账号截图
    • 图片命名为 {UID}.png,如 284073800.png
    • 截图应包含账号选择界面中该账号的明显标识
  2. 配置脚本

    • 打开BetterGI配置面板
    • 填写目标账号UID
    • 确保"跳过搜索直接输入账号密码"未勾选
  3. 运行脚本

    • 脚本会自动定位到账号选择界面
    • 识别并点击对应账号图片
    • 自动进入游戏并返回主界面

方式二:账号密码输入

  1. 配置脚本

    • 打开BetterGI配置面板
    • 填写目标账号UID用于通知显示
    • 填写账号和密码
    • 勾选"跳过搜索直接输入账号密码"
  2. 运行脚本

    • 脚本会自动进入账号密码输入界面
    • 自动点击同意按钮、输入账号密码
    • 自动进入游戏并返回主界面

说明

  • 两种方式可同时使用:方式二作为方式一的补充,当图片识别失败时会自动回退到账号密码方式
  • 推荐配置:同时填写账号密码作为备用,提高切换成功率

截图模式

截图模式是一个辅助功能,用于自动获取并保存账号图片,方便后续使用账号图片识别方式进行切换。

使用步骤

  1. 配置脚本

    • 打开BetterGI配置面板
    • 填写目标账号UID优先使用用于命名图片
    • 勾选"截图模式"
  2. 运行脚本

    • 脚本会优先使用配置中的"要切换到的账号UID"命名图片
    • 如果未填写该项会尝试自动识别当前账号的UID
    • 导航到账号选择界面
    • 自动截图并保存账号图片
    • 返回主界面并发送成功通知

保存位置

  • 图片保存在 accounts/ 目录下
  • 文件名格式为 {UID}.png

配置说明

在BetterGI的配置面板中进行以下设置

1. 目标账号UID

  • 输入要切换到的账号UID
  • 用于识别账号图片文件名、通知显示和截图模式命名

2. 账号(可选)

  • 当无法通过图片识别找到账号时备用
  • 建议填写,以防图片识别失败

3. 密码(可选)

  • 当无法通过图片识别找到账号时备用
  • 建议填写,以防图片识别失败

4. 跳过搜索直接输入账号密码

  • 勾选:不尝试查找账号图片,直接使用账号密码登录
  • 不勾选:优先尝试通过账号图片识别切换,失败时回退到账号密码方式

5. UID校验

  • 勾选在切换前后检查当前账号UID辅助判断切换是否成功
  • 不勾选不进行UID校验

6. 截图模式

  • 勾选进入截图模式自动截图保存对应UID的账号图片
  • 不勾选:正常执行账号切换流程

常见问题

Q: 账号图片识别失败怎么办?

A: 确保:

  1. 图片存放在 accounts/ 目录下
  2. 图片命名为正确的UID格式
  3. 截图清晰,包含账号的明显标识
  4. 同时填写账号密码作为备用方案

Q: 切换失败后会怎样?

A: 脚本会尝试返回主界面,并发送失败通知。如果配置了账号密码,建议手动检查账号状态。

Q: 为什么需要填写UID

A: UID用于

  1. 确定账号图片文件名
  2. 在通知中显示切换的账号信息
  3. 截图模式下命名保存的图片文件

注意事项

  1. 首次使用前建议先手动测试一遍切换流程
  2. 确保游戏分辨率为1920x1080
  3. 账号图片建议截取账号选择界面中该账号的清晰截图
  4. 密码输入时不会显示,属于正常现象
  5. 截图模式下默认使用设置的目标UID未设置时会尝试自动识别

问题反馈

如果在使用过程中遇到预料之外的弹窗或其他问题,脚本可能无法处理,请按照以下方式反馈:

  1. 截图保存:截取全屏原图,确保包含完整的游戏界面和弹窗
  2. 联系作者QQ号 718135749
  3. 提供信息:简要描述遇到的问题和操作步骤

感谢您的支持!

项目介绍(点击展开)

项目介绍

基于状态机实现的自动账号切换脚本,支持通过账号图片识别或手动输入账号密码两种方式切换原神账号。

功能特性

  • 双模式切换:支持账号图片自动识别和账号密码手动输入两种方式
  • 状态机管理:使用有限状态机管理切换流程,稳定可靠
  • 自动返回:切换失败时自动尝试返回原账号
  • 通知提醒:切换成功或失败时发送系统通知
  • 循环防护:防止状态循环卡死
  • UID校验支持切换前后检查当前账号UID提高切换准确性
  • 截图模式:自动截图保存账号图片,方便后续切换

目录结构

AccountSwitchStateMachine/
├── main.js                    # 主脚本文件
├── manifest.json              # 脚本清单
├── settings.json              # 配置定义
├── assets/
│   ├── states.json            # 状态机配置
│   └── RecognitionObjects/    # 状态识别图片
│       ├── Paimon.png
│       ├── Menu.png
│       ├── PrepareToLogOut.png
│       ├── SwitchAccount.png
│       ├── Exit.png
│       ├── EnterGame.png
│       ├── LoginOther.png
│       ├── SelectAccount.png
│       ├── EnterAccountAndPassword.png
│       ├── Agree.png
│       ├── EnterAccount.png
│       ├── EnterPassword.png
│       ├── EnterGame2.png
│       ├── Login.png
│       └── Confirm.png
└── accounts/                  # 账号图片存放目录
    └── {uid}.png              # 以UID命名的账号截图

工作流程

开始
│
├─► 截图模式(勾选时)
│   ├─► 使用设置的UID或识别当前UID
│   ├─► 导航到账号选择界面
│   ├─► 截图保存账号图片
│   └─► 返回主界面
│       ├─► 成功 → 发送成功通知
│       └─► 失败 → 发送失败通知
│
├─► 尝试账号图片方式(未勾选跳过时)
│   ├─► 预加载账号图片
│   ├─► 切换到选择账号界面
│   ├─► 查找并点击账号图片
│   └─► 切换到主界面
│       ├─► 成功 → 发送成功通知
│       └─► 失败 → 回退到账号密码方式
│
└─► 账号密码方式
    ├─► 检查账号密码
    ├─► 切换到输入账号密码界面
    ├─► 点击同意按钮
    ├─► 输入账号密码
    ├─► 点击进入游戏
    └─► 切换到主界面
        ├─► 成功 → 发送成功通知
        └─► 失败 → 尝试返回原账号 → 发送失败通知

状态说明

状态名 说明
mainUI 主界面(派蒙图标)
menuUI 菜单界面ESC菜单
prepareToLogOut 预备退出登录界面
loginScreen 登录界面(切换账号按钮)
exitAccount 退出账号界面
enterGame 进入游戏或登录其他账号界面
selectAccount 选择账号界面
enterAccountAndPassword 输入账号密码界面
noAccount 无账号登录界面

更新日志

v1.0

  • 初始版本
  • 实现状态机管理
  • 支持账号图片和账号密码两种切换方式
  • 添加自动返回和通知功能