mirror of
https://github.com/babalae/bettergi-scripts-list.git
synced 2026-03-15 03:23:22 +08:00
药品消耗统计脚本使用说明
📋 一、脚本概述
- 多模式识别:支持「营养袋模式」「筛选模式」「综合模式」三模式适配不同场景的药品识别
- 精准OCR读取:自动识别背包中指定回血/复活/攻击/防御/其他药品数量,适配不同界面布局
- 灵活时间配置:支持自定义每日统计刷新时间(默认4:00,可设0-24小时及一位小数)
- 智能数据管理:自动保留30天历史记录,按自定义时间周期统计药品消耗/新增
- 多账户隔离:不同账户数据独立存储,支持合规账户名校验(1-20位中英文/数字)
- 异常友好处理:识别失败自动兜底、参数错误智能修正,拒绝进入世界的申请
- 模块化设计:代码结构优化,新增攻击药、防御药、其他药支持
🛠️ 二、环境与工具要求
必备工具:茶包版BGI
公版BGI默认关闭自动吃药功能且无法通过脚本开启,本脚本依赖该功能实现消耗统计,因此必须使用茶包版BGI。
系统配置要求
- 游戏分辨率:固定1920×1080(不可修改,影响OCR识别区域定位)
- 游戏和js设置:
- 需装备「便携营养袋」
- 启用「筛选模式」需要填写完整的药名
📥 三、获取茶包版BGI
- 优先方式:在脚本仓库搜索关键词「茶包」,进入作者主页下载
- 备用方式:查阅「锄地一条龙js」的README文档,通过文档末尾群号加入测测莫酱交流群获取
⚙️ 四、全参数配置说明(新增/细化)
| 参数项 | 类型 | 填写要求 | 默认值 | 核心说明 |
|---|---|---|---|---|
| runMode | 下拉选择 | 三选一:「营养袋模式」/「筛选模式」/「综合模式」 | 营养袋模式 | 营养袋模式:读取便携营养袋内药品;筛选模式:通过背包筛选搜索药品;综合模式:营养袋模式+筛选模式结合 |
| initSelect | 复选框 | 仅初始化/重置时临时勾选 | false | 勾选后运行脚本会删除当日同名记录,重新初始化数据(使用后务必取消) |
| recoveryFoodName | 文本输入 | 与游戏内回血药名称完全一致 | 空 | 例:「美味的甜甜花酿鸡」,名称错误会导致识别失败 |
| resurrectionFoodName | 文本输入 | 与游戏内复活药名称完全一致 | 空 | 例:「美味的提瓦特煎蛋」,支持全量游戏内可食用复活类物品 |
| attackFoodName | 文本输入 | 与游戏内攻击药名称完全一致 | 空 | 例:「美味的堆高高」,支持全量游戏内攻击增益类物品 |
| defenseFoodName | 文本输入 | 与游戏内防御药名称完全一致 | 空 | 例:「美味的贝壳彩糖」,支持全量游戏内防御增益类物品 |
| otherFoodName | 文本输入 | 与游戏内其他药名称完全一致 | 空 | 例:「美味的风神杂烩菜」,支持全量游戏内其他增益类物品 |
| userName | 文本输入 | 1-20字符,仅支持中英文、数字 | 默认账户 | 多账户区分核心,违规名称自动替换为默认账户 |
| refreshTime | 文本输入 | 0-24之间,支持一位小数 | 4.0 | 自定义每日统计周期分界点(如4.5=4:30),错误值自动修正为4.0 |
| loadDelay | 文本输入 | 非负整数(单位:毫秒) | 800 | 界面打开/切换的等待延迟,低配置设备可适当增大 |
| stepDelay | 文本输入 | 非负整数(单位:毫秒) | 500 | OCR识别/输入药名前的短暂等待,保证识别稳定性 |
配置优先级
脚本运行时参数读取规则:自定义配置 > 默认值,参数错误时自动兜底为默认值并输出警告日志。
🔄 五、操作流程(适配双模式)
场景一:首次使用 / 新账户
- 启用筛选模式需要完成参数配置(填写药品名称),启用营养袋模式则需要营养袋装备两种药品
- 确认游戏分辨率1920×1080、BGI自动吃药功能开启,便携营养袋已装备
- 运行脚本,自动执行:
- 校验账户名合法性 → 打开背包 → 按选定模式识别药品数量
- 在
assets/目录生成「账户名.txt」记录文件
- 收到「今日初始化完成」通知,首次配置完成
场景二:日常使用(分模式)
营养袋模式
- 脚本自动打开背包→进入小道具→读取便携营养袋内回血/复活药数量
- 无需手动筛选,识别速度更快,依赖便携营养袋装备状态
筛选模式
- 脚本自动打开背包→进入食物分类→筛选搜索指定药品→读取数量
- 无需装备营养袋,适配未配置营养袋的场景,识别流程稍长
- 只处理回血药和复活药
综合模式
- 脚本自动执行:营养袋模式识别回血/复活药 + 筛选模式识别攻击/防御/其他药
- 结合两种模式优势,支持全类型药品统计
- 回血药和复活药通过营养袋模式获取,攻击药、防御药、其他药通过筛选模式获取
通用规则
- 每日首次运行(自定义refreshTime后):记录为当日初始值
- 后续运行:对比初始值计算消耗/新增(正数=消耗,负数=新增)
- 每次运行自动保存记录,仅保留30天内数据,过期自动清理
- 只记录数量大于0的药品数据
场景三:更换药品/重置统计数据
- 在设置中勾选
initSelect选项 - 确认药品名称已更新为新名称(如需更换)
- 运行脚本一次,收到「强制初始化完成」通知
- 立即取消
initSelect勾选(避免后续运行重复初始化)
📊 六、核心机制(新增/补充)
1. 自定义统计周期计算规则
以refreshTime为分界点,脚本自动判定统计范围:
- 当前时间 < 当日refreshTime:统计「昨日refreshTime → 今日refreshTime」数据
- 当前时间 ≥ 当日refreshTime:统计「今日refreshTime → 明日refreshTime」数据 示例:refreshTime=4.5(4:30),当前时间3:00 → 统计昨天4:30至今;当前时间5:00 → 统计今天4:30起。
2. 记录文件格式
时间:202X/XX/XX XX:XX:XX-【药品名称】-【数量】
时间:202X/XX/XX XX:XX:XX-【药品名称】-【数量】
...
每条记录包含时间戳+药品名+数量,支持5种药品类型:
- 回血药
- 复活药
- 攻击药
- 防御药
- 其他药
注意:只生成数量大于0的药品记录,保证数据有效性。
3. OCR识别异常处理
| 异常场景 | 处理逻辑 | 通知/日志 |
|---|---|---|
| OCR未识别到文本 | 数量设为0 | 推送「未识别到XX药数量,设置为0」通知 |
| 药品名称为空 | 识别结果无效 | log.warn「XX药名字没填」 |
| refreshTime非法 | 自动修正为4.0 | log.warn「刷新时间设置错误,使用默认值4.0」 |
| 账户名违规 | 替换为默认账户 | log.error「账户名XX违规,使用默认账户」 |
| 数量为0 | 不记录数据 | 只记录数量大于0的药品数据,通知中只显示有效数据 |
⚠️ 七、重要注意事项(强化)
1. 运行时机建议
- 每日首次运行:在锄地/刷本前、药品制作后执行,保证初始值准确
- 避免在两次脚本运行之间大批量制作/使用药品,防止统计偏差
- 低配置设备:适当增大loadDelay/stepDelay,提升识别成功率
2. 三模式适配要点
| 模式 | 优势 | 注意事项 |
|---|---|---|
| 营养袋模式 | 识别快、步骤少 | 必须装备便携营养袋,仅识别营养袋内药品 |
| 筛选模式 | 无需装备营养袋 | 药品名称必须精准,依赖背包筛选功能正常,只处理回血药和复活药 |
| 综合模式 | 支持全类型药品统计 | 结合营养袋模式和筛选模式,需要装备便携营养袋 |
3. 建议搭配JS通知使用
- 推荐使用JS通知:本脚本会发送各类通知,包括初始化完成、使用情况、异常提醒等
- 通知好处:及时获取统计结果,不错过重要信息,方便日常使用
- 确保通知功能正常:请确保BGI的JS通知功能已开启,以便接收脚本发送的各类通知
- 通知内容:包含账户信息、药品使用情况、库存信息等,格式清晰易读
4. 常见误区修正
❌ 错误:initSelect长期勾选 → 每次运行都重置数据,无法统计消耗
✅ 正确:仅重置/换药品时勾选,运行后立即取消
❌ 错误:随意修改refreshTime后未重启脚本 → 统计周期混乱 ✅ 正确:修改refreshTime后重新运行脚本,生效新的统计分界点
❌ 错误:分辨率改为非1920×1080 → OCR识别区域错位 ✅ 正确:固定游戏分辨率为1920×1080,不可自定义
🔧 八、故障排查指南(新增模式/参数排查)
| 问题现象 | 优先检查项 | 解决方案 |
|---|---|---|
| 药品数量识别为0 | 1. 运行模式是否匹配场景 2. 药品名称是否完全一致 3. 综合模式是否装备了营养袋 |
1. 营养袋模式需装备营养袋;筛选模式检查背包食物分类 2. 复制游戏内药品全名(含「美味的/冷的」等前缀) 3. 综合模式需要装备便携营养袋 |
| 统计周期错误 | 1. refreshTime是否合法 2. 系统时间是否准确 |
1. 确认值在0-24之间(如4.0/12.5),错误值会自动修正 2. 同步系统时间到网络标准时间 |
| 脚本运行卡顿/超时 | 1. loadDelay/stepDelay是否过小 2. 设备性能是否不足 3. 综合模式下是否需要更长延迟 |
1. 逐步增大延迟值(如loadDelay改为1000) 2. 关闭后台无关程序,保证游戏前台运行 3. 综合模式包含更多步骤,可适当增大延迟 |
| 部分药品未记录 | 1. 药品名称是否填写 2. 药品数量是否大于0 3. 对应模式是否支持该类型药品 |
1. 检查对应药品名称是否正确填写 2. 只记录数量大于0的药品数据 3. 筛选模式只处理回血药和复活药,攻击/防御/其他药需使用综合模式 |
| 多账户数据混淆 | 1. userName是否唯一 2. 记录文件是否存在重名 |
1. 为每个账户设置唯一名称(如「旅行者001/旅行者002」) 2. 检查assets目录,删除重名的错误记录文件 |
| 模式切换后识别失败 | 1. 对应模式的模板图片是否存在 2. 点击坐标是否匹配分辨率 3. 综合模式是否包含所有必要的模板图片 |
1. 确认assets目录有「营养袋.png」「筛选1.png」「筛选2.png」等 2. 重新确认游戏分辨率为1920×1080 3. 综合模式需要营养袋和筛选相关的所有模板图片 |