mirror of
https://github.com/babalae/bettergi-scripts-list.git
synced 2026-03-24 04:49:51 +08:00
自动秘境脚本适配月之四版本,重构以便后续维护 (#2758)
* 自定義參數的自動秘境腳本 可自訂義樹脂數量、刷取輪次、隊伍等參數的自動秘境腳本 * 支持週期性素材 支持天賦書、武器升級素材 * 支持週期性素材刷取 支持武器素材、天賦書刷取,顯示從秘境名稱改為以掉落物為主 * 适配月之四版本,重构以便后续维护 1.适配月之四版本:新增圣遗物秘境 2.重构以便后续维护:将秘境信息与main.js拆分
This commit is contained in:
@@ -0,0 +1,239 @@
|
||||
{
|
||||
"metadata": {
|
||||
"description": "原神经典/纳塔/挪德卡莱秘境掉落表 (全简体中文)",
|
||||
"source_url": "https://wiki.biligame.com",
|
||||
"maintenance_instruction": "【重要】AI在读取或更新此文件时,必须优先联网检索 wiki.biligame.com 的最新实时内容。严禁依懒 AI 模型内部的过时训练数据库进行推论或数据填充。",
|
||||
"last_updated": "2026-01-18",
|
||||
"game_version_context": "包含纳塔 (5.x) 与 挪德卡莱 (6.x/月之版本)",
|
||||
"note": "掉落物名称统一使用最高稀有度(天赋书3星/武器素材5星)。周日全系列开放。"
|
||||
},
|
||||
"domains": {
|
||||
"talent_books": [
|
||||
{
|
||||
"region": "蒙德",
|
||||
"domain_name_sc": "忘却之峡",
|
||||
"schedule": {
|
||||
"Mon_Thu": "「自由」的哲学",
|
||||
"Tue_Fri": "「抗争」的哲学",
|
||||
"Wed_Sat": "「诗文」的哲学"
|
||||
}
|
||||
},
|
||||
{
|
||||
"region": "璃月",
|
||||
"domain_name_sc": "太山府",
|
||||
"schedule": {
|
||||
"Mon_Thu": "「繁荣」的哲学",
|
||||
"Tue_Fri": "「勤劳」的哲学",
|
||||
"Wed_Sat": "「黄金」的哲学"
|
||||
}
|
||||
},
|
||||
{
|
||||
"region": "稻妻",
|
||||
"domain_name_sc": "堇色之庭",
|
||||
"schedule": {
|
||||
"Mon_Thu": "「浮世」的哲学",
|
||||
"Tue_Fri": "「风雅」的哲学",
|
||||
"Wed_Sat": "「天光」的哲学"
|
||||
}
|
||||
},
|
||||
{
|
||||
"region": "须弥",
|
||||
"domain_name_sc": "昏识塔",
|
||||
"schedule": {
|
||||
"Mon_Thu": "「诤言」的哲学",
|
||||
"Tue_Fri": "「巧思」的哲学",
|
||||
"Wed_Sat": "「笃行」的哲学"
|
||||
}
|
||||
},
|
||||
{
|
||||
"region": "枫丹",
|
||||
"domain_name_sc": "苍白的遗荣",
|
||||
"schedule": {
|
||||
"Mon_Thu": "「公平」的哲学",
|
||||
"Tue_Fri": "「正义」的哲学",
|
||||
"Wed_Sat": "「秩序」的哲学"
|
||||
}
|
||||
},
|
||||
{
|
||||
"region": "纳塔",
|
||||
"domain_name_sc": "蕴火的幽墟",
|
||||
"schedule": {
|
||||
"Mon_Thu": "「角逐」的哲学",
|
||||
"Tue_Fri": "「焚燔」的哲学",
|
||||
"Wed_Sat": "「纷争」的哲学"
|
||||
}
|
||||
},
|
||||
{
|
||||
"region": "挪德卡莱",
|
||||
"domain_name_sc": "无光的深都",
|
||||
"schedule": {
|
||||
"Mon_Thu": "「月光」的哲学",
|
||||
"Tue_Fri": "「乐园」的哲学",
|
||||
"Wed_Sat": "「浪迹」的哲学"
|
||||
}
|
||||
}
|
||||
],
|
||||
"weapon_materials": [
|
||||
{
|
||||
"region": "蒙德",
|
||||
"domain_name_sc": "塞西莉亚苗圃",
|
||||
"schedule": {
|
||||
"Mon_Thu": "高塔孤王的碎梦",
|
||||
"Tue_Fri": "凛风奔狼的怀乡",
|
||||
"Wed_Sat": "狮牙斗士的理想"
|
||||
}
|
||||
},
|
||||
{
|
||||
"region": "璃月",
|
||||
"domain_name_sc": "震雷连山密宫",
|
||||
"schedule": {
|
||||
"Mon_Thu": "孤云寒林的神体",
|
||||
"Tue_Fri": "雾海云间的转还",
|
||||
"Wed_Sat": "漆黑陨铁的一块"
|
||||
}
|
||||
},
|
||||
{
|
||||
"region": "稻妻",
|
||||
"domain_name_sc": "砂流之庭",
|
||||
"schedule": {
|
||||
"Mon_Thu": "远海夷地的金枝",
|
||||
"Tue_Fri": "鸣神御灵的勇武",
|
||||
"Wed_Sat": "今昔剧画之鬼人"
|
||||
}
|
||||
},
|
||||
{
|
||||
"region": "须弥",
|
||||
"domain_name_sc": "有顶塔",
|
||||
"schedule": {
|
||||
"Mon_Thu": "谧林涓露的金符",
|
||||
"Tue_Fri": "绿洲花园的真谛",
|
||||
"Wed_Sat": "烈日威权的旧日"
|
||||
}
|
||||
},
|
||||
{
|
||||
"region": "枫丹",
|
||||
"domain_name_sc": "深潮的余响",
|
||||
"schedule": {
|
||||
"Mon_Thu": "悠古弦音的回响",
|
||||
"Tue_Fri": "纯圣露滴的真粹",
|
||||
"Wed_Sat": "无垢之海的金杯"
|
||||
}
|
||||
},
|
||||
{
|
||||
"region": "纳塔",
|
||||
"domain_name_sc": "深古瞭望所",
|
||||
"schedule": {
|
||||
"Mon_Thu": "贡祭炽心的荣膺",
|
||||
"Tue_Fri": "谵妄圣主的神面",
|
||||
"Wed_Sat": "神合秘烟的启示"
|
||||
}
|
||||
},
|
||||
{
|
||||
"region": "挪德卡莱",
|
||||
"domain_name_sc": "失落的月庭",
|
||||
"schedule": {
|
||||
"Mon_Thu": "奇巧秘器的真愿",
|
||||
"Tue_Fri": "长夜燧火的烈辉",
|
||||
"Wed_Sat": "终北遗嗣的煌熠"
|
||||
}
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
{
|
||||
"region": "蒙德",
|
||||
"domain_name_sc": "仲夏庭园",
|
||||
"drops": ["如雷的盛怒", "平息雷鸣的尊者"]
|
||||
},
|
||||
{
|
||||
"region": "蒙德",
|
||||
"domain_name_sc": "铭记之谷",
|
||||
"drops": ["翠绿之影", "被怜爱的少女"]
|
||||
},
|
||||
{
|
||||
"region": "蒙德",
|
||||
"domain_name_sc": "芬德尼尔之顶",
|
||||
"drops": ["沉沦之心", "冰风迷途的勇士"]
|
||||
},
|
||||
{
|
||||
"region": "璃月",
|
||||
"domain_name_sc": "无妄引咎密宫",
|
||||
"drops": ["炽烈的炎之魔女", "渡过烈火的贤人"]
|
||||
},
|
||||
{
|
||||
"region": "璃月",
|
||||
"domain_name_sc": "华池岩岫",
|
||||
"drops": ["昔日宗室之仪", "染血的骑士道"]
|
||||
},
|
||||
{
|
||||
"region": "璃月",
|
||||
"domain_name_sc": "孤云凌霄之处",
|
||||
"drops": ["悠古的磐岩", "逆飞的流星"]
|
||||
},
|
||||
{
|
||||
"region": "璃月",
|
||||
"domain_name_sc": "岩中幽谷",
|
||||
"drops": ["辰砂往生录", "来歆余响"]
|
||||
},
|
||||
{
|
||||
"region": "稻妻",
|
||||
"domain_name_sc": "椛染之庭",
|
||||
"drops": ["绝缘之旗印", "追忆之注连"]
|
||||
},
|
||||
{
|
||||
"region": "稻妻",
|
||||
"domain_name_sc": "沉眠之庭",
|
||||
"drops": ["海染砗磲", "华馆梦醒形骸记"]
|
||||
},
|
||||
{
|
||||
"region": "须弥",
|
||||
"domain_name_sc": "缘觉塔",
|
||||
"drops": ["深林的记忆", "饰金之梦"]
|
||||
},
|
||||
{
|
||||
"region": "须弥",
|
||||
"domain_name_sc": "赤金的城墟",
|
||||
"drops": ["沙上楼阁史话", "乐园遗落之花"]
|
||||
},
|
||||
{
|
||||
"region": "须弥",
|
||||
"domain_name_sc": "熔铁的孤塞",
|
||||
"drops": ["水仙之梦", "花海甘露之光"]
|
||||
},
|
||||
{
|
||||
"region": "枫丹",
|
||||
"domain_name_sc": "罪祸的终末",
|
||||
"drops": ["逐影猎人", "黄金剧团"]
|
||||
},
|
||||
{
|
||||
"region": "枫丹",
|
||||
"domain_name_sc": "临瀑之城",
|
||||
"drops": ["昔时之歌", "回声之林夜话"]
|
||||
},
|
||||
{
|
||||
"region": "枫丹",
|
||||
"domain_name_sc": "剧变丛林",
|
||||
"drops": ["谐律异想断章", "未竟的遐思"]
|
||||
},
|
||||
{
|
||||
"region": "纳塔",
|
||||
"domain_name_sc": "虹灵的净土",
|
||||
"drops": ["黑曜秘典", "烬城勇者绘卷"]
|
||||
},
|
||||
{
|
||||
"region": "纳塔",
|
||||
"domain_name_sc": "荒废砌造坞",
|
||||
"drops": ["深廊终曲", "长夜之誓"]
|
||||
},
|
||||
{
|
||||
"region": "挪德卡莱",
|
||||
"domain_name_sc": "霜凝的机枢",
|
||||
"drops": ["纺月的夜歌", "穹境示现之夜"]
|
||||
},
|
||||
{
|
||||
"region": "挪德卡莱",
|
||||
"domain_name_sc": "月童的库藏",
|
||||
"drops": ["晨星与月的晓歌", "风起之日"]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,97 +1,108 @@
|
||||
# 传送并自动秘境 (增强版)
|
||||
|
||||
本脚本为 **BetterGI** 自带脚本的增强版本。
|
||||
允许用户直接在脚本设置中自定义“刷取次数”、“树脂类型”及其他高级参数,支持周期性素材刷取,无需修改 BetterGI 全局设置。
|
||||
|
||||
---
|
||||
|
||||
## ✨ 主要功能
|
||||
|
||||
* **全球时区自动换日**:内置时区计算逻辑,自动适配游戏服务器换日时间。
|
||||
* **自定义树脂策略**:支持指定各类型树脂的使用次数,或选择自动刷取至树脂耗尽。
|
||||
* **智能队伍切换**:进本前自动切换至指定队伍。
|
||||
* **全自动托管**:自动传送、进门、战斗及领奖。
|
||||
* **自动处理**:支持结束后自动分解圣遗物。
|
||||
|
||||
---
|
||||
|
||||
## 🚀 使用方法
|
||||
|
||||
> ⚠️ **重要**:本脚本的参数需要在**调度器**中配置!
|
||||
|
||||
1. 在调度器中添加脚本。
|
||||
2. **右键点击**脚本并选择 **“修改JS脚本自定义配置”**。
|
||||
|
||||
### 📌 必填项
|
||||
|
||||
* **指定要前往的秘境**
|
||||
* 请在下拉菜单中选择目标副本。
|
||||
* **注意**:【角色天赋】、【武器升级】、【圣遗物】三类选项**互斥** (只能选其中一个),若同时选择多项,脚本将报错停止。
|
||||
|
||||
* **树脂策略配置**
|
||||
* **刷取至树脂耗尽 (最高优先级)**
|
||||
* 若启用此选项,脚本将**忽略**下方所有具体次数的设定。
|
||||
* 消耗逻辑:优先使用**浓缩树脂**,耗尽后使用**原粹树脂**。
|
||||
* **指定每种树脂刷取次数**
|
||||
* 仅在“刷取至树脂耗尽”**关闭**时生效。
|
||||
* 脚本将按照设定的次数进行刷取(若四项均为 0 则不执行战斗)。
|
||||
* 支持的树脂类型:
|
||||
* **浓缩树脂**
|
||||
* **原粹树脂** (注意:单次消耗 20 或 40 取决于秘境内上次的记忆设定)
|
||||
* **须臾树脂**
|
||||
* **脆弱树脂**
|
||||
|
||||
### ⚙️ 可选项
|
||||
|
||||
* **【风险】强制运行**
|
||||
* **功能**:勾选后将**忽略日期与星期几的检查**,直接进入副本。
|
||||
* **适用场景**:仅在确认游戏内有“限时全开”或“精通移涌”活动时使用。
|
||||
* **警告**:若当日未开放该素材且无活动,勾选此项将会导致刷错素材。
|
||||
|
||||
* **自动切换到指定队伍**
|
||||
* 输入预设队伍名称(需与游戏内完全一致,支持正则表达式),留空则不切换。
|
||||
|
||||
* **秘境刷取轮数**
|
||||
* `0`:刷到体力耗尽或达到指定树脂次数(默认)。
|
||||
* `数字`:刷满该场数后强制停止(无论是否还有体力)。
|
||||
|
||||
* **战斗完成后等待时间**
|
||||
* 设置战斗结算后的缓冲秒数(默认 5 秒),防止因电脑读取卡顿导致过早退出或识别失败。
|
||||
|
||||
* **结束后自动分解圣遗物**
|
||||
* **功能**:开启后,任务结束前会自动执行圣遗物分解逻辑。
|
||||
* **分解星级**:可指定分解 **1~4 星** 的圣遗物(需配合下拉菜单设置)。
|
||||
|
||||
* **启用调试模式**
|
||||
* 开启后会输出更多详细日志信息,用于脚本出错时排查问题。
|
||||
|
||||
---
|
||||
|
||||
## ⏰ 时区设置
|
||||
|
||||
脚本会自动读取 BetterGI 的全局设置来判定今日素材。
|
||||
请务必前往 **BetterGI设置 > 其他设置 > 服务器时区设置** 进行正确配置(如亚服设为 UTC+08:00)。
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 已知问题
|
||||
|
||||
### 1. 原粹树脂消耗量 (20 vs 40)
|
||||
BetterGI 传送并自动秘境任务不支持JS脚本选择 20 或 40 树脂。
|
||||
若未手动切换,游戏会**沿用上一次**刷取时的设定。
|
||||
* **操作建议**:若您打算使用原粹树脂,请在运行脚本前**手动进入一次秘境**,调整好 20 或 40 的选项。
|
||||
|
||||
### 2. 为什么不能自动识别 "限时全开" 活动?
|
||||
受限于 BetterGI 的底层架构设计,**JS 脚本无法获取游戏内的画面资讯**:
|
||||
* **执行时序矛盾**:JS 脚本必须在任务开始 **前** 决定策略(刷什么副本),而 "限时全开" 的 OCR 识别是在任务开始 **后**(C# 底层进入秘境介面时)才执行 。
|
||||
* **数据无法回传**:BetterGI 的 API 设计为「射后不理」(Fire-and-Wait),底层的 OCR 识别结果(如是否有限时字样)并不会回传给 JS 层 。
|
||||
|
||||
因此,本脚本仅能依赖 **纯数学计算** 来判断素材开放日。若当前有 "限时全开" 或 "精通移涌" 活动,请务必手动勾选 **「强制运行」** 以绕过日期检查。
|
||||
|
||||
---
|
||||
|
||||
## 👨💻 关于作者
|
||||
|
||||
* **原作者**: [huiyadanli](https://github.com/huiyadanli), iris, 霁
|
||||
* **修改者**: [RJFAC](https://github.com/RJFAC)
|
||||
# 传送并自动秘境 (增强版)
|
||||
|
||||
本脚本为 **BetterGI** 自带脚本的增强版本。
|
||||
允许用户直接在脚本设置中自定义“刷取次数”、“树脂类型”及其他高级参数,支持周期性素材刷取,无需修改 BetterGI 全局设置。
|
||||
|
||||
---
|
||||
|
||||
如果你看到以下错误信息:
|
||||
> 错误: 未找到对应的秘境 的传送点
|
||||
代表BetterGI本体尚未支援新秘境,请等待Bettergi本体更新支援新秘境。
|
||||
|
||||
---
|
||||
|
||||
本脚本采用AI进行生成修改,修改者没有任何编程能力。
|
||||
故在此授权任何人可以在不标注、不知会修改者(RJFAC)的情况下对脚本内容维护、修改、重写、分享、上传、覆盖此脚本的部分或全部内容。
|
||||
|
||||
---
|
||||
|
||||
## ✨ 主要功能
|
||||
|
||||
* **全球时区自动换日**:内置时区计算逻辑,自动适配游戏服务器换日时间。
|
||||
* **自定义树脂策略**:支持指定各类型树脂的使用次数,或选择自动刷取至树脂耗尽。
|
||||
* **智能队伍切换**:进本前自动切换至指定队伍。
|
||||
* **全自动托管**:自动传送、进门、战斗及领奖。
|
||||
* **自动处理**:支持结束后自动分解圣遗物。
|
||||
|
||||
---
|
||||
|
||||
## 🚀 使用方法
|
||||
|
||||
> ⚠️ **重要**:本脚本的参数需要在**调度器**中配置!
|
||||
|
||||
1. 在调度器中添加脚本。
|
||||
2. **右键点击**脚本并选择 **“修改JS脚本自定义配置”**。
|
||||
|
||||
### 📌 必填项
|
||||
|
||||
* **指定要前往的秘境**
|
||||
* 请在下拉菜单中选择目标副本。
|
||||
* **注意**:【角色天赋】、【武器升级】、【圣遗物】三类选项**互斥** (只能选其中一个),若同时选择多项,脚本将报错停止。
|
||||
|
||||
* **树脂策略配置**
|
||||
* **刷取至树脂耗尽 (最高优先级)**
|
||||
* 若启用此选项,脚本将**忽略**下方所有具体次数的设定。
|
||||
* 消耗逻辑:优先使用**浓缩树脂**,耗尽后使用**原粹树脂**。
|
||||
* **指定每种树脂刷取次数**
|
||||
* 仅在“刷取至树脂耗尽”**关闭**时生效。
|
||||
* 脚本将按照设定的次数进行刷取(若四项均为 0 则不执行战斗)。
|
||||
* 支持的树脂类型:
|
||||
* **浓缩树脂**
|
||||
* **原粹树脂** (注意:单次消耗 20 或 40 取决于秘境内上次的记忆设定)
|
||||
* **须臾树脂**
|
||||
* **脆弱树脂**
|
||||
|
||||
### ⚙️ 可选项
|
||||
|
||||
* **【风险】强制运行**
|
||||
* **功能**:勾选后将**忽略日期与星期几的检查**,直接进入副本。
|
||||
* **适用场景**:仅在确认游戏内有“限时全开”或“精通移涌”活动时使用。
|
||||
* **警告**:若当日未开放该素材且无活动,勾选此项将会导致刷错素材。
|
||||
|
||||
* **自动切换到指定队伍**
|
||||
* 输入预设队伍名称(需与游戏内完全一致,支持正则表达式),留空则不切换。
|
||||
|
||||
* **秘境刷取轮数**
|
||||
* `0`:刷到体力耗尽或达到指定树脂次数(默认)。
|
||||
* `数字`:刷满该场数后强制停止(无论是否还有体力)。
|
||||
|
||||
* **战斗完成后等待时间**
|
||||
* 设置战斗结算后的缓冲秒数(默认 5 秒),防止因电脑读取卡顿导致过早退出或识别失败。
|
||||
|
||||
* **结束后自动分解圣遗物**
|
||||
* **功能**:开启后,任务结束前会自动执行圣遗物分解逻辑。
|
||||
* **分解星级**:可指定分解 **1~4 星** 的圣遗物(需配合下拉菜单设置)。
|
||||
|
||||
* **启用调试模式**
|
||||
* 开启后会输出更多详细日志信息,用于脚本出错时排查问题。
|
||||
|
||||
---
|
||||
|
||||
## ⏰ 时区设置
|
||||
|
||||
脚本会自动读取 BetterGI 的全局设置来判定今日素材。
|
||||
请务必前往 **BetterGI设置 > 其他设置 > 服务器时区设置** 进行正确配置(如亚服设为 UTC+08:00)。
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 已知问题
|
||||
|
||||
### 1. 原粹树脂消耗量 (20 vs 40)
|
||||
BetterGI 传送并自动秘境任务不支持JS脚本选择 20 或 40 树脂。
|
||||
若未手动切换,游戏会**沿用上一次**刷取时的设定。
|
||||
* **操作建议**:若您打算使用原粹树脂,请在运行脚本前**手动进入一次秘境**,调整好 20 或 40 的选项。
|
||||
|
||||
### 2. 为什么不能自动识别 "限时全开" 活动?
|
||||
受限于 BetterGI 的底层架构设计,**JS 脚本无法获取游戏内的画面资讯**:
|
||||
* **执行时序矛盾**:JS 脚本必须在任务开始 **前** 决定策略(刷什么副本),而 "限时全开" 的 OCR 识别是在任务开始 **后**(C# 底层进入秘境介面时)才执行 。
|
||||
* **数据无法回传**:BetterGI 的 API 设计为「射后不理」(Fire-and-Wait),底层的 OCR 识别结果(如是否有限时字样)并不会回传给 JS 层 。
|
||||
|
||||
因此,本脚本仅能依赖 **纯数学计算** 来判断素材开放日。若当前有 "限时全开" 或 "精通移涌" 活动,请务必手动勾选 **「强制运行」** 以绕过日期检查。
|
||||
|
||||
---
|
||||
|
||||
## 👨💻 关于作者
|
||||
|
||||
* **原作者**: [huiyadanli](https://github.com/huiyadanli), iris, 霁
|
||||
* **修改者**: [RJFAC](https://github.com/RJFAC)
|
||||
* **辅助生成**: AI
|
||||
@@ -1,268 +1,244 @@
|
||||
(async function () {
|
||||
// =========================================================================
|
||||
// 0. 数据定义 (源自 Genshin_Domains_SC_Live_Source.json)
|
||||
// =========================================================================
|
||||
const MATERIAL_DB = {
|
||||
// ====== 角色天赋素材 ======
|
||||
// 蒙德
|
||||
"「自由」的哲学": { domain: "忘却之峡", idx: 1 },
|
||||
"「抗争」的哲学": { domain: "忘却之峡", idx: 2 },
|
||||
"「诗文」的哲学": { domain: "忘却之峡", idx: 3 },
|
||||
// 璃月
|
||||
"「繁荣」的哲学": { domain: "太山府", idx: 1 },
|
||||
"「勤劳」的哲学": { domain: "太山府", idx: 2 },
|
||||
"「黄金」的哲学": { domain: "太山府", idx: 3 },
|
||||
// 稻妻
|
||||
"「浮世」的哲学": { domain: "堇色之庭", idx: 1 },
|
||||
"「风雅」的哲学": { domain: "堇色之庭", idx: 2 },
|
||||
"「天光」的哲学": { domain: "堇色之庭", idx: 3 },
|
||||
// 须弥
|
||||
"「诤言」的哲学": { domain: "昏识塔", idx: 1 },
|
||||
"「巧思」的哲学": { domain: "昏识塔", idx: 2 },
|
||||
"「笃行」的哲学": { domain: "昏识塔", idx: 3 },
|
||||
// 枫丹
|
||||
"「公平」的哲学": { domain: "苍白的遗荣", idx: 1 },
|
||||
"「正义」的哲学": { domain: "苍白的遗荣", idx: 2 },
|
||||
"「秩序」的哲学": { domain: "苍白的遗荣", idx: 3 },
|
||||
// 纳塔
|
||||
"「角逐」的哲学": { domain: "蕴火的幽墟", idx: 1 },
|
||||
"「焚燔」的哲学": { domain: "蕴火的幽墟", idx: 2 },
|
||||
"「纷争」的哲学": { domain: "蕴火的幽墟", idx: 3 },
|
||||
// 挪德卡莱
|
||||
"「月光」的哲学": { domain: "无光的深都", idx: 1 },
|
||||
"「乐园」的哲学": { domain: "无光的深都", idx: 2 },
|
||||
"「浪迹」的哲学": { domain: "无光的深都", idx: 3 },
|
||||
|
||||
// ====== 武器升级素材 ======
|
||||
// 蒙德
|
||||
"高塔孤王的碎梦": { domain: "塞西莉亚苗圃", idx: 1 },
|
||||
"凛风奔狼的怀乡": { domain: "塞西莉亚苗圃", idx: 2 },
|
||||
"狮牙斗士的理想": { domain: "塞西莉亚苗圃", idx: 3 },
|
||||
// 璃月
|
||||
"孤云寒林的神体": { domain: "震雷连山密宫", idx: 1 },
|
||||
"雾海云间的转还": { domain: "震雷连山密宫", idx: 2 },
|
||||
"漆黑陨铁的一块": { domain: "震雷连山密宫", idx: 3 },
|
||||
// 稻妻
|
||||
"远海夷地的金枝": { domain: "砂流之庭", idx: 1 },
|
||||
"鸣神御灵的勇武": { domain: "砂流之庭", idx: 2 },
|
||||
"今昔剧画之鬼人": { domain: "砂流之庭", idx: 3 },
|
||||
// 须弥
|
||||
"谧林涓露的金符": { domain: "有顶塔", idx: 1 },
|
||||
"绿洲花园的真谛": { domain: "有顶塔", idx: 2 },
|
||||
"烈日威权的旧日": { domain: "有顶塔", idx: 3 },
|
||||
// 枫丹
|
||||
"悠古弦音的回响": { domain: "深潮的余响", idx: 1 },
|
||||
"纯圣露滴的真粹": { domain: "深潮的余响", idx: 2 },
|
||||
"无垢之海的金杯": { domain: "深潮的余响", idx: 3 },
|
||||
// 纳塔
|
||||
"贡祭炽心的荣膺": { domain: "深古瞭望所", idx: 1 },
|
||||
"谵妄圣主的神面": { domain: "深古瞭望所", idx: 2 },
|
||||
"神合秘烟的启示": { domain: "深古瞭望所", idx: 3 },
|
||||
// 挪德卡莱
|
||||
"奇巧秘器的真愿": { domain: "失落的月庭", idx: 1 },
|
||||
"长夜燧火的烈辉": { domain: "失落的月庭", idx: 2 },
|
||||
"终北遗嗣的煌熠": { domain: "失落的月庭", idx: 3 },
|
||||
|
||||
// ====== 圣遗物 (type: 'artifact') ======
|
||||
// 蒙德
|
||||
"如雷的盛怒 / 平息雷鸣的尊者": { domain: "仲夏庭园", type: "artifact" },
|
||||
"翠绿之影 / 被怜爱的少女": { domain: "铭记之谷", type: "artifact" },
|
||||
"沉沦之心 / 冰风迷途的勇士": { domain: "芬德尼尔之顶", type: "artifact" },
|
||||
// 璃月
|
||||
"炽烈的炎之魔女 / 渡过烈火的贤人": { domain: "无妄引咎密宫", type: "artifact" },
|
||||
"昔日宗室之仪 / 染血的骑士道": { domain: "华池岩岫", type: "artifact" },
|
||||
"悠古的磐岩 / 逆飞的流星": { domain: "孤云凌霄之处", type: "artifact" },
|
||||
"辰砂往生录 / 来歆余响": { domain: "岩中幽谷", type: "artifact" },
|
||||
// 稻妻
|
||||
"绝缘之旗印 / 追忆之注连": { domain: "椛染之庭", type: "artifact" },
|
||||
"海染砗磲 / 华馆梦醒形骸记": { domain: "沉眠之庭", type: "artifact" },
|
||||
// 须弥
|
||||
"深林的记忆 / 饰金之梦": { domain: "缘觉塔", type: "artifact" },
|
||||
"沙上楼阁史话 / 乐园遗落之花": { domain: "赤金的城墟", type: "artifact" },
|
||||
"水仙之梦 / 花海甘露之光": { domain: "熔铁的孤塞", type: "artifact" },
|
||||
// 枫丹
|
||||
"逐影猎人 / 黄金剧团": { domain: "罪祸的终末", type: "artifact" },
|
||||
"昔时之歌 / 回声之林夜话": { domain: "临瀑之城", type: "artifact" },
|
||||
"谐律异想断章 / 未竟的遐思": { domain: "剧变丛林", type: "artifact" },
|
||||
// 纳塔
|
||||
"黑曜秘典 / 烬城勇者绘卷": { domain: "虹灵的净土", type: "artifact" },
|
||||
"深廊终曲 / 长夜之誓": { domain: "荒废砌造坞", type: "artifact" },
|
||||
// 挪德卡莱
|
||||
"纺月的夜歌 / 穹境示现之夜": { domain: "霜凝的机枢", type: "artifact" }
|
||||
};
|
||||
|
||||
// =========================================================================
|
||||
// 1. 读取用户设置
|
||||
// =========================================================================
|
||||
let userConfig = settings;
|
||||
let enableDebug = userConfig.EnableDebug;
|
||||
|
||||
// --- 读取三个独立栏位 ---
|
||||
let pTalent = userConfig.TargetTalentMaterialName;
|
||||
let pWeapon = userConfig.TargetWeaponMaterialName;
|
||||
let pArtifact = userConfig.TargetArtifactName;
|
||||
let pForceRunMode = userConfig.ForceRunMode;
|
||||
|
||||
// --- 互斥检查与目标确定 ---
|
||||
let selectedCount = (pTalent ? 1 : 0) + (pWeapon ? 1 : 0) + (pArtifact ? 1 : 0);
|
||||
|
||||
if (selectedCount === 0) {
|
||||
log.error("【配置错误】您未选择任何素材!请在天赋、武器或圣遗物中选择一项。");
|
||||
return;
|
||||
}
|
||||
|
||||
if (selectedCount > 1) {
|
||||
log.error("【配置冲突】您同时选择了多种类型的素材!请只保留一项,将其余两项设为空。");
|
||||
return;
|
||||
}
|
||||
|
||||
let pTargetMaterial = pTalent || pWeapon || pArtifact;
|
||||
|
||||
// --- 通用参数 ---
|
||||
let pPartyName = userConfig.PartyName || "";
|
||||
let pRunUntilDepleted = userConfig.RunUntilResinDepleted;
|
||||
let pAutoArtifactSalvage = userConfig.AutoArtifactSalvage;
|
||||
let pMaxArtifactStar = userConfig.MaxArtifactStar || "4";
|
||||
|
||||
// 初始化目标参数
|
||||
let pDomainName = "";
|
||||
let pSundaySelectedValue = "";
|
||||
|
||||
// 数值参数
|
||||
let pOriginal = parseInt(userConfig.OriginalResinUseCount) || 0;
|
||||
let pCondensed = parseInt(userConfig.CondensedResinUseCount) || 0;
|
||||
let pTransient = parseInt(userConfig.TransientResinUseCount) || 0;
|
||||
let pFragile = parseInt(userConfig.FragileResinUseCount) || 0;
|
||||
let pDomainRoundNum = parseInt(userConfig.DomainRoundNum) || 0;
|
||||
let pFightEndDelay = parseInt(userConfig.FightEndDelay) || 5;
|
||||
|
||||
// [新增] 树脂机制警告
|
||||
if (!pRunUntilDepleted && pOriginal > 0) {
|
||||
log.warn("【树脂警告】您设置了使用原粹树脂。由于 BetterGI 本体任务目前不支持选择 20/40 树脂:");
|
||||
log.warn(" -> 请务必在运行脚本前,手动进入一次秘境,确认并调整好游戏内的树脂消耗选项,否则可能导致消耗不符合预期。");
|
||||
}
|
||||
|
||||
// =========================================================================
|
||||
// 2. 智能逻辑处理
|
||||
// =========================================================================
|
||||
|
||||
// 中文星期对照表 (0-6)
|
||||
const WEEK_MAP = ["日", "一", "二", "三", "四", "五", "六"];
|
||||
|
||||
let materialInfo = MATERIAL_DB[pTargetMaterial];
|
||||
if (!materialInfo) {
|
||||
log.error(`【数据错误】无法在数据库中找到项目:${pTargetMaterial}`);
|
||||
return;
|
||||
}
|
||||
|
||||
if (materialInfo.type === 'artifact') {
|
||||
// [圣遗物] 每日开放,直接放行
|
||||
pDomainName = materialInfo.domain;
|
||||
pSundaySelectedValue = "";
|
||||
log.info(`【圣遗物模式】目标:${pTargetMaterial}`);
|
||||
log.info(`【自动定位】秘境:${pDomainName} (每日开放)`);
|
||||
} else {
|
||||
// [天赋/武器素材] 需要日期检查
|
||||
let requiredIdx = materialInfo.idx;
|
||||
pDomainName = materialInfo.domain;
|
||||
pSundaySelectedValue = requiredIdx.toString();
|
||||
|
||||
// --- 全球通用时间逻辑 (跨时区修正版) ---
|
||||
|
||||
// 1. 获取 BGI 配置的服务器偏移量 (例如亚服为 +8小时,单位毫秒)
|
||||
let serverOffsetMs = ServerTime.GetServerTimeZoneOffset();
|
||||
|
||||
// 2. 获取当前的 UTC 时间戳 (全球统一,不受电脑时区影响)
|
||||
let utcNow = Date.now();
|
||||
|
||||
// 3. 计算"游戏服务器的逻辑时间戳"
|
||||
// 算法: UTC时间 + 服务器偏移量 - 4小时(换日)
|
||||
// 这样算出来的时间,如果视作 UTC 时间,其"星期几"就是游戏内的"星期几"
|
||||
let logicTimeMs = utcNow + serverOffsetMs - (4 * 60 * 60 * 1000);
|
||||
let logicDate = new Date(logicTimeMs);
|
||||
|
||||
// 4. 获取 UTC 星期 (关键: 必须用 getUTCDay,忽略本地时区)
|
||||
let dayOfWeek = logicDate.getUTCDay();
|
||||
let dayStr = WEEK_MAP[dayOfWeek];
|
||||
|
||||
if (enableDebug) {
|
||||
// 调试信息:计算当前的服务器名义时间
|
||||
let serverTimeDate = new Date(utcNow + serverOffsetMs);
|
||||
log.info(`[DEBUG] 游戏服务器时间(UTC视角): ${serverTimeDate.toUTCString()}`);
|
||||
log.info(`[DEBUG] 逻辑判定后星期: ${dayStr}`);
|
||||
}
|
||||
|
||||
// 判断今日是否开放
|
||||
let isDateOpen = false;
|
||||
if (dayOfWeek === 0) isDateOpen = true; // 周日
|
||||
else if (requiredIdx === 1 && (dayOfWeek === 1 || dayOfWeek === 4)) isDateOpen = true;
|
||||
else if (requiredIdx === 2 && (dayOfWeek === 2 || dayOfWeek === 5)) isDateOpen = true;
|
||||
else if (requiredIdx === 3 && (dayOfWeek === 3 || dayOfWeek === 6)) isDateOpen = true;
|
||||
|
||||
log.info(`【智能匹配】目标: ${pTargetMaterial} (游戏内星期${dayStr})`);
|
||||
|
||||
if (isDateOpen) {
|
||||
log.info(`【日期检查】通过,今日为常规开放日。`);
|
||||
} else {
|
||||
log.warn(`【日期检查】警告:今日 (游戏内星期${dayStr}) 非該素材常規開放日!`);
|
||||
|
||||
if (pForceRunMode) {
|
||||
log.warn(`【强制运行】检测到"强制运行"已勾选。脚本将继续执行。`);
|
||||
log.warn(`【风险提示】若游戏内并无"限时全开"活动,底层的 OCR 将无法识别活动,BetterGI 將會直接進入今日預設副本,導致刷錯素材!`);
|
||||
} else {
|
||||
log.error(`【停止运行】为防止刷错素材,脚本已停止。`);
|
||||
log.error(` -> 若您确认当前游戏有"限时全开/精通移涌"活动,请在设置中勾选"强制运行"以忽略此警告。`);
|
||||
return; // 安全退出
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// =========================================================================
|
||||
// 3. 执行主流程
|
||||
// =========================================================================
|
||||
while (true) {
|
||||
try {
|
||||
let taskParam = new AutoDomainParam(pDomainRoundNum);
|
||||
taskParam.DomainName = pDomainName;
|
||||
taskParam.PartyName = pPartyName;
|
||||
taskParam.AutoArtifactSalvage = pAutoArtifactSalvage;
|
||||
taskParam.MaxArtifactStar = pMaxArtifactStar;
|
||||
taskParam.SundaySelectedValue = pSundaySelectedValue;
|
||||
|
||||
taskParam.SpecifyResinUse = !pRunUntilDepleted;
|
||||
if (!pRunUntilDepleted) {
|
||||
taskParam.OriginalResinUseCount = pOriginal;
|
||||
taskParam.CondensedResinUseCount = pCondensed;
|
||||
taskParam.TransientResinUseCount = pTransient;
|
||||
taskParam.FragileResinUseCount = pFragile;
|
||||
taskParam.SetResinPriorityList("浓缩树脂", "原粹树脂", "须臾树脂", "脆弱树脂");
|
||||
} else {
|
||||
taskParam.SetResinPriorityList("浓缩树脂", "原粹树脂");
|
||||
}
|
||||
|
||||
await dispatcher.RunAutoDomainTask(taskParam);
|
||||
|
||||
if (pFightEndDelay > 0) {
|
||||
log.info(`[脚本] 任务结束,等待 ${pFightEndDelay} 秒...`);
|
||||
await sleep(pFightEndDelay * 1000);
|
||||
}
|
||||
break;
|
||||
} catch (ex) {
|
||||
let msg = ex.message || "";
|
||||
if (msg.includes("背包物品已满") || msg.includes("未检测到秘境结束")) {
|
||||
log.warn(`[脚本] 任务可能已完成,但检测到: ${msg}`);
|
||||
break;
|
||||
} else if (msg.includes("复苏")) {
|
||||
log.warn(`[脚本] 角色死亡,5秒后重试...`);
|
||||
await sleep(5000);
|
||||
continue;
|
||||
} else if (msg.includes("TaskCanceledException")) {
|
||||
log.info("[脚本] 任务已取消。");
|
||||
break;
|
||||
} else {
|
||||
log.error(`[脚本] 错误: ${msg}`);
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
}
|
||||
(async function () {
|
||||
// =========================================================================
|
||||
// 0. 动态加载数据 (基于 Genshin_Domains_SC_Live_Source.json)
|
||||
// =========================================================================
|
||||
let MATERIAL_DB = {};
|
||||
const DB_FILENAME = "Genshin_Domains_SC_Live_Source.json";
|
||||
|
||||
try {
|
||||
// [修正] 使用正确的方法名 ReadTextSync 读取文件
|
||||
let rawContent = file.ReadTextSync(DB_FILENAME);
|
||||
|
||||
// 检查读取结果是否为空
|
||||
if (!rawContent) {
|
||||
throw new Error("读取文件返回空内容");
|
||||
}
|
||||
|
||||
let sourceData = JSON.parse(rawContent);
|
||||
|
||||
if (!sourceData || !sourceData.domains) {
|
||||
throw new Error("JSON文件格式不正确,缺少 domains 字段");
|
||||
}
|
||||
|
||||
// --- 1. 转换角色天赋素材 ---
|
||||
if (sourceData.domains.talent_books) {
|
||||
sourceData.domains.talent_books.forEach(item => {
|
||||
let domain = item.domain_name_sc;
|
||||
let schedule = item.schedule;
|
||||
// 映射规则: Mon_Thu -> 1, Tue_Fri -> 2, Wed_Sat -> 3
|
||||
if (schedule.Mon_Thu) MATERIAL_DB[schedule.Mon_Thu] = { domain: domain, idx: 1 };
|
||||
if (schedule.Tue_Fri) MATERIAL_DB[schedule.Tue_Fri] = { domain: domain, idx: 2 };
|
||||
if (schedule.Wed_Sat) MATERIAL_DB[schedule.Wed_Sat] = { domain: domain, idx: 3 };
|
||||
});
|
||||
}
|
||||
|
||||
// --- 2. 转换武器升级素材 ---
|
||||
if (sourceData.domains.weapon_materials) {
|
||||
sourceData.domains.weapon_materials.forEach(item => {
|
||||
let domain = item.domain_name_sc;
|
||||
let schedule = item.schedule;
|
||||
if (schedule.Mon_Thu) MATERIAL_DB[schedule.Mon_Thu] = { domain: domain, idx: 1 };
|
||||
if (schedule.Tue_Fri) MATERIAL_DB[schedule.Tue_Fri] = { domain: domain, idx: 2 };
|
||||
if (schedule.Wed_Sat) MATERIAL_DB[schedule.Wed_Sat] = { domain: domain, idx: 3 };
|
||||
});
|
||||
}
|
||||
|
||||
// --- 3. 转换圣遗物 (type: 'artifact') ---
|
||||
if (sourceData.domains.artifacts) {
|
||||
sourceData.domains.artifacts.forEach(item => {
|
||||
let domain = item.domain_name_sc;
|
||||
// 将 drops 数组组合成 key,格式为 "Drop1 / Drop2"
|
||||
let key = item.drops.join(" / ");
|
||||
MATERIAL_DB[key] = { domain: domain, type: "artifact" };
|
||||
});
|
||||
}
|
||||
|
||||
log.info(`【系统】成功加载外部数据文件: ${DB_FILENAME},包含 ${Object.keys(MATERIAL_DB).length} 条记录`);
|
||||
|
||||
} catch (e) {
|
||||
log.error(`【致命错误】无法读取或解析 ${DB_FILENAME}`);
|
||||
log.error(`错误详情: ${e.message}`);
|
||||
log.error("请确保 JSON 文件存在于脚本目录中且格式正确。脚本已停止。");
|
||||
return;
|
||||
}
|
||||
|
||||
// =========================================================================
|
||||
// 1. 读取用户设置
|
||||
// =========================================================================
|
||||
let userConfig = settings;
|
||||
let enableDebug = userConfig.EnableDebug;
|
||||
|
||||
// --- 读取三个独立栏位 ---
|
||||
let pTalent = userConfig.TargetTalentMaterialName;
|
||||
let pWeapon = userConfig.TargetWeaponMaterialName;
|
||||
let pArtifact = userConfig.TargetArtifactName;
|
||||
let pForceRunMode = userConfig.ForceRunMode;
|
||||
|
||||
// --- 互斥检查与目标确定 ---
|
||||
let selectedCount = (pTalent ? 1 : 0) + (pWeapon ? 1 : 0) + (pArtifact ? 1 : 0);
|
||||
|
||||
if (selectedCount === 0) {
|
||||
log.error("【配置错误】您未选择任何素材!请在天赋、武器或圣遗物中选择一项。");
|
||||
return;
|
||||
}
|
||||
|
||||
if (selectedCount > 1) {
|
||||
log.error("【配置冲突】您同时选择了多种类型的素材!请只保留一项,将其余两项设为空。");
|
||||
return;
|
||||
}
|
||||
|
||||
let pTargetMaterial = pTalent || pWeapon || pArtifact;
|
||||
|
||||
// --- 通用参数 ---
|
||||
let pPartyName = userConfig.PartyName || "";
|
||||
let pRunUntilDepleted = userConfig.RunUntilResinDepleted;
|
||||
let pAutoArtifactSalvage = userConfig.AutoArtifactSalvage;
|
||||
let pMaxArtifactStar = userConfig.MaxArtifactStar || "4";
|
||||
|
||||
// 初始化目标参数
|
||||
let pDomainName = "";
|
||||
let pSundaySelectedValue = "";
|
||||
|
||||
// 数值参数
|
||||
let pOriginal = parseInt(userConfig.OriginalResinUseCount) || 0;
|
||||
let pCondensed = parseInt(userConfig.CondensedResinUseCount) || 0;
|
||||
let pTransient = parseInt(userConfig.TransientResinUseCount) || 0;
|
||||
let pFragile = parseInt(userConfig.FragileResinUseCount) || 0;
|
||||
let pDomainRoundNum = parseInt(userConfig.DomainRoundNum) || 0;
|
||||
let pFightEndDelay = parseInt(userConfig.FightEndDelay) || 5;
|
||||
|
||||
// [新增] 树脂机制警告
|
||||
if (!pRunUntilDepleted && pOriginal > 0) {
|
||||
log.warn("【树脂警告】您设置了使用原粹树脂。由于 BetterGI 本体任务目前不支持选择 20/40 树脂:");
|
||||
log.warn(" -> 请务必在运行脚本前,手动进入一次秘境,确认并调整好游戏内的树脂消耗选项,否则可能导致消耗不符合预期。");
|
||||
}
|
||||
|
||||
// =========================================================================
|
||||
// 2. 智能逻辑处理
|
||||
// =========================================================================
|
||||
|
||||
// 中文星期对照表 (0-6)
|
||||
const WEEK_MAP = ["日", "一", "二", "三", "四", "五", "六"];
|
||||
|
||||
let materialInfo = MATERIAL_DB[pTargetMaterial];
|
||||
if (!materialInfo) {
|
||||
log.error(`【数据错误】无法在数据库中找到项目:${pTargetMaterial}`);
|
||||
log.error("请检查 JSON 数据文件是否包含此素材,或 settings.json 中的名称是否一致。");
|
||||
return;
|
||||
}
|
||||
|
||||
if (materialInfo.type === 'artifact') {
|
||||
// [圣遗物] 每日开放,直接放行
|
||||
pDomainName = materialInfo.domain;
|
||||
pSundaySelectedValue = "";
|
||||
log.info(`【圣遗物模式】目标:${pTargetMaterial}`);
|
||||
log.info(`【自动定位】秘境:${pDomainName} (每日开放)`);
|
||||
} else {
|
||||
// [天赋/武器素材] 需要日期检查
|
||||
let requiredIdx = materialInfo.idx;
|
||||
pDomainName = materialInfo.domain;
|
||||
pSundaySelectedValue = requiredIdx.toString();
|
||||
|
||||
// --- 全球通用时间逻辑 (跨时区修正版) ---
|
||||
|
||||
// 1. 获取 BGI 配置的服务器偏移量 (例如亚服为 +8小时,单位毫秒)
|
||||
let serverOffsetMs = ServerTime.GetServerTimeZoneOffset();
|
||||
|
||||
// 2. 获取当前的 UTC 时间戳 (全球统一,不受电脑时区影响)
|
||||
let utcNow = Date.now();
|
||||
|
||||
// 3. 计算"游戏服务器的逻辑时间戳"
|
||||
// 算法: UTC时间 + 服务器偏移量 - 4小时(换日)
|
||||
// 这样算出来的时间,如果视作 UTC 时间,其"星期几"就是游戏内的"星期几"
|
||||
let logicTimeMs = utcNow + serverOffsetMs - (4 * 60 * 60 * 1000);
|
||||
let logicDate = new Date(logicTimeMs);
|
||||
|
||||
// 4. 获取 UTC 星期 (关键: 必须用 getUTCDay,忽略本地时区)
|
||||
let dayOfWeek = logicDate.getUTCDay();
|
||||
let dayStr = WEEK_MAP[dayOfWeek];
|
||||
|
||||
if (enableDebug) {
|
||||
// 调试信息:计算当前的服务器名义时间
|
||||
let serverTimeDate = new Date(utcNow + serverOffsetMs);
|
||||
log.info(`[DEBUG] 游戏服务器时间(UTC视角): ${serverTimeDate.toUTCString()}`);
|
||||
log.info(`[DEBUG] 逻辑判定后星期: ${dayStr}`);
|
||||
}
|
||||
|
||||
// 判断今日是否开放
|
||||
let isDateOpen = false;
|
||||
if (dayOfWeek === 0) isDateOpen = true; // 周日
|
||||
else if (requiredIdx === 1 && (dayOfWeek === 1 || dayOfWeek === 4)) isDateOpen = true;
|
||||
else if (requiredIdx === 2 && (dayOfWeek === 2 || dayOfWeek === 5)) isDateOpen = true;
|
||||
else if (requiredIdx === 3 && (dayOfWeek === 3 || dayOfWeek === 6)) isDateOpen = true;
|
||||
|
||||
log.info(`【智能匹配】目标: ${pTargetMaterial} (游戏内星期${dayStr})`);
|
||||
|
||||
if (isDateOpen) {
|
||||
log.info(`【日期检查】通过,今日为常规开放日。`);
|
||||
} else {
|
||||
log.warn(`【日期检查】警告:今日 (游戏内星期${dayStr}) 非该素材常规开放日!`);
|
||||
|
||||
if (pForceRunMode) {
|
||||
log.warn(`【强制运行】检测到"强制运行"已勾选。脚本将继续执行。`);
|
||||
log.warn(`【风险提示】若游戏内并无"限时全开"活动,底层的 OCR 将无法识别活动,BetterGI 将会直接进入今日预设副本,导致刷错素材!`);
|
||||
} else {
|
||||
log.error(`【停止运行】为防止刷错素材,脚本已停止。`);
|
||||
log.error(` -> 若您确认当前游戏有"限时全开/精通移涌"活动,请在设置中勾选"强制运行"以忽略此警告。`);
|
||||
return; // 安全退出
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// =========================================================================
|
||||
// 3. 执行主流程
|
||||
// =========================================================================
|
||||
while (true) {
|
||||
try {
|
||||
let taskParam = new AutoDomainParam(pDomainRoundNum);
|
||||
taskParam.DomainName = pDomainName;
|
||||
taskParam.PartyName = pPartyName;
|
||||
taskParam.AutoArtifactSalvage = pAutoArtifactSalvage;
|
||||
taskParam.MaxArtifactStar = pMaxArtifactStar;
|
||||
taskParam.SundaySelectedValue = pSundaySelectedValue;
|
||||
|
||||
taskParam.SpecifyResinUse = !pRunUntilDepleted;
|
||||
if (!pRunUntilDepleted) {
|
||||
taskParam.OriginalResinUseCount = pOriginal;
|
||||
taskParam.CondensedResinUseCount = pCondensed;
|
||||
taskParam.TransientResinUseCount = pTransient;
|
||||
taskParam.FragileResinUseCount = pFragile;
|
||||
taskParam.SetResinPriorityList("浓缩树脂", "原粹树脂", "须臾树脂", "脆弱树脂");
|
||||
} else {
|
||||
taskParam.SetResinPriorityList("浓缩树脂", "原粹树脂");
|
||||
}
|
||||
|
||||
await dispatcher.RunAutoDomainTask(taskParam);
|
||||
|
||||
if (pFightEndDelay > 0) {
|
||||
log.info(`[脚本] 任务结束,等待 ${pFightEndDelay} 秒...`);
|
||||
await sleep(pFightEndDelay * 1000);
|
||||
}
|
||||
break;
|
||||
} catch (ex) {
|
||||
let msg = ex.message || "";
|
||||
if (msg.includes("背包物品已满") || msg.includes("未检测到秘境结束")) {
|
||||
log.warn(`[脚本] 任务可能已完成,但检测到: ${msg}`);
|
||||
break;
|
||||
} else if (msg.includes("复苏")) {
|
||||
log.warn(`[脚本] 角色死亡,5秒后重试...`);
|
||||
await sleep(5000);
|
||||
continue;
|
||||
} else if (msg.includes("TaskCanceledException")) {
|
||||
log.info("[脚本] 任务已取消。");
|
||||
break;
|
||||
} else {
|
||||
log.error(`[脚本] 错误: ${msg}`);
|
||||
// [修改] 新增针对未找到传送点的错误提示
|
||||
if (msg.includes("未找到对应的秘境")) {
|
||||
log.error("请等待BetterGI本体更新支援新秘境");
|
||||
}
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
}
|
||||
})();
|
||||
@@ -1,25 +1,25 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "传送并自动秘境(增强版)",
|
||||
"version": "0.5",
|
||||
"bgi_version": "0.54.0",
|
||||
"description": "BetterGI自带脚本的增强版,用于传送后并执行自动秘境。秘境中角色死亡复活后继续回去战斗。支持自定义各项参数(如树脂设置、自动废弃圣遗物、轮数设置等)与周期性素材刷取。(本脚本由AI辅助生成)",
|
||||
"authors": [
|
||||
{
|
||||
"name": "huiyadanli",
|
||||
"links": "https://github.com/huiyadanli"
|
||||
},
|
||||
{
|
||||
"name": "iris"
|
||||
},
|
||||
{
|
||||
"name": "霁"
|
||||
},
|
||||
{
|
||||
"name": "RJFAC",
|
||||
"links": "https://github.com/RJFAC"
|
||||
}
|
||||
],
|
||||
"settings_ui": "settings.json",
|
||||
"main": "main.js"
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "传送并自动秘境(增强版)",
|
||||
"version": "0.6",
|
||||
"bgi_version": "0.55.0",
|
||||
"description": "BetterGI自带脚本的增强版,用于传送后并执行自动秘境。秘境中角色死亡复活后继续回去战斗。支持自定义各项参数(如树脂设置、自动废弃圣遗物、轮数设置等)与周期性素材刷取。(本脚本由AI辅助生成)",
|
||||
"authors": [
|
||||
{
|
||||
"name": "huiyadanli",
|
||||
"links": "https://github.com/huiyadanli"
|
||||
},
|
||||
{
|
||||
"name": "iris"
|
||||
},
|
||||
{
|
||||
"name": "霁"
|
||||
},
|
||||
{
|
||||
"name": "RJFAC",
|
||||
"links": "https://github.com/RJFAC"
|
||||
}
|
||||
],
|
||||
"settings_ui": "settings.json",
|
||||
"main": "main.js"
|
||||
}
|
||||
@@ -1,155 +1,156 @@
|
||||
[
|
||||
{
|
||||
"name": "TargetTalentMaterialName",
|
||||
"type": "select",
|
||||
"label": "【角色天赋素材】(自动判定日期,若选此项请勿选其他两项)",
|
||||
"options": [
|
||||
"",
|
||||
"=== 蒙德 ===",
|
||||
"「自由」的哲学", "「抗争」的哲学", "「诗文」的哲学",
|
||||
"=== 璃月 ===",
|
||||
"「繁荣」的哲学", "「勤劳」的哲学", "「黄金」的哲学",
|
||||
"=== 稻妻 ===",
|
||||
"「浮世」的哲学", "「风雅」的哲学", "「天光」的哲学",
|
||||
"=== 须弥 ===",
|
||||
"「诤言」的哲学", "「巧思」的哲学", "「笃行」的哲学",
|
||||
"=== 枫丹 ===",
|
||||
"「公平」的哲学", "「正义」的哲学", "「秩序」的哲学",
|
||||
"=== 纳塔 ===",
|
||||
"「角逐」的哲学", "「焚燔」的哲学", "「纷争」的哲学",
|
||||
"=== 挪德卡莱 ===",
|
||||
"「月光」的哲学", "「乐园」的哲学", "「浪迹」的哲学"
|
||||
],
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"name": "TargetWeaponMaterialName",
|
||||
"type": "select",
|
||||
"label": "【武器升级素材】(自动判定日期,若选此项请勿选其他两项)",
|
||||
"options": [
|
||||
"",
|
||||
"=== 蒙德 ===",
|
||||
"高塔孤王的碎梦", "凛风奔狼的怀乡", "狮牙斗士的理想",
|
||||
"=== 璃月 ===",
|
||||
"孤云寒林的神体", "雾海云间的转还", "漆黑陨铁的一块",
|
||||
"=== 稻妻 ===",
|
||||
"远海夷地的金枝", "鸣神御灵的勇武", "今昔剧画之鬼人",
|
||||
"=== 须弥 ===",
|
||||
"谧林涓露的金符", "绿洲花园的真谛", "烈日威权的旧日",
|
||||
"=== 枫丹 ===",
|
||||
"悠古弦音的回响", "纯圣露滴的真粹", "无垢之海的金杯",
|
||||
"=== 纳塔 ===",
|
||||
"贡祭炽心的荣膺", "谵妄圣主的神面", "神合秘烟的启示",
|
||||
"=== 挪德卡莱 ===",
|
||||
"奇巧秘器的真愿", "长夜燧火的烈辉", "终北遗嗣的煌熠"
|
||||
],
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"name": "TargetArtifactName",
|
||||
"type": "select",
|
||||
"label": "【圣遗物】(每日开放,若选此项请勿选其他两项)",
|
||||
"options": [
|
||||
"",
|
||||
"=== 蒙德 ===",
|
||||
"如雷的盛怒 / 平息雷鸣的尊者",
|
||||
"翠绿之影 / 被怜爱的少女",
|
||||
"沉沦之心 / 冰风迷途的勇士",
|
||||
"=== 璃月 ===",
|
||||
"炽烈的炎之魔女 / 渡过烈火的贤人",
|
||||
"昔日宗室之仪 / 染血的骑士道",
|
||||
"悠古的磐岩 / 逆飞的流星",
|
||||
"辰砂往生录 / 来歆余响",
|
||||
"=== 稻妻 ===",
|
||||
"绝缘之旗印 / 追忆之注连",
|
||||
"海染砗磲 / 华馆梦醒形骸记",
|
||||
"=== 须弥 ===",
|
||||
"深林的记忆 / 饰金之梦",
|
||||
"沙上楼阁史话 / 乐园遗落之花",
|
||||
"水仙之梦 / 花海甘露之光",
|
||||
"=== 枫丹 ===",
|
||||
"逐影猎人 / 黄金剧团",
|
||||
"昔时之歌 / 回声之林夜话",
|
||||
"谐律异想断章 / 未竟的遐思",
|
||||
"=== 纳塔 ===",
|
||||
"黑曜秘典 / 烬城勇者绘卷",
|
||||
"深廊终曲 / 长夜之誓",
|
||||
"=== 挪德卡莱 ===",
|
||||
"纺月的夜歌 / 穹境示现之夜"
|
||||
],
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"name": "ForceRunMode",
|
||||
"type": "checkbox",
|
||||
"label": "【风险】强制运行 (仅在有限时全开活动时勾选)",
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "PartyName",
|
||||
"type": "input-text",
|
||||
"label": "自动切换到指定队伍 (支持正则)",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"name": "RunUntilResinDepleted",
|
||||
"type": "checkbox",
|
||||
"label": "刷取至树脂耗尽 (优先用原粹后用浓缩)",
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "OriginalResinUseCount",
|
||||
"type": "input-text",
|
||||
"label": "原粹树脂刷取次数 (请先在游戏内手动调整 20/40 选项)",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"name": "CondensedResinUseCount",
|
||||
"type": "input-text",
|
||||
"label": "浓缩树脂刷取次数",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"name": "TransientResinUseCount",
|
||||
"type": "input-text",
|
||||
"label": "须臾树脂刷取次数",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"name": "FragileResinUseCount",
|
||||
"type": "input-text",
|
||||
"label": "脆弱树脂刷取次数",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"name": "AutoArtifactSalvage",
|
||||
"type": "checkbox",
|
||||
"label": "结束后自动分解圣遗物",
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "MaxArtifactStar",
|
||||
"type": "select",
|
||||
"label": "需要快速分解圣遗物的最高星级",
|
||||
"options": ["1", "2", "3", "4"],
|
||||
"default": "4"
|
||||
},
|
||||
{
|
||||
"name": "FightEndDelay",
|
||||
"type": "input-text",
|
||||
"label": "战斗完成后等待时间 (秒)",
|
||||
"default": "5"
|
||||
},
|
||||
{
|
||||
"name": "DomainRoundNum",
|
||||
"type": "input-text",
|
||||
"label": "秘境刷取轮数 (0表示9999轮)",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"name": "EnableDebug",
|
||||
"type": "checkbox",
|
||||
"label": "启用调试模式",
|
||||
"default": false
|
||||
}
|
||||
[
|
||||
{
|
||||
"name": "TargetTalentMaterialName",
|
||||
"type": "select",
|
||||
"label": "【角色天赋素材】(自动判定日期,若选此项请勿选其他两项)",
|
||||
"options": [
|
||||
"",
|
||||
"=== 蒙德 ===",
|
||||
"「自由」的哲学", "「抗争」的哲学", "「诗文」的哲学",
|
||||
"=== 璃月 ===",
|
||||
"「繁荣」的哲学", "「勤劳」的哲学", "「黄金」的哲学",
|
||||
"=== 稻妻 ===",
|
||||
"「浮世」的哲学", "「风雅」的哲学", "「天光」的哲学",
|
||||
"=== 须弥 ===",
|
||||
"「诤言」的哲学", "「巧思」的哲学", "「笃行」的哲学",
|
||||
"=== 枫丹 ===",
|
||||
"「公平」的哲学", "「正义」的哲学", "「秩序」的哲学",
|
||||
"=== 纳塔 ===",
|
||||
"「角逐」的哲学", "「焚燔」的哲学", "「纷争」的哲学",
|
||||
"=== 挪德卡莱 ===",
|
||||
"「月光」的哲学", "「乐园」的哲学", "「浪迹」的哲学"
|
||||
],
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"name": "TargetWeaponMaterialName",
|
||||
"type": "select",
|
||||
"label": "【武器升级素材】(自动判定日期,若选此项请勿选其他两项)",
|
||||
"options": [
|
||||
"",
|
||||
"=== 蒙德 ===",
|
||||
"高塔孤王的碎梦", "凛风奔狼的怀乡", "狮牙斗士的理想",
|
||||
"=== 璃月 ===",
|
||||
"孤云寒林的神体", "雾海云间的转还", "漆黑陨铁的一块",
|
||||
"=== 稻妻 ===",
|
||||
"远海夷地的金枝", "鸣神御灵的勇武", "今昔剧画之鬼人",
|
||||
"=== 须弥 ===",
|
||||
"谧林涓露的金符", "绿洲花园的真谛", "烈日威权的旧日",
|
||||
"=== 枫丹 ===",
|
||||
"悠古弦音的回响", "纯圣露滴的真粹", "无垢之海的金杯",
|
||||
"=== 纳塔 ===",
|
||||
"贡祭炽心的荣膺", "谵妄圣主的神面", "神合秘烟的启示",
|
||||
"=== 挪德卡莱 ===",
|
||||
"奇巧秘器的真愿", "长夜燧火的烈辉", "终北遗嗣的煌熠"
|
||||
],
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"name": "TargetArtifactName",
|
||||
"type": "select",
|
||||
"label": "【圣遗物】(每日开放,若选此项请勿选其他两项)",
|
||||
"options": [
|
||||
"",
|
||||
"=== 蒙德 ===",
|
||||
"如雷的盛怒 / 平息雷鸣的尊者",
|
||||
"翠绿之影 / 被怜爱的少女",
|
||||
"沉沦之心 / 冰风迷途的勇士",
|
||||
"=== 璃月 ===",
|
||||
"炽烈的炎之魔女 / 渡过烈火的贤人",
|
||||
"昔日宗室之仪 / 染血的骑士道",
|
||||
"悠古的磐岩 / 逆飞的流星",
|
||||
"辰砂往生录 / 来歆余响",
|
||||
"=== 稻妻 ===",
|
||||
"绝缘之旗印 / 追忆之注连",
|
||||
"海染砗磲 / 华馆梦醒形骸记",
|
||||
"=== 须弥 ===",
|
||||
"深林的记忆 / 饰金之梦",
|
||||
"沙上楼阁史话 / 乐园遗落之花",
|
||||
"水仙之梦 / 花海甘露之光",
|
||||
"=== 枫丹 ===",
|
||||
"逐影猎人 / 黄金剧团",
|
||||
"昔时之歌 / 回声之林夜话",
|
||||
"谐律异想断章 / 未竟的遐思",
|
||||
"=== 纳塔 ===",
|
||||
"黑曜秘典 / 烬城勇者绘卷",
|
||||
"深廊终曲 / 长夜之誓",
|
||||
"=== 挪德卡莱 ===",
|
||||
"纺月的夜歌 / 穹境示现之夜",
|
||||
"晨星与月的晓歌 / 风起之日"
|
||||
],
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"name": "ForceRunMode",
|
||||
"type": "checkbox",
|
||||
"label": "【风险】强制运行 (仅在有限时全开活动时勾选)",
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "PartyName",
|
||||
"type": "input-text",
|
||||
"label": "自动切换到指定队伍 (支持正则)",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"name": "RunUntilResinDepleted",
|
||||
"type": "checkbox",
|
||||
"label": "刷取至树脂耗尽 (优先用原粹后用浓缩)",
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "OriginalResinUseCount",
|
||||
"type": "input-text",
|
||||
"label": "原粹树脂刷取次数 (请先在游戏内手动调整 20/40 选项)",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"name": "CondensedResinUseCount",
|
||||
"type": "input-text",
|
||||
"label": "浓缩树脂刷取次数",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"name": "TransientResinUseCount",
|
||||
"type": "input-text",
|
||||
"label": "须臾树脂刷取次数",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"name": "FragileResinUseCount",
|
||||
"type": "input-text",
|
||||
"label": "脆弱树脂刷取次数",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"name": "AutoArtifactSalvage",
|
||||
"type": "checkbox",
|
||||
"label": "结束后自动分解圣遗物",
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "MaxArtifactStar",
|
||||
"type": "select",
|
||||
"label": "需要快速分解圣遗物的最高星级",
|
||||
"options": ["1", "2", "3", "4"],
|
||||
"default": "4"
|
||||
},
|
||||
{
|
||||
"name": "FightEndDelay",
|
||||
"type": "input-text",
|
||||
"label": "战斗完成后等待时间 (秒)",
|
||||
"default": "5"
|
||||
},
|
||||
{
|
||||
"name": "DomainRoundNum",
|
||||
"type": "input-text",
|
||||
"label": "秘境刷取轮数 (0表示9999轮)",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"name": "EnableDebug",
|
||||
"type": "checkbox",
|
||||
"label": "启用调试模式",
|
||||
"default": false
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user