云端客 f01750b034 活动期限通知器 (#2535)
* feat(js): 初始化活动期限通知器插件

- 创建主执行文件 main.js
- 添加插件配置文件 manifest.json
- 编写基础设置界面 settings.json
- 建立项目说明文档 README.md
- 实现异步主函数结构
- 配置插件元数据和依赖项
- 定义用户可配置选项
- 设置默认启用状态和快捷键
- 添加作者信息和联系方式
- 描述核心功能和使用注意事项

* feat(activity): 添加活动切换通知功能

- 新增活动配置读取逻辑,支持指定活动名称列表和活动键
- 实现活动主函数,根据配置决定通知所有或指定活动
- 添加通知工具模块,支持异步发送包含标题和内容的通知
- 在主文件中引入活动和通知工具模块,完善执行流程

* feat(activity): 新增OCR点击活动功能

- 实现OcrClickActivity函数,支持OCR识别并点击活动
- 添加活动名称匹配与切换计数逻辑
- 记录活动坐标及剩余时间信息
- 更新activityMain函数以配合新活动切换流程
- 优化活动页面打开与关闭的键盘操作逻辑

* feat(activity): 增加活动OCR识别与剩余时间获取功能

- 新增ocrRegionConfig配置对象,定义活动及剩余时间识别区域
- 修改OcrClickActivity函数,支持默认OCR区域配置和活动识别逻辑优化
- 增加activityOk状态标识,用于判断是否完成所有活动识别
- 实现OcrRemainingTime函数,用于识别并返回指定活动的剩余时间
- 重构activityMain主流程,支持循环识别多个活动及其剩余时间
- 集成通知模块,发送活动名称和对应剩余时间的通知消息
- 引入外部脚本执行机制,通过eval动态加载notice.js配置文件

* chore(activity): 添加待办注释以优化活动切换逻辑

- 在活动切换循环前添加 '//todo:拉到顶部' 注释
- 为后续优化活动切换时的滚动行为做准备

* feat(activity): 增加活动切换尝试次数限制

- 添加 index 和 maxIndex 变量控制循环次数
- 设置最大尝试次数为10次
- 超出最大尝试次数时记录警告日志并退出循环
- 避免无限循环导致脚本卡死

* chore(activity): 添加待办注释和空行优化代码结构

- 在循环开始前添加了两个新的待办注释
- 在条件判断后添加了滑动一页的待办注释
- 为代码逻辑段落间增加了空行以提高可读性

* chore(activity): 更新活动切换注释

- 将注释中的“滑动一页”修改为“向下滑动一页”以提高可读性

* feat(activity): 实现活动自动化处理主函数

- 添加活动主函数 activityMain 用于自动化处理活动流程
- 集成打开活动页面、OCR识别与点击功能
- 引入活动Map记录已识别活动避免重复处理
- 实现循环处理机制并支持指定活动列表过滤
- 增加页面滑动到底判断逻辑防止无限循环
- 添加最大尝试次数限制及对应日志警告
- 完善注释说明提升代码可读性与维护性

* fix(ActivitySwitchNotice): 调整OCR识别区域坐标配置

- 更新活动识别区域坐标为(197, 220, 292, 701)
- 更新剩余时间识别区域坐标为(497, 202, 1417, 670)
- 优化识别精度以提高切换检测准确性

* refactor(activity): 重构活动切换通知逻辑

- 移除冗余的notice.js文件引用
- 引入activity.js工具文件
- 更新主函数调用activityUtil.activityMain方法
- 确保异步执行上下文正确处理

* feat(activity): 添加页面滚动功能

- 新增 scrollPage 异步函数用于控制页面滚动
- 支持设置滚动方向、距离和速度参数
- 实现鼠标按键控制和步进式滚动逻辑
- 添加详细的函数文档注释
- 集成延时控制和步长配置选项

* feat(activity): 添加活动切换通知功能

- 新增xyConfig配置对象定义top和bottom坐标
- 在activity.js中引入notice.js脚本
- 优化代码格式调整maxIndex变量声明空格
- 修复条件判断语句中的语法错误
- 完善活动切换逻辑注释说明

* feat(activity): 新增活动页面滚动功能

- 添加genshinJson配置对象定义画布尺寸
- 实现scrollPagesByActivity函数支持页面滚动
- 支持向上或向下滚动操作
- 集成坐标移动与页面滚动逻辑
- 设置默认滚动参数适配画布高度
- 保留原有OCR点击活动功能

* refactor(activity): 优化活动点击处理函数参数和映射逻辑

* refactor(activity): 优化活动切换通知的滚动逻辑

- 移除eval执行外部脚本的方式,提高安全性
- 更新scrollPagesByActivity函数实现更稳定的滚动操作
- 增加循环次数与调整滚动参数以提升准确性
- 导出新增的工具方法和配置对象供其他模块使用

* feat(activity): 优化活动切换与滚动逻辑

- 修改鼠标移动注释,明确移动到指定坐标位置
- 为OcrClickActivity函数新增defaultActivityCount参数,支持传入初始活动计数
- 在活动识别主循环中提前声明switchToActivityCount变量,便于复用
- 调整OcrClickActivity调用方式,传递已有的switchToActivityCount值

* feat(activity): 新增滑动到顶功能并优化滑动逻辑

- 新增 scrollPagesByActivityToTop 方法实现自动滚动至顶部
- 增加 toTopCount 和 scrollPageCount 配置项用于控制滑动行为
- 修改 scrollPagesByActivity 方法支持可配置的滑动次数
- 调整 OCR 活动点击函数参数格式以提高可读性

* feat(activity): 实现活动页面滚动功能

- 添加滚动到顶部功能,调用scrollPagesByActivityToTop方法
- 实现向下滑动一页功能,调用scrollPagesByActivity方法
- 移除待办注释,完成页面滚动逻辑
- 整合滚动功能到主循环中,优化用户体验

* feat(ActivitySwitchNotice): 增加返回主界面逻辑并优化设置提示

- 新增 isInMainUI 函数用于判断当前是否处于主界面
- 实现 toMainUi 异步函数确保脚本运行前回到主界面
- 更新设置项标签,明确活动名称可选填且默认推送所有有剩余时间的活动
- 调整代码结构以支持新增功能模块
- 修复部分语法问题以提高代码健壮性

* 图

* feat(ActivitySwitchNotice): 添加控制是否先返回主界面的设置选项

- 修改设置项名称从 enable 为 toMainUi
- 根据设置值控制是否执行返回主界面逻辑
- 更新设置标签描述信息
- 默认启用该功能以保持向后兼容性

* chore(activity): 调整活动工具函数导出并优化主入口执行逻辑

- 注释掉 activityUtil 中的 OcrRemainingTime 导出项
- 在 main.js 中添加异步立即执行函数以支持 toMainUi 切换逻辑
- 为主入口逻辑增加 settings.toMainUi 条件判断

* feat(ActivitySwitchNotice): 添加默认按键设置选项

- 在设置中为活动页面按键添加默认值"F5"
- 更新配置以支持自定义按键绑定
- 优化用户体验,减少手动输入需求

* feat(ActivitySwitchNotice): 添加活动配置并触发按键事件

- 在 activityUtil 中暴露 config 配置对象
- 在主流程中添加按键事件调用逻辑
- 使用 activityKey 配置触发键盘操作

* fix(ActivitySwitchNotice): 优化活动切换逻辑并移除冗余配置

- 将活动快捷键模拟从 keyDown/keyUp 改为 keyPress
- 移除多余的按键释放操作
- 注释掉未使用的 config 导出
- 移除主函数中重复的按键触发逻辑

* refactor(activity): 替换等待函数提升代码可读性

- 将 wait() 函数调用替换为 sleep(ms)
- 统一使用 sleep 函数处理异步等待逻辑
- 提高代码一致性和维护性

* fix(activity): 修复回到顶部逻辑判断条件

- 修改循环跳出条件判断逻辑,避免无限循环
- 确保超过最大尝试次数时能正确抛出错误
- 提高页面滚动到顶部功能的稳定性

* fix(activity): 更新OCR识别区域配置

- 将OCR识别区域从ocrRegion变量更改为config.activity配置
- 确保OCR识别使用正确的活动区域参数
- 保持原有的注释和逻辑结构不变

* feat(activity): 支持自定义OCR识别区域配置

- 修改scrollPagesByActivityTop函数签名,新增ocrRegion参数支持传入自定义OCR区域配置
- 默认使用ocrRegionConfig.activity作为OCR识别区域配置
- 更新OCR对象创建逻辑,使用传入的ocrRegion参数替代原有的config.activity配置
- 保持原有功能不变,增强函数灵活性和可配置性

* fix(activity): 调整活动识别区域坐标和尺寸

- 修改activity识别区域的x、y坐标及宽高参数
- 更新width从292到226,height从701到616
- 调整x坐标从197到267,y坐标从220到197

* fix(activity): 修复活动地图更新逻辑

- 修正 activityMap 初始化赋值错误
- 更新活动地图遍历方式,使用 keys() 方法
- 修复活动地图新增逻辑,避免重复设置相同键值
- 确保只添加新发现的活动到 activityMap 中

* fix(ActivitySwitchNotice): 修复通知文本中键值对顺序错误

- 调整forEach回调函数参数顺序,确保键值对正确显示
- 保持代码逻辑一致性,避免数据展示混乱

* feat(activity): 增加活动切换次数记录功能

- 在OcrClickActivity函数中新增lastName参数用于记录上一个活动名称
- 新增resObject对象统一管理活动切换状态和坐标信息
- 优化活动识别逻辑,避免重复识别相同活动
- 更新函数调用方式以传递LastActivityName参数
- 修复活动切换计数可能不准确的问题
- 完善活动地图更新机制,确保数据一致性

* feat(activity): 添加鼠标移动操作以优化活动切换逻辑

- 在回到顶部逻辑前添加鼠标移动至坐标(0,20)的操作
- 在OCR点击活动逻辑前添加鼠标移动至坐标(0,20)的操作
- 提升活动切换准确性与稳定性

* fix(ActivitySwitchNotice): 调整通知文本格式

- 修改键值对分隔符为单个空格
- 移除键值之间的冒号符号
- 保持每行末尾换行符一致

* fix(ActivitySwitchNotice): 修复活动切换工具中的OCR识别逻辑

- 统一鼠标移动函数调用的代码风格,增加参数间的空格
- 在成功返回顶部时添加日志信息输出
- 增强OCR识别结果判断条件,避免访问空数组导致异常

* fix(ActivitySwitchNotice): 优化活动切换逻辑和OCR识别流程

- 修改OcrClickActivity函数参数默认值,将lastName默认值设为null
- 增强活动识别结束条件判断,避免无限循环
- 添加活动识别过程中的日志记录以便调试
- 引入双变量记录上一个活动名称以提高准确性
- 重构主循环逻辑,确保能正确识别所有活动
- 修复在特定条件下无法退出循环的问题
- 完善活动切换次数统计和活动映射更新机制

* feat(activity): 优化活动页面滚动与OCR识别逻辑

- 新增 scrollPagesByActivityToTop 函数,通过连续检测顶部活动名称相同来确认已到顶
- 修改 scrollPagesByActivity 支持自定义滚动参数(total, waitCount, stepDistance)
- 重构 activityMain 函数,改为逐页扫描活动并统一发送通知
- 调整 OCR 日志级别从 info 改为 debug
- 注释掉旧版 OcrClickActivity 和 activityMain 实现
- 在 main.js 中增加一次 toMainUi 调用以确保界面状态稳定

* refactor(activity): 移除废弃的活动处理函数并优化日志输出

- 删除了已注释的 OcrClickActivity 函数实现
- 移除了已注释的 activityMain 主函数代码
- 优化了活动剩余时间识别的日志格式
- 清理了无用的活动处理逻辑和冗余注释
- 简化了活动识别与点击的核心流程
- 提升了代码可读性和维护性

* fix(notice): 修复通知文本格式化问题

- 修复了模板字符串中变量未正确插入的问题
- 确保键值对在通知中正确显示
- 保持换行符一致以维持原有格式

* fix(ActivitySwitchNotice): 修复通知文本格式化问题

- 将字符串拼接方式从双引号改为模板字符串
- 修复了键值对显示异常的问题
- 确保通知文本正确换行显示

* fix(notice): 移除多余的通知文本包装

- 删除了发送通知时多余的反引号包裹
- 确保通知文本格式正确显示
- 避免了因格式错误导致的通知发送失败问题

* feat(activity): 新增活动剩余时间解析与排序通知功能

- 添加解析原神活动剩余时间字符串为总小时数的函数
- 支持多种时间格式如"22天14小时"、"5小时"等
- 实现按剩余小时数升序排列活动通知内容
- 更新活动时间存储结构以包含原始文本和计算后的小时数
- 优化通知消息展示格式,突出剩余时间信息

* fix(activity): 修复活动时间记录日志格式

- 在日志信息中明确添加“小时”单位以提高可读性
- 保持原有变量替换逻辑不变
- 确保日志输出的一致性和准确性

* feat(activity): 增强活动页面底部检测逻辑

- 新增基于活动名称集合的重复页判断机制
- 计算当前页与上一页活动名称重合率,防止无效滚动
- 设置重合率阈值为70%,超过则判定已到底部
- 每页新增活动计数器,若为零且非首页则停止扫描
- 保留原有底部判断方式,形成双重保险机制
- 优化日志输出,增强调试与运行状态可视化

* feat(activity): 新增活动去重逻辑

- 引入previousPageActivities集合用于记录已识别活动
- 防止同一页活动被重复处理
- 提升活动切换提醒准确性

* feat(activity): 增强活动扫描与通知功能

- 新增 settingsParseInt 函数用于安全解析配置数值
- 添加 notifyHoursThreshold 配置项,支持自定义通知时间阈值
- 优化滚动逻辑中的参数格式和日志输出
- 增加活动即将结束标识(剩余时间≤24小时)
- 过滤掉超出时间阈值的活动,仅通知符合条件的活动
- 更新通知文案,显示时间筛选条件
- 修复多处代码格式和空格问题,提升可读性

* docs(ActivitySwitchNotice): 更新README文档内容

- 补充项目概述与功能特性说明
- 添加用户使用指南与快速开始步骤
- 详细描述配置选项与高级设置
- 增加文件结构与核心模块介绍
- 完善注意事项与工作原理说明
- 提供输出示例与使用环境要求
- 整理文档结构,提升可读性与实用性

* docs(ActivitySwitchNotice): 更新 README 配置说明

- 修正 settings.json 文件链接格式
- 统一文档中文件引用的展示方式
- 提高配置说明的可读性

* fix(ActivitySwitchNotice): 修复设置项默认值语法错误

- 修正 settings.json 中 notifyHoursThreshold 字段的默认值语法
- 添加缺失的冒号以符合 JSON 格式要求

* fix(ActivitySwitchNotice): 修复活动通知筛选逻辑并优化排序

- 调整活动筛选条件,确保仅包含剩余时间小于阈值的活动
- 对筛选后的活动按剩余时间进行升序排序
- 更新通知发送逻辑以使用排序后的活动列表
- 修正日志记录中的活动数量显示问题
- 移除无用的代码注释和空行

* feat(activity): 优化活动通知逻辑以提高性能

- 使用 Map 过滤活动数据而不是数组排序
- 减少不必要的数据转换操作
- 提升活动扫描和通知发送的效率
- 保持原有通知阈值和日志功能不变

* fix(activity): 修复活动名称列表分割方法

- 将 splice 方法更正为 split 方法以正确分割活动名称
- 更新 README 中的默认通知阈值描述
2025-12-21 16:22:52 +08:00
2025-12-04 13:07:48 +08:00
2025-12-11 22:26:13 +08:00
2025-11-02 17:06:24 +08:00
2025-12-21 16:22:52 +08:00
2025-10-13 00:45:40 +08:00
2025-12-21 08:10:20 +00:00

BetterGI · 更好的原神 的脚本仓库

BetterGI📜 脚本仓库

在线版脚本仓库:bgi.sh 备用地址:https://s.bettergi.com

作者Q群764972801 (非作者请勿加入)

如何提交到本仓库?(谁都能看懂的 GitHub Pull Request 使用指南)

脚本提交说明

脚本提交规范

为了保证脚本的规范性和可读性,方便用户清晰了解脚本的用途,制定以下脚本命名规则和脚本文件夹命名规则。

地图追踪脚本

文件命名规范

确保脚本文件在同一目录下按预期顺序排列,并一目了然地传达关键信息。地图追踪脚本命名需包含以下核心信息:

编号-材料名称-区域(跨区域材料填写)-二级区域(可选)-二级子区域-数量
  • 编号

    • 两位数,如果单个资源脚本数量超过 100 可以考虑使用三位数编号或者使用字母加数字编号,如 A01
    • 编号的排序应遵循以下两种方式之一:
      • 按传送点位顺序排序。相邻脚本之间优先保证传送的便捷性,这种编号方式考虑整体采集效率。
      • 按材料获取效率排序。优先选择资源分布密集或容易采集的点,效率高的路径放在靠前编号,这种编号方式考虑编号靠前脚本的采集效率。
  • 材料名称

    • 采集物(使用游戏内官方名称命名,如 慕风蘑菇劫波莲,不应当使用 绫华突破材料等不清晰的名称命名)
    • 掉落物(因掉落物名称与掉落物等级有关,因此不使用掉落物本身命名,而是使用怪物名称命名)
  • 区域(指 蒙德 璃月 稻妻 须弥 枫丹 纳塔 至冬仅当材料跨区域需标注

  • 二级区域(如 珉林,根据实际需求标注)

  • 二级子区域(细分地点,如 绝云间

  • 预期采集的数量

脚本名称仅限上述规定的编号、材料名称、区域、二级子区域,原则上不应包含额外的描述或标点符号。

✔ 参考示范:
01-水晶块-璃月-绝云间-6个
02-水晶块-璃月-荻花洲-8个

❌ 错误示范:
01-水晶块-璃月-快速路径-绝云间-6个

其他注意事项

  • 部分采集物没有对应的二级子区域,允许名称的区域部分使用起始传送锚点右侧展示的二级区域,或这条路径的大部分采集物点位所位于的二级区域

  • 相同二级子区域有多条路径时,推荐采用 编号-材料名称-二级区域-二级子区域及方位-数量 进行命名。

  • 脚本文件名应当和 json 文件中的 name 字段相同。

  • 说明文件应当命名为README.md以保证仓库能够正确读取。

文件夹命名规范

目的:对脚本按材料分类管理,便于版本控制与团队协作。目录结构应当遵循以下原则:

  • 根据脚本种类选择恰当的一级分类,目前共有六个分类 锄地专区地方特产敌人与魔物矿物其他

  • 一级目录:以材料名称命名,须与文件命名中的材料名称一致。

  • 二级子目录(可选):可根据项目或作者划分,如有必要。

  • 示例目录结构如下:

    repo/pathing/矿物
    ├─ 水晶块
    │   ├─ 01-水晶块-璃月-绝云间-6个
    │   └─ 02-水晶块-璃月-荻花洲-8个
    └─ 星银矿石
        └─ 01-星银矿石-覆雪之路-7个
    

    如果脚本和原来的地图追踪脚本存在冲突 按照以下原则处理:

  • 修复或补充:直接提交到原材料目录。

  • 路线冲突:新建同名目录并添加作者标识:

    1. 将旧脚本目录重命名为 AA@旧作者名
    2. 新脚本放入 AA@你的名字
    3. 例:原 repo/pathing/AA 重命名为 AA@oldauthor 新目录 AA@yourname
    • 示例目录结构如下:

      repo/pathing/.../
      └── AA
          ├── AA@旧作者名
          └── AA@你的名字
      
  • 不同采集方式|角色|效率:新建目录添加标识及作者标识:

    1. 判断旧脚本目录的采集方式,将旧脚本目录重命名为 采集方式@旧作者名
    2. 新脚本放入 采集方式@你的名字
    • 示例目录结构如下:

      repo/pathing
      ├── 地方特产/区域
      │   ├── A材料
      │   │   ├── 无草神@作者广告位招租
      │   │   ├── 有草神效率路线@作者广告位招租
      │   │   ├── 有草神全收集@作者广告位招租
      │   │   └── ...
      │   └── B材料
      │       ├── 效率路线@作者广告位招租
      │       ├── 全收集@作者广告位招租
      │       └── ...
      ├── 矿物
      │   ├── 水晶矿
      │   │   ├── 大剑@作者广告位招租
      │   │   ├── 钟离@作者广告位招租
      │   │   ├── 诺艾尔@作者广告位招租
      │   │   └── ...
      │   └── 萃凝晶
      │       ├── 大剑效率路线@作者广告位招租
      │       ├── 大剑无战斗@作者广告位招租
      │       └── ...
      └── ...
      

其他注意事项

  • 目录名仅限材料官方名称,不添加版本号或其他标识。

  • 作者标识仅在冲突时追加,格式为“@作者名”,紧随原目录名。

JS脚本

创建JS脚本请参考文档创建脚本

文件夹命名规则

  • 脚本的文件夹名称应体现脚本的用途,简要用途可在描述文件 manifest.json 中说明,详细用途可在README.md(大小写敏感,要求全部大写的文件名) 中说明

  • 脚本的主体文件夹名称可采用 大驼峰式命名法 等命名方式,名称中不应包含空格,如:

    repo/js
    ├── 
    ├── AutoLeyLineOutcrop
    ├── AutoXXX
    └── ...
    
  • 常见的脚本结构目录如下:

    repo/js
    └── jsName
        ├── Assets
        │   ├── Pathing
        │   │   └── xxx.json
        │   └── RecognitionObject
        │       └── xxx.png
        ├── main.js
        ├── manifest.json
        ├── settings.json
        └── README.md
    
  • Assets用于存放脚本使用到的资源文件,其中

其他注意事项

  • 脚本使用的资源文件应在README.md中注明实际用途

其他

因早期对脚本管理较为宽松,因此仓库有部分脚本并不符合命名规范,欢迎通过 PR 规范这些名称。

Contributors

Active Contributors of babalae/bettergi-scripts-list - Last 28 days

相关源码

脚本仓库页面的源码

地图路径追踪的源码:bettergi-map

Languages
JavaScript 87.4%
HTML 10.2%
Python 2.2%
C 0.2%