mirror of
https://github.com/babalae/bettergi-scripts-list.git
synced 2026-03-29 05:39:51 +08:00
* feat(activity): 优化活动筛选逻辑并添加白名单功能 - 新增 relationship 配置项,控制剩余时间与白名单的逻辑关系 - 将 activityNameList 重命名为 whiteActivityNameList 作为白名单功能 - 实现白名单与黑名单的互斥过滤机制 - 更新活动筛选逻辑,支持按剩余时间或白名单条件过滤 - 修改通知标题构建逻辑,显示剩余时间与白名单配置信息 - 更新 README 文档说明白名单与逻辑关系配置使用方法 * chore(ActivitySwitchNotice): 更新版本号 - 将版本号从 0.0.2 更新到 0.0.3 * fix(ActivitySwitchNotice): 修正活动识别日志消息 - 修正了未识别到活动时的日志消息文案,从"未识别到任何活动"改为"不存在符合条件的活动" * refactor: 优化秘境征讨提醒逻辑代码结构 * fix(activity): 修复活动白名单过滤逻辑 - 修复了当配置了关系条件时活动白名单过滤的问题 - 添加了对 config.relationship 的检查以决定是否跳过活动处理 - 确保在没有关系配置的情况下仍然按照白名单过滤活动 * fix(ActivitySwitchNotice): 修复活动白名单逻辑判断错误 - 修正了白名单活动匹配时的关系判断逻辑 - 将 !config.relationship 条件改为 config.relationship - 确保只有在关系配置正确时才跳过非白名单活动 * refactor(ActivitySwitchNotice): 优化OCR识别函数命名 - 将OcrRemainingTime函数重命名为OcrKey以提高通用性 - 更新函数调用以使用新的函数名称 - 保持原有功能逻辑不变,仅优化函数命名规范 * fix(activity): 修复OCR识别和活动过滤逻辑 - 修复OCR识别时资源释放位置,添加try-finally确保截图资源正确释放 - 修改OCR识别逻辑,支持返回多个匹配结果并用'<-->'连接 - 修复活动名称过滤条件中的逻辑运算符空格问题 - 优化代码结构,提高OCR识别的稳定性和准确性 * fix(ActivitySwitchNotice): 修复活动识别结果处理逻辑 - 将 Set 数据结构改为数组并使用 push 方法添加元素 - 保持原有的文本识别和日志记录功能 - 确保返回识别到的文本结果 * feat(ActivitySwitchNotice): 添加根据键名部分内容获取Map值的工具函数 - 新增getMapByKey函数,支持通过键名部分匹配获取Map中的值 - 更新needOcrOtherMap配置,为"飒勇争锋"和"幽境危战"活动添加OCR识别项 - 修改代码逻辑,使用getMapByKey函数替代原有的精确匹配方式 - 优化活动OCR处理流程,提升键名匹配的灵活性 * refactor(ActivitySwitchNotice): 优化OCR识别功能 - 移除"飒勇争锋"活动的OCR配置项 - 修复getMapByKey函数参数格式问题 - 添加函数间空白行以改善代码可读性 - 增强OCR识别日志记录功能,添加命中标识 - 修复变量赋值和参数传递的格式问题 * feat(ActivitySwitchNotice): 添加通用关键词OCR识别功能 - 新增commonList常量定义通用关键词列表 - 实现通用关键词的OCR识别逻辑 - 将识别结果添加到剩余时间文本中 - 支持对已完成等通用状态的自动识别 * feat(ActivitySwitchNotice): 添加通用关键词显示功能 - 在activity.js中添加common变量存储通用关键词 - 将通用关键词信息保存到activityMap中 - 在notice.js中读取并显示通用关键词信息 - 修复通知文本中的格式问题 - 优化条件判断中的空格格式 * docs(ActivitySwitchNotice): 更新README文档添加剩余时间与白名单关系配置说明 - 新增:支持剩余时间和白名单的"与"关系和"或"关系配置说明 - 完善了配置参数文档,增加了`relationship`参数的详细说明 - 更新了版本发布信息和变更日志格式 * feat(ActivitySwitchNotice): 添加剩余时间与白名单关系配置和完成状态显示 - 支持剩余时间和白名单的"与"关系和"或"关系配置 - 添加标记界面显示 `已完成` 的活动功能 - 修复活动过滤逻辑问题,将`activityNameList`更改为`whiteActivityNameList` - 新增黑名单与白名单的互斥过滤机制,黑名单中剔除白名单 - 在配置中增加`relationship`参数,用于控制剩余时间与白名单活动的逻辑关系 * fix(ActivitySwitchNotice): 修复活动切换通知中的逻辑错误和显示问题 - 修复剩余时间白名单关系逻辑,默认从`与`改为`或`关系 - 移除过早的返回语句,确保列表处理逻辑完整执行 - 调整注释格式以保持代码一致性 * fix(ActivitySwitchNotice): 修复活动通用键处理逻辑 - 将common变量初始化为数组而非undefined - 使用push方法将OCR识别文本添加到数组中 - 将数组内容通过逗号连接成字符串存储 - 当数组为空时保持undefined值以维持原有行为 * refactor(Notice): 重构活动通知黑名单文本拼接逻辑 * refactor(ActivitySwitchNotice): 重命名活动学期转换函数并添加文档注释 - 将 getDATE_ENUM 函数重命名为 getActivityTermConversion 以提高语义清晰度 - 为函数添加 JSDoc 注释说明参数和返回值类型 - 在函数内部添加代码注释解释逻辑流程 - 更新函数调用处的函数名称引用 * refactor(ActivitySwitchNotice): 移除废弃的滚动到顶部功能 - 删除了 scrollPagesByActivityToTop 函数的完整实现 - 移除了相关的OCR检测和鼠标滚动逻辑 - 清理了游戏区域截图和资源释放代码 - 保留了优化版的滚动到顶部功能注释 * fix(ActivitySwitchNotice): 修复截图资源释放问题 - 添加 try-finally 块确保 captureRegion 资源正确释放 - 防止截图资源未释放导致的内存泄漏问题 - 保持截图识别和滚动逻辑不变 - 修复黑名单文本格式中的多余空格问题 * refactor(ActivitySwitchNotice): 优化活动列表扫描逻辑的资源管理 - 添加 try-finally 块确保 captureRegion 资源正确释放 - 修复资源泄露问题,避免未调用 dispose() 方法 - 保持原有的活动识别和滚动扫描功能不变 - 优化代码结构提高可读性和维护性 * fix(ocr): 修复OCR文本提取时的空值问题 - 添加了对OCR提取结果的空值检查 - 避免将空值推入common数组中 - 确保只有有效的文本内容才会被添加到数组中
活动期限/周本通知器
项目概述
这是一个用于《原神》游戏的自动化脚本工具,主要功能是自动检测游戏内活动的剩余时间,并在活动即将结束时/每周指定日期自动提醒征讨领域减半剩余次数发送通知提醒玩家。
功能特性
- ✅ 自动返回游戏主界面并打开活动页面
- ✅ OCR识别活动列表和剩余时间
- ✅ 自动滚动浏览所有活动页面
- ✅ 智能解析剩余时间(支持"22天14小时"等格式)
- ✅ 可配置的通知阈值(默认8760小时内结束的活动)
- ✅ 支持指定特定活动进行监控
- ✅ 支持活动黑名单过滤功能
- ✅ 防重复检测机制
- ✅ 异常处理和错误恢复
- ✅ 自动提醒征讨领域减半剩余次数(默认
周日提醒可配置)
用户使用指南
快速开始
1. 安装与配置
- 确保游戏分辨率为 1920×1080(推荐分辨率)
- 将脚本导入到 BetterGI 脚本管理器中
- 在脚本设置界面进行个性化配置
2. 基础设置
在 settings.json 中可以配置以下参数:
| 设置项 | 说明 | 默认值 | 开放 |
|---|---|---|---|
toMainUi |
执行前是否自动返回游戏主界面 | true | v |
relationship |
剩余时间与白名单启用和关系(默认或关系) |
false | v |
whiteActivityNameList |
白名单活动名称(用|分隔) | 空(监控所有活动) | v |
blackActivityNameList |
黑名单活动名称(用|分隔) | 空(无黑名单活动) | v |
notifyHoursThreshold |
通知时间阈值(小时) | 8760(365天) | v |
activityKey |
打开活动页面的快捷键 | F5 | v |
toTopCount |
滑动到顶最大尝试次数 | 10 | x |
scrollPageCount |
滑动次数/页 | 4 | x |
campaignAreaKey |
打开征讨领域页面的快捷键 | F1 | v |
campaignAreaReminderDay |
周本提醒日(0-6,0=周日,1=周一,2=周二,3=周三,4=周四,5=周五,6=周六) | 0 | v |
使用流程
自动模式(推荐)
- 启动脚本后,程序会自动:
- 检测当前是否在游戏主界面
- 如未在主界面,自动返回主界面
- 按设定的快捷键打开活动页面
- 开始扫描所有活动
手动模式
- 关闭
toMainUi选项 - 确保游戏处于主界面状态
- 启动脚本开始扫描
功能详解
活动筛选
- 全部活动监控:
whiteActivityNameList保持空值,监控所有有剩余时间的活动 - 指定活动监控:填写活动关键词,如
海灯节\|盛典,只监控包含这些关键词的活动 - 黑名单过滤:
blackActivityNameList可以设置不想接收提醒的活动名称,多个活动用|分隔
时间通知机制
- 默认监控所有活动(
notifyHoursThreshold=8760小时) - 可设置阈值,如设置为24,则只通知剩余时间≤24小时的活动
- 即将结束(24小时内)的活动会在通知中标记
<即将结束>
逻辑关系配置
relationship为false(默认):满足"剩余时间阈值"或"白名单活动"任一条件即发送通知relationship为true:必须同时满足"剩余时间阈值"和"白名单活动"两个条件才发送通知
智能防重复
- 自动识别已扫描过的活动页面
- 防止因页面滚动不准确造成的重复识别
- 自动判断是否已滚动到页面底部
注意事项
使用环境要求
- ✅ 游戏分辨率为 1920×1080(最佳兼容性)
- ✅ 游戏处于前台运行状态
- ✅ 活动页面可通过设置的快捷键正常打开
运行期间注意事项
- 🚫 运行期间请勿手动操作鼠标
- 🚫 避免切换窗口或最小化游戏
- ⚠️ 如遇异常可重新启动脚本
高级配置
自定义快捷键
如活动页面不是F5打开,可在 activityKey 中修改为对应按键。
如冒险之书页面不是F1打开,可在 campaignAreaKey 中修改为对应按键。
时间阈值设置
根据个人需求设置 notifyHoursThreshold:
- 24:只关注24小时内结束的活动
- 168:关注一周内结束的活动
- 720:关注一个月内结束的活动
输出示例
通知消息格式如下:
原神活动剩余时间提醒:
> 海灯节庆典 剩余时间:3天14小时<还剩 86 小时>
> 风花节活动 剩余时间:1天5小时<还剩 29 小时><即将结束>
以上为用户使用指南全部内容
文件结构
ActivitySwitchNotice/
├── utils/
│ ├── activity.js # 核心活动处理逻辑
│ ├── campaignArea.js # 征讨领域提醒功能
│ └── notice.js # 通知发送功能
├── main.js # 主入口文件
├── manifest.json # 插件配置文件
├── settings.json # 用户设置界面定义
└── README.md # 说明文档
核心模块
activity.js - 活动处理核心
主要包含以下功能函数:
scrollPage()- 页面滚动基础函数scrollPagesByActivity()- 按页滚动活动列表scrollPagesByActivityToTop()- 滚动到活动列表顶部parseRemainingTimeToHours()- 解析剩余时间文本为小时数OcrRemainingTime()- OCR识别剩余时间activityMain()- 主流程控制函数
notice.js - 通知模块
sendNotice()- 发送活动提醒通知,按剩余时间排序send()- 发送普通通知
campaignArea.js - 征讨领域模块
ocrWeeklyCount()- OCR识别征讨领域周次数getDayOfWeek()- 获取当前星期信息campaignAreaMain()- 征讨领域提醒主函数
配置选项
在 settings.json 中可配置以下参数:
| 配置项 | 类型 | 说明 |
|---|---|---|
toMainUi |
Boolean | 是否先返回主界面再执行 |
relationship |
Boolean | 剩余时间与白名单启用和关系(默认或关系) |
whiteActivityNameList |
String | 白名单活动名称(用|分隔) |
blackActivityNameList |
String | 黑名单活动名称(用|分隔) |
notifyHoursThreshold |
Number | 通知阈值(小时) |
activityKey |
String | 打开活动页面的快捷键 |
toTopCount |
Number | 滑动到顶最大尝试次数 |
scrollPageCount |
Number | 滑动次数/页 |
campaignAreaKey |
String | 打开冒险之书页面的快捷键 |
campaignAreaReminderDay |
Number | 周本提醒日(0-6,0=周日,1=周一,2=周二,3=周三,4=周四,5=周五,6=周六) |
工作原理
- 自动返回游戏主界面
- 检查是否为设置的提醒日(默认周日),如果是则执行征讨领域提醒功能
- 按配置快捷键打开活动页面
- 滚动到活动列表顶部
- 逐页扫描所有活动
- OCR识别每个活动的剩余时间
- 解析时间为小时数并过滤(包括黑名单过滤)
- 发送符合条件的活动提醒
注意事项
- 请确保游戏分辨率为1920×1080以获得最佳效果
- 脚本运行期间请勿操作鼠标
- 某些特殊活动可能无法正确识别剩余时间
- 建议在游戏空闲时运行此脚本
版本历史
0.0.3 (2025-12-29)
- 修复 修复了活动过滤逻辑问题,将
activityNameList更改为whiteActivityNameList以保持一致 - 新增 黑名单与白名单的互斥过滤机制,黑名单中剔除白名单
- 新增 在配置中增加了
relationship参数,用于控制剩余时间与白名单活动的逻辑关系 - 新增 支持剩余时间和白名单的"与"关系和"或"关系配置
- 新增 标记界面显示
已完成的活动
0.0.2 (2025-12-22)
- 新增 征讨领域周次数提醒功能
- 新增
campaignArea.js模块,包含征讨领域相关功能 - 新增
campaignAreaKey配置选项,用于自定义冒险之书页面快捷键 - 新增
campaignAreaReminderDay配置选项,用于配置提醒日 - 改进 增强滚动到顶部功能的稳定性
- 新增 活动黑名单过滤功能,支持通过
blackActivityNameList配置项排除不关心的活动 - 新增 特殊活动时间格式支持,针对"砺行修远"等活动提供周数显示
- 新增 额外OCR识别支持,可识别特定活动的附加信息(如"本周进度")
- 改进 活动过滤逻辑,增强黑名单匹配准确性
- 改进 通知显示格式,增加活动描述信息展示
- 修复 若干已知问题,提升脚本稳定性
0.0.1 (2025-12-21)
- 新增 活动期限检测与通知功能
- 新增 OCR识别活动列表和剩余时间
- 新增 自动滚动浏览所有活动页面
- 新增 智能解析剩余时间(支持"22天14小时"等格式)
- 新增 可配置的通知阈值功能
- 新增 指定特定活动监控功能
- 新增 防重复检测机制
- 新增 异常处理和错误恢复机制
其它
作者:云端客 脚本反馈邮箱:doutianmianxia@qq.com