js:锄地一条龙路线记录优化 (#2814)

This commit is contained in:
mno
2026-01-29 15:43:52 +08:00
committed by GitHub
parent 7f905dee7b
commit 9855b7025e
5 changed files with 138 additions and 65 deletions

View File

@@ -15,23 +15,117 @@
使用即表示您已阅读并同意上述条款。
---
(简易配置描述部分)
### 一、**使用方法及配置建议**
1. 首先请在配置组中点击 **+添加** 找到本js锄地一条龙后加入配置组
### 一、**快速使用指南 ✅**
2. 在配置组界面中点击 **⚙️设置**
-**地图追踪行走选项** 中请关闭即不填写切换队伍该选项目前在配置组中只有一个js时不生效请在js自定义配置中填写配队
- 如有需要,按照对应的配队,配置对应的生存位和行走位
- 配置组中的 **不在某时执行** 目前无法打断js的运行请不要尝试通过配置该项来使本js在特定时间终止运行
- **战斗配置** 中请为你使用的队伍选择合适的战斗策略,战斗策略相关内容存在疑问请参考文档,配队思路请参考【第四部分】。
- 请打开 **自动检测战斗结束** ,按需配置相关选项,其中 **检查战斗结束的延时** 不推荐默认的1.5秒建议缩短至0.5秒以下
- 强烈建议关闭 **自动拾取掉落物** ,该选项开启后会显著提高运行用时和卡死风险
- 建议开启 **战斗结束后执行万叶长e**,可显著提高狗粮收益
- **战斗超时** 建议根据队伍练度适当缩短尤其小怪路线推荐60秒以下相反队伍练度过低时可以适当延长
1. 添加脚本
在 BGI 配置组中点击 +添加 → 选择 “锄地一条龙”脚本。
2. 配置组设置(⚙️)
- ⚠️ 关键设置,请务必检查!
- 切换队伍:❌ 关闭(配队请在脚本自定义配置中填写)
- 战斗策略:推荐使用万能策略,不在万能策略中的角色不建议使用
- 自动拾取掉落物:❌ 强烈建议关闭(易卡死、拖慢速度)
- 自动检测战斗结束:✅ 开启,延时设为 0.35-0.5秒默认1.5秒太慢)
- 战斗结束后执行万叶长E✅ 强烈建议开启大幅提升狗粮收益如果你觉得慢你打280精英然后把捡的狗粮摧毁和打400不捡狗粮的收益时一样的
- 战斗超时:小怪路线建议 ≤60秒练度低可适当延长
- 不在某时执行:⚠️ 无法中断运行,不要依赖此功能定时停止
- 生存位、行走位:生存位不建议开启,行走位建议根据设备情况决定,设备情况良好可以使用高移速体型或角色提速,如成男或哥伦比娅,设备较差经常跑过头等时,建议使用移速较慢的体型或角色,与此同时,选择生命上限较高的角色和韧性较高的角色(如大剑>单手剑)有助于提高稳定性。
- 其余选项如果你不确定其作用建议保持默认状态,或询问群友等
3. 在配置组界面中右键js选择 **修改js脚本自定义配置** ,参考后续介绍按需修改各个配置选项
- 第一部分:路径组执行配置:该部分影响执行的具体细节
3. 脚本自定义配置(右键脚本 → 修改配置)
- **正常以摩拉为目的的锄地**
- 🔹 第一部分:执行设置
- - 执行模式:默认选 “运行锄地路线”
- - 路径组编号支持分组运行如组1打精英组2刷小怪需为每组单独创建配置组
- - 配队名称:填写该组使用的队伍名(脚本会自动切换)
- - 拾取模式:✅ 推荐“模板匹配拾取”根据需求选择拾取狗粮或狗粮与怪物材料;❌ 不推荐“BGI原版拾取”或“不拾取”
- - 泥头车模式可提前开E的角色芙宁娜、爱可菲泥头车模式请填写角色在队伍里对应序号❌ 不建议盾角或纳塔角色
- 🔹 第二部分路线选择仅路径组1生效
- - 请正确设置路径组1的设置其他组会自动读取组1的配置无需重复设置❗❗❗
- - 账户名称:多账号用户填写不同名字以区分记录
- - 标签系统(中文逗号分隔):
- - 蕈兽:建议排除(雷火会转化,白占名额)
- - 小怪:适合练级队,且无需携带万叶拾取狗粮
- - 水免 / 次数盾 / 高危 / 传奇:根据队伍强度选择是否排除
- - ⚠️路径一排除关键词仅针对路径一(如需在所有路径排除,请下滑到“排除关键词”并正确填写)
- - 目标数量:精英怪建议 400小怪建议 2000均为游戏上限
- - 优先关键词:如 600,丘丘王(优先刷高收益怪)
- - ⚠️优先关键词≠锄地顺序优先,优先关键词代表无视该路线效率,优先加入。
- - 排除关键词:如 纳塔,雪山(跳过不想打的区域,亦可输入不想打的怪物名称)
- - ⚠️排除关键词对所有路径组生效。
- - ❗❗❗关于路径组,可使用一个路径组打完所有怪物,亦可拆分,以不同队伍应对不同的怪物❗❗❗
- - ⚠️请注意:若拆分多个路径组,后续路径组均从前面路进组筛选后的路径中筛选
- **极简版,以怪物材料为目的**
- - 执行模式:选 “仅指定怪物模式”
- - 同上进行配置组设置
- - 自定义配置拉到最下面,按要求填写需要的怪物名称
4. 分组运行示例:
- 路径组1排除标签传奇小怪蕈兽路径组一由于排除传奇与小怪会执行精英路线但精英路线会包含一部分小怪且无法避免
- 路径组2选择标签旧日之海龙蜥由于该怪物带有传奇标签被路径一排除所以路径二可以选择
- 路径组3选择标签传奇由于路径二已经筛选了旧日之海龙蜥所以路径三将执行除该传奇以外的传奇路径
- 路径组4选择标签小怪执行剩余小怪路线
- ❗❗❗所有关键词均根据自己需求填写,然后执行一次路径调试输出,查看锄地一条龙目录下“调试结果”验证是否正确。
- ❗❗❗若拆分路径需要添加对应的配置组在每个配置组中的JS中选择需要运行的路径组。在一条龙中执行顺序无要求确保运行过路径一配置组生成正确的配置文件
- ❗❗❗部分路线可能因为效率过低不入选,请在优先关键词添加正确关键词;如部分路线经常出现问题,可以在排除关键词排除,并向作者提交详细问题说明。
5. 其他建议
- 游戏分辨率:仅支持 1080p + 60帧其他情况能够使用纯属巧合
- 时间格式:建议使用 24小时制
- 自定义拾取:将想捡的物品图(**.PNG放入 assets/targetItems/其他/保留/,更新不会覆盖
- 自定义路线:将自己想要额外添加的路线(**.json放入 pathing/0-保留,更新不会覆盖
### 二、**收益说明 💰**
- 精英怪
- - 收益200600 摩拉 + 狗粮概率平均每只150狗粮经验值+ 60经验
- - 上限400 只
- 小怪
- - 收益3249 摩拉 部分怪物为1.5倍2倍3倍+ 20经验
- - 不掉落狗粮
- - 上限2000 只
- 地方传奇
- - 收益:占用多个精英(或小怪),不同类型掉落有所差异
- - 上限:与精英(或小怪)同享上限
- - 备注:队伍强度足够时建议打传奇增加收益。
- ✅ 默认配置收益:约 23.5万摩拉 + 5.5万狗粮经验
- ❗ 超出上限后不再获得任何奖励!
### 三、**拾取机制优势 🎒**
- 智能识别 狗粮 + 怪物材料,自动跳过背包已满的物品
- 黑名单独立存储blacklists/ 文件夹可手动编辑请确保符合json格式要求
- 支持自定义保留物品(见上文)
### 四、推荐配队思路👥
- BGI 不智能!配队不合理 = 卡死 / 打不过 / 捡不到狗粮!
- 必备角色类型:
- 抗打断:茜特菈莉、伊涅芙、莱伊拉、迪希雅
- 召唤输出:✅ 芙宁娜(首选)、爱可菲(次选)
- 治疗:白术、希格雯、芭芭拉、夏沃蕾
- 辅助(可选):万叶(聚怪+捡狗粮)、玛薇卡、那维莱特
- 避雷配队:
- - ❌ 四神队(无奶、钟离柱子卡路、雷草神混子)
- - ❌ 无召唤物队伍(效率极低)
- - ❌ 不带万叶打精英每天少捡6万狗粮
- - ❌ 夜兰/克洛琳德等位移大角色(易跑飞卡死)
- - ⚠️ 脚本内置配队校验,若无法通过校验可启用跳过验证,若跳过警告导致问题,责任自负。
### 五、具体配置说明
1. 第一部分:路径组运行配置:该部分将决定当前路径组的具体执行参数
- **执行模式:**
- - 默认选择 **运行锄地路线** ,选择该模式会按照后续设置选择并运行相应路线
- - 选项 **输出地图追踪文件** 会将选择的路线读取并分组输出到js文件夹下pathingOut文件夹
@@ -48,7 +142,7 @@
- **组内路线排序模式:** 效率降序用于当你的时间不足以刷完所有路线时使用先刷效率最高的可配合优先关键词使用这些路线效率会被视为最高高收益优先选项将会将包含高倍率怪物如60040081飞萤的路线排在前面避免因为超出上限损失这部分收益
- **输入不运行的时间或时间段的小时数** 当你需要让js在特定的时间终止运行时按描述填写js会在距离目标时间小于五分钟时终止运行并等待到目标时间
- **泥头车模式:** 接近战斗地点距离5-30提前让指定序号的角色开e建议以下角色开启芙宁娜爱可菲雷电将军不建议各种盾位或纳塔角色开启。
- 第二部分路线选择与分组配置该部分将决定路线的选择与分配js将尝试按照以下配置选择路线以达到目标数量的怪物并分配到不同的路径组在第一部分中选择不同的路径组以执行对应的路线
2. 第二部分路线选择与分组配置该部分将决定路线的选择与分配js将尝试按照以下配置选择路线以达到目标数量的怪物并分配到不同的路径组在第一部分中选择不同的路径组以执行对应的路线
- **账户名称:** 本js支持多用户不同账户的记录分开存储当你需要使用多用户时请在这里填写不同的文本来区分不同账号的记录如果你只使用一个账号请不要修改该选项
- **路径组x标签** 本js使用不同的标签来禁用或分组路线多个标签之间使用中文逗号分隔目前支持的标签如下
- - 水免:表明路线含有水元素伤害免疫的怪物,使用以水元素伤害为主的队伍处理该路线时可能较为麻烦
@@ -57,10 +151,10 @@
- - 传奇 :表明路线含有地方传奇,战斗强度通常极高,请评估后选择是否排除
- - 蕈兽 :表明路线含有蕈兽,蕈兽遇到雷火元素时会发生转化,转化后占据精英怪物的名额却只掉落少量摩拉,通常建议禁用
- - 小怪 :表明路线只含小怪,战斗强度低,且无需携带万叶来拾取可能掉落的狗粮,可以适当携带等级较低或不上场的角色来获取经验收益
- - 狂猎 :标明路线含义挪德卡莱的狂猎类型怪物,需要先破血条后打灰条,难度较高
- - 狭窄地形 :表明路线存在部分非常狭窄,任何位移技能都容易导致致命后果
- - 环境伤害 :路线处于雪山或挪德卡莱苦壑崖区域,环境伤害会持续扣血
- - 分组逻辑不含路径组1排除标签和任何其他组标签的路径会进入路径组1剩余路径若含有路径组x的标签之一则会进入路径组x
- - **分组使用示例**路径组一排除标签填写蕈兽禁用蕈兽路线路径组二选择标签填写小怪队伍中放升级中角色获取经验路径组三选择标签填写次数盾水免处理路径组一的配队难以处理的次数盾和水免怪物将本js添加到【多个配置组】中各个配置组依次选择对应的路径组并根据路径组的具体情况配置每个配置组的设置和配队等
- - 新增支持自定义标签将会尝试将未知的标签通过文件路径description匹配含有对应关键词的路线即视为含有这些标签
- **路线效率计算权重:** 影响js评估路线价值计算公式如下权重越大越看重总收益
- $$ 怪均^k \times 秒均 $$
@@ -69,45 +163,15 @@
- **优先关键词:** 含有关键词的路线会被视为拥有最高效率例如填写600来让所有600怪物优先考虑填写骗骗花来优先考虑骗骗花
- **排除关键词:** 含有关键词的路线会被排除,例如填写纳塔来排除所有纳塔路线,同样使用中文逗号分隔
4. **只建议在原神中设置1080p60帧使用其他分辨率或帧率出现任何问题都是正常现象**
5. **不建议使用12小时制时间虽然也能跑**
6. **注意仅选择路径组一的配置组的第二部分路线与分组配置有效选择路径组一的配置组的本js运行后将保存配置供其他路径组读取其他路径组的自定义配置中第二部分完全无效该设定是为了确保各个配置组中同账户的路线分配完全相同**
7. **个性化编辑**:允许一定程度的个性化配置。
3. **只建议在原神中设置1080p60帧使用其他分辨率或帧率出现任何问题都是正常现象**
4. **不建议使用12小时制时间虽然也能跑**
5. **注意仅选择路径组一的配置组的第二部分路线与分组配置有效选择路径组一的配置组的本js运行后将保存配置供其他路径组读取其他路径组的自定义配置中第二部分完全无效该设定是为了确保各个配置组中同账户的路线分配完全相同**
6. **个性化编辑**:允许一定程度的个性化配置。
- 只需要拾取狗粮和部分材料时可以将所需材料的图片复制到assets/targetItems/其他/保留文件夹这个文件夹内的图片不会被更新覆盖至多三层子文件夹且只保留png,此时选择只拾取狗粮模式就会同时拾取狗粮和你添加的材料,选择拾取狗粮和怪物材料则会拾取狗粮,你添加的材料,怪物材料
- 虽然仓库中“敌人与魔物”路径普遍质量较差本js仍然允许用户自行添加部分路径建议放在pathing/0-保留文件夹下,这个文件夹下的地图追踪文件不会被更新覆盖(至多三层子文件夹且只保留json)按照本js规则正确标注了预计用时与怪物信息的路线可以正常参与路线分配和怪物数量计算没有进行标注的路径则默认60秒0怪物数量0收益通常仅在启用仅指定怪物模式时使用。使用自行添加路线造成的卡死、被击败、怪物数量异常等问题本js概不负责。**强烈建议只使用本js原装的经过优选和验证的路线**
### 二、**锄地收益**
- 击杀精英怪和小怪通常会掉落对应的材料和一定量摩拉,同时为队伍中角色提供经验,精英怪还会概率掉落三四星的战狂、教官、流放者圣遗物
- 击杀小怪和精英怪获取收益存在限制超过400只精英怪和2000只小怪的部分不会再产生收益
- 不同怪物的价值不同小怪通常掉落32-49摩拉精英怪通常掉落200摩拉部分怪物价值较高会成倍增加掉落如纳塔龙武士占据一个小怪名额但是掉落双倍64-98的摩拉丘丘王占据一个精英名额但是掉落三倍600的摩拉
- 本js的核心功能就是从内置的路线中按照配置选择路线组合来在较短的时间内获取较高的收益默认配置下预期可获取约23.5万摩拉和5.5万经验的圣遗物
- 请按照自己的情况合理安排精英和小怪的目标数量建议优先刷满400个精英如果有多余时间再刷小怪
### 三、**拾取模式**
- 目前bgi默认的自动拾取无法有效从怪物材料中分拣出狗粮长期锄地容易造成背包中牛角等材料达到上限而影响自动拾取关闭拾取又会无法捡到狗粮损失收益
- 使用本js可实现基本上只拾取目标物品默认配置下将拾取狗粮和全部怪物材料并自动将达到上限的材料添加至黑名单中也可选择只拾取狗粮
- 黑名单每个账户独立存储可以打开balcklists文件夹查看并编辑每个账号的黑名单
- 支持使用bgi原版拾取或完全不拾取任何物品不建议使用
- 同时提供了其他各种材料的图片在assets/其余材料图.zip中需要拾取的请自行解压然后将对应图片放到assets/targetitems中其他/保留文件夹中的图片不会被更新覆盖(至多支持三层子文件夹)
### 四、**锄地配队建议**
- bgi锄地没有那么智能暂时无法像手动一样灵活进行各种需要索敌的操作同时各种位移技能也很容易干扰锄地的正常运行因此建议的锄地配队组队思路如下
- 一个合理的bgi锄地配队至少应当包含抗打断、召唤物输出、奶妈精英怪的配队还应当带上万叶
- 抗打断位用于确保技能的正常释放通常为护盾角色只建议e启动角色如茜特菈莉、伊涅芙等四星角色莱伊拉也可用通常不建议使用钟离柱子影响较大。此外迪希雅的领域可以给予领域内角色抗打断和分摊伤害也可以作为抗打断位使用。如果你执意不携带任何抗打断位角色技能将很容易被怪物打断。
- 召唤物输出目前可靠的只有芙宁娜爱可菲可以在没有芙宁娜时作为下位替代两个角色都有时非常推荐同时携带。如果两者都不携带锄地的效率将会很低。非常不建议在没有任何形式的自动索敌的情况下使用bgi锄地。
- 奶妈非常建议携带可以较大提升bgi锄地的稳定性减少复活次数从而提高总体效率同时保持50%以上的血线将提高海鲜的伤害。总体来说e启动奶q启动奶白术、希格雯、爱可菲、芭芭拉、夏沃蕾都可以使用仅当你有满命芙宁娜或钟离等时可以考虑不携带奶妈。
- 其他补充伤害的角色,他们的作用是快速清理近处较多的怪物,有利于提高偏对单的海鲜和烹饪锅处理怪物的效率,只有在你队伍有空余位置时才建议携带(通常没位置),较推荐使用的角色有:玛薇卡、那维莱特、万叶(扩散清杂和聚怪)
- 剩余角色在bgi锄地中基本上没有明显作用如果非要带着锄地不建议切出来全程后台即可
- 冻结可以打断怪物行动,提高队伍生存能力,建议携带能够冻结怪物的角色,不建议携带会碎冰等破坏冻结状态的角色(尤其钟离)
- 综上,低配较为推荐芙宁娜、莱伊拉、万叶、芭芭拉,中配最推荐爱可菲、芙宁娜、万叶、茜特菈莉,部分角色可能可以身兼多职,请合理衡量他们担任不同位置的能力,并据此决定是否可以腾出空间携带其他角色
- 以下是一些反面例子:
- 四神队:没有奶,稳定性差,钟离柱子触发攀爬影响较大,雷神和草神占了两个格子但是作用很小,纯混子,各个位置之间没有联动
- 本体自带的‘群友分享’战斗策略,曾经在大世界探索和秘境中为大家提供了不少便利,如今只适合秘境使用,不适合锄地;特别是缺少召唤物输出、依赖 Q 启动的体系,更适合怀旧体验而非当前的锄地需求。
- 夜兰、克洛琳德等技能难以避免较大位移的角色,很可能在战斗中跑到奇怪的位置卡死
- 各种锄精英却有万叶不带万叶的不带万叶基本上捡不到狗粮每天亏6w狗粮
- **js内置校验用于在配队等存在问题时进行警告如果无视警告执意使用或勾选跳过校验阶段则任意问题均由用户配置导致**
### 五、**其他**
### 六、其他
- **想要测作者怎么办** 来q群1057307824测测莫酱有其他问题也行
- **茶包版小广告**茶包版bgi具有许多公版bgi没有的功能如火神赶路能相当程度提高锄地效率与稳定性想要测测茶包也可以加上面的群聊

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -1,4 +1,4 @@
//当前js版本2.0.3
//当前js版本2.1.1
//自定义配置变量预声明
let accountName;
@@ -59,6 +59,7 @@ let lastEatBuff = 0;
await loadConfig();
targetItems = await loadTargetItems();
localeWorks = await checkLocaleTimeSupport();
dispatcher.AddTrigger(new RealtimeTimer("AutoSkip"));
await loadBlacklist(true);
await rotateWarnIfAccountEmpty();
@@ -956,7 +957,7 @@ async function runPath(fullPath, map_name, pm, pe) {
keyPress("B");
await sleep(300);
let type = "食物"
await findAndClick([`assets/RecognitionObject/背包界面/${type}1.png`, `assets/RecognitionObject/背包界面/${type}2.png`]);
await findAndClick([`assets/背包界面/${type}1.png`, `assets/背包界面/${type}2.png`]);
await sleep(300);
// 2. 遍历数组,逐项执行
for (const item of res) {
@@ -1386,6 +1387,9 @@ async function dumper(pathFilePath, map_name) {
try {
let shouldPressKeys = false;
const currentPosition = await genshin.getPositionFromMap(map_name);
if (!currentPosition) {
continue;
}
for (let i = 0; i < fightPositions.length; i++) {
const fightPos = fightPositions[i];
@@ -1608,9 +1612,11 @@ async function processPathingsByGroup(pathings, accountName) {
try {
await genshin.returnMainUi();
const miniMapPosition = await genshin.getPositionFromMap(pathing.map_name);
// 更新坐标
lastX = miniMapPosition.X;
lastY = miniMapPosition.Y;
if (miniMapPosition) {
// 更新坐标
lastX = miniMapPosition.X;
lastY = miniMapPosition.Y;
}
} catch (error) {
log.error(`获取坐标时发生错误:${error.message}`);
}
@@ -1655,16 +1661,18 @@ async function processPathingsByGroup(pathings, accountName) {
try {
await genshin.returnMainUi();
const miniMapPosition = await genshin.getPositionFromMap(pathing.map_name);
const diffX = Math.abs(lastX - miniMapPosition.X);
const diffY = Math.abs(lastY - miniMapPosition.Y);
const endDiffX = Math.abs(fileEndX - miniMapPosition.X);
const endDiffY = Math.abs(fileEndY - miniMapPosition.Y);
if (miniMapPosition) {
const diffX = Math.abs(lastX - miniMapPosition.X);
const diffY = Math.abs(lastY - miniMapPosition.Y);
const endDiffX = Math.abs(fileEndX - miniMapPosition.X);
const endDiffY = Math.abs(fileEndY - miniMapPosition.Y);
lastX = miniMapPosition.X;
lastY = miniMapPosition.Y;
lastX = miniMapPosition.X;
lastY = miniMapPosition.Y;
if ((diffX + diffY) < 5 || (endDiffX + endDiffY) > 30) {
coordAbnormal = true;
if ((diffX + diffY) < 5 || (endDiffX + endDiffY) > 30) {
coordAbnormal = true;
}
}
} catch (error) {
log.error(`获取坐标时发生错误:${error.message}`);
@@ -1672,7 +1680,8 @@ async function processPathingsByGroup(pathings, accountName) {
}
await genshin.returnMainUi();
let mainUiRes = await isMainUI(2000);
if ((coordAbnormal && settings.enableCoordCheck) && !mainUiRes) {
let reconnectRes = await findAndClick(["assets/确认.png", "assets/重新连接服务器.png"], true, 300);
if ((coordAbnormal && settings.enableCoordCheck) || !mainUiRes || reconnectRes) {
log.error("路线未正常完成、坐标获取异常或不处于主界面,不记录运行数据");
notification.send(`路线${pathing.fileName}:路线未正常完成、坐标获取异常或不处于主界面,不记录运行数据`);
continue;

View File

@@ -1,7 +1,7 @@
{
"manifest_version": 1,
"name": "锄地一条龙",
"version": "2.1.0",
"version": "2.1.1",
"description": "一站式解决自动化锄地支持只拾取狗粮请仔细阅读README.md后使用",
"authors": [
{