# me **Repository Path**: Frame_7/me ## Basic Information - **Project Name**: me - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-28 - **Last Updated**: 2026-07-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Frame_7 — MLB The Show 市场自动交易机器人 一个基于 **OCR 屏幕识别 + 虚拟 Xbox 手柄操作 + 市场行情 API** 的游戏市场(Marketplace)自动化交易机器人。程序通过官方行情接口筛选高利差商品,在游戏内自动挂求购单(低买)与寄售单(高卖),赚取买卖价差。 ## 工作原理 ``` 行情 API (theshow.com) ──► 筛选高利差商品 ──► 生成商品池 (top_items.json) │ ┌───────────────────────────────┘ ▼ BotRunner 主循环 │ ┌───────────────┼──────────────────┐ ▼ ▼ ▼ OCR 识别 虚拟手柄操作 本地订单账本 (RapidOCR) (vgamepad 模拟 (shuju/*.json 页面状态/金币/ Xbox 按键导航、 买卖订单、库存 价格/订单列表 搜索、挂单、撤单) 持久化与对账) ``` 1. **拉取行情**:通过 `AuctionAPI` 从 `mlb26.theshow.com` 拉取全分类(球员卡 / 装备 / 解锁道具)商品行情,按买卖价差(spread)筛选并排序出最优商品池。 2. **屏幕识别**:`ScreenDetector` / `OCRUtils` 使用 RapidOCR + OpenCV 模板匹配识别当前页面状态(分类页 / 列表页 / 详情页)、金币余额、订单列表和商品价格。 3. **模拟操作**:`XboxController` 通过 vgamepad 创建虚拟 Xbox 360 手柄,模拟按键在游戏 UI 中导航、搜索商品、输入价格并提交订单;`pyautogui` / `pyperclip` 辅助完成文本输入。 4. **订单管理**:`ActiveOrderStore` 将挂单持久化到 JSON 文件,并定期与游戏内订单页 OCR 结果**对账**,保持本地账本与实际一致。 5. **循环策略**:定时刷新商品池 / Top30 榜单 / 价格轮询 / 库存同步,价格偏离时自动撤单改价;达到金币上限或最长运行时间后自动停止。 ## 项目结构 ``` Frame_7/ ├── requirements.txt └── Frame/ ├── main.py # 程序入口 ├── config.py # BotConfig:坐标、定价规则、运行策略等全部配置 ├── runner.py # BotRunner:主循环、买卖调度、对账逻辑 ├── controller.py # 虚拟手柄控制、订单管理、下单操作 ├── ocr.py # 页面检测、金币/价格 OCR ├── api.py # 行情 API、库存 API、定价过滤器 ├── storage.py # 商品池 / 活动订单 / 库存的 JSON 持久化 ├── utils.py # 窗口激活、截图、OCR 结果解析、名称清洗 └── shuju/ # 运行时数据 ├── top_items.json # 全量筛选后的商品池 ├── top30_items.json # Top N 高利差商品 ├── inventory.json # 账号可售库存 ├── active_buy_orders.json # 当前求购单账本 └── active_sell_orders.json # 当前寄售单账本 ``` ## 环境要求 - **Windows 10/11**(依赖屏幕截图、窗口管理和虚拟手柄驱动) - **Python 3.10+**(代码使用了 `dict | None` 等新式类型标注) - **[ViGEmBus 驱动](https://github.com/nefarius/ViGEmBus/releases)**:vgamepad 虚拟手柄的前置依赖,需手动安装 - 游戏窗口分辨率 **1920×1080**(所有 OCR 区域坐标基于此分辨率标定) ## 安装 ```powershell # 创建并激活虚拟环境 python -m venv .venv .\.venv\Scripts\Activate.ps1 # 安装依赖 pip install -r requirements.txt ``` > 注意:还需要在 `Frame/` 下准备 `template/` 目录,放置弹窗关闭按钮模板图 `pop_close.png`(用于 OpenCV 模板匹配检测弹窗)。 ## 配置 所有配置集中在 [Frame/config.py](Frame/config.py) 的 `BotConfig` 类中,主要分为: | 配置组 | 说明 | | --- | --- | | 通用弹窗输入坐标 | 价格输入框、确认按钮的屏幕坐标 | | 定价规则 | 加价/减价幅度、最小利润间距、出价上下限 | | 核心运行策略 | 商品池刷新间隔、价格轮询间隔、最大订单数、金币上限、最长运行时长 | | 图色 / OCR 识别 | 各页面 OCR 区域坐标、模板匹配阈值 | | 数据文件 | `shuju/` 下各 JSON 文件路径 | | API | 行情接口地址、库存接口地址与凭据 | 使用前需按自己的环境修改: - `GAME_WINDOW_TITLE`:游戏窗口标题关键字 - `INVENTORY_API_KEY` / `INVENTORY_EMAIL`:库存接口的账号凭据 - 若分辨率或 UI 布局不同,需重新标定各 `*_REGION` 坐标 ## 运行 ```powershell cd Frame python main.py ``` 启动后程序会: 1. 激活游戏窗口并校准页面状态(自动回退到商品列表页); 2. 拉取行情生成商品池; 3. 进入主循环自动挂单 / 改价 / 撤单 / 对账; 4. 触发以下条件时自动停止:金币达到 `MAX_COINS`、运行超过 `MAX_RUN_HOURS`。 运行过程中会在工作目录生成 `debug_*.png` 截图(金币区域、订单列表等),用于排查 OCR 识别问题。 ## 免责声明 本项目仅供学习自动化、OCR 与模拟输入技术之用。使用自动化脚本可能违反游戏服务条款并导致账号封禁,请自行评估风险。