js:锄地一条龙 (#1737)

* js:锄地一条龙

### 1.5.0(2025.08.27)
1.加入配队检测,配队不合理时进行警告,但不影响正常进程
2.readme中加入锄地配队建议

* fix: 优化日志提示

---------

Co-authored-by: 秋云 <physligl@gmail.com>
This commit is contained in:
mno
2025-08-28 02:53:40 +08:00
committed by GitHub
parent bb83f1c173
commit ddc4e8339f
3 changed files with 97 additions and 5 deletions

View File

@@ -23,7 +23,7 @@
-**地图追踪行走选项** 中请关闭即不填写切换队伍该选项目前在配置组中只有一个js时不生效请在js自定义配置中填写配队
- 如有需要,按照对应的配队,配置对应的生存位和行走位
- 配置组中的 **不在某时执行** 目前无法打断js的运行请不要尝试通过配置该项来使本js在特定时间终止运行
-**战斗配置** 中请为你使用的队伍选择合适的战斗策略,战斗策略相关内容存在疑问请参考文档,配队思路请参考教程视频
-**战斗配置** 中请为你使用的队伍选择合适的战斗策略,战斗策略相关内容存在疑问请参考文档,配队思路请参考【第四部分】。
- 请打开 **自动检测战斗结束** ,按需配置相关选项,其中 **检查战斗结束的延时** 不推荐默认的1.5秒建议缩短至0.5秒以下
- 强烈建议关闭 **自动拾取掉落物** ,该选项开启后会显著提高运行用时和卡死风险
- 建议开启 **战斗结束后执行万叶长e**,可显著提高狗粮收益
@@ -76,8 +76,27 @@
- 如果需要增加其他的目标物品请打开assets/拾取名单.json在白名单中添加目标物品
- 清空白名单会拾取大部分物品除了名称包含黑名单的物品不建议这样使用有几率和npc交互等造成卡死
### 四、**锄地配队建议**
- bgi锄地没有那么智能暂时无法像手动一样灵活进行各种需要索敌的操作同时各种位移技能也很容易干扰锄地的正常运行因此建议的锄地配队组队思路如下
- 一个合理的bgi锄地配队至少应当包含抗打断、召唤物输出、奶妈精英怪的配队还应当带上万叶
- 抗打断位用于确保技能的正常释放通常为护盾角色只建议e启动角色如茜特菈莉、伊涅芙等四星角色莱伊拉也可用通常不建议使用钟离柱子对bgi运行影响较大。此外迪希雅的领域可以给予领域内角色抗打断和分摊伤害也可以作为抗打断位使用。如果你执意不携带任何抗打断位角色技能将很容易被怪物打断。
- 召唤物输出目前可靠的只有芙宁娜爱可菲可以在没有芙宁娜时作为下位替代两个角色都有时非常推荐同时携带。如果两者都不携带锄地的效率将会很低。非常不建议在没有任何形式的自动索敌的情况下使用bgi锄地。
- 奶妈非常建议携带可以较大提升bgi锄地的稳定性减少复活次数从而提高总体效率同时保持50%以上的血线将提高海鲜的伤害。总体来说e启动奶q启动奶白术、希格雯、爱可菲、芭芭拉、夏沃蕾都可以使用仅当你有满命芙宁娜或钟离时可以考虑不携带奶妈。**【金箔的回血是不够的!!!】**,不要认为带了金箔就不用带奶了,金箔只能作为补充手段。
- 其他补充伤害的角色,他们的作用是快速清理近处较多的怪物,有利于提高偏对单的海鲜和烹饪锅处理怪物的效率,只有在你队伍有空余位置时才建议携带(通常没位置),较推荐使用的角色有:玛薇卡、那维莱特、万叶(扩散清杂和聚怪)
- 剩余角色在bgi锄地中基本上没有明显作用如果非要带着锄地不建议切出来全程后台即可
- 冻结可以打断怪物行动,提高队伍生存能力,建议携带能够冻结怪物的角色,不建议携带会碎冰等破坏冻结状态的角色(尤其钟离)
- 综上,低配较为推荐芙宁娜、莱伊拉、万叶、芭芭拉,中配最推荐爱可菲、芙宁娜、万叶、茜特菈莉,部分角色可能可以身兼多职,请合理衡量他们担任不同位置的能力,并据此决定是否可以腾出空间携带其他角色
- 以下是一些反面例子:
- 四神队:没有奶,稳定性差,钟离柱子触发攀爬影响较大,雷神和草神占了两个格子但是作用很小,纯混子,各个位置之间没有联动
- 本体自带的‘群友分享’战斗策略,曾经在大世界探索和秘境中为大家提供了不少便利,如今只适合秘境使用,不适合锄地;特别是缺少召唤物输出、依赖 Q 启动的体系,更适合怀旧体验而非当前的锄地需求。
- 夜兰、克洛琳德等技能难以避免较大位移的角色,很可能在战斗中跑到奇怪的位置卡死
- 各种锄精英却有万叶不带万叶的不带万叶基本上捡不到狗粮每天亏6w狗粮
---
### 更新日志
### 1.5.02025.08.27
1.加入配队检测,配队不合理时进行警告,但不影响正常进程
2.readme中加入锄地配队建议
### 1.4.162025.08.27
1.修509
2.新增522

View File

@@ -1,4 +1,4 @@
//当前js版本 1.4.12
//当前js版本 1.5.0
//拾取时上下滑动的时间
let timeMoveUp;
@@ -12,11 +12,14 @@ if (settings.activeDumperMode) { //处理泥头车信息
let gameRegion;
let targetItemPath = "assets/targetItems";
let targetItems;
let isFourGod;
const rollingDelay = (+settings.rollingDelay || 25);
const pickupDelay = (+settings.pickupDelay || 100);
const timeMove = (+settings.timeMove || 1000);
let warnMessage = [];
(async function () {
//自定义配置处理
const operationMode = settings.operationMode || "运行锄地路线";
@@ -71,7 +74,8 @@ const timeMove = (+settings.timeMove || 1000);
timeMoveUp = Math.round(timeMove * 0.45);
timeMoveDown = Math.round(timeMove * 0.55);
if (!settings.accountName) {
for (let i = 0; i < 120; i++) {
warnMessage.push("请先阅读js文件夹中的【README.md】后使用");
for (let i = 0; i < 5; i++) {
// 原始文本
let originalMessage = " 请先阅读js文件夹中的【README.md】后使用";
// 计算轮替的偏移量,每次循环偏移一位
@@ -126,7 +130,52 @@ const timeMove = (+settings.timeMove || 1000);
await copyPathingsByGroup(pathings);
await updateRecords(pathings, accountName);
} else if (operationMode === "运行锄地路线") {
await switchPartyIfNeeded(partyName)
await switchPartyIfNeeded(partyName);
// 检测四神队伍并输出当前角色
const avatars = getAvatars() || [];
const need = ['钟离', '芙宁娜', '纳西妲', '雷电将军'];
let improperTeam = true;
for (let i = 0; i < need.length; i++) {
let found = false;
for (let j = 0; j < avatars.length; j++) {
if (avatars[j] === need[i]) {
found = true;
break;
}
}
if (!found) {
improperTeam = false;
break;
}
}
// 手动拼接角色名,避免 join 报错
let teamStr = '';
for (let k = 0; k < avatars.length; k++) {
teamStr += avatars[k];
if (k < avatars.length - 1) {
teamStr += '、';
}
}
log.info('当前队伍:' + teamStr);
if (improperTeam) {
warnMessage.push("配队不合理请阅读readme中的锄地配队建议");
warnMessage.push("如果已经阅读过,请忽略该警告");
//for (let i = 0; i < 5; i++) {
// 原始文本
let originalMessage = "\n\n配队不合理请阅读readme中的锄地配队建议\n\n如果已经阅读过请忽略该警告";
// 计算轮替的偏移量,每次循环偏移一位
//let offset = i % originalMessage.length; // 每次循环偏移一位
// 构造轮替后的文本
//let message = originalMessage.slice(-offset) + originalMessage.slice(0, -offset);
// 输出内容
// log.error(message);
log.warn(originalMessage);
await sleep(3000);
//}
}
log.info("开始运行锄地路线");
await updateRecords(pathings, accountName);
await processPathingsByGroup(pathings, whitelistKeywords, blacklistKeywords, accountName);
@@ -841,6 +890,29 @@ async function runPath(pathFilePath, map_name, whitelistKeywords, blacklistKeywo
}
}
// 新增warnTask 函数,与其他任务函数并列
async function warnLoop() {
while (!state.completed && !state.cancelRequested) {
if (Array.isArray(warnMessage) && warnMessage.length) {
for (let i = 0; i < warnMessage.length; i++) {
log.error(warnMessage[i]);
}
}
for (let j = 0; j < 30; j++) {
if (state.completed || state.cancelRequested) {
break;
}
await sleep(1000);
}
if (state.completed || state.cancelRequested) {
break;
}
}
}
// 启动任务,变量名仍叫 warnTask
// const warnTask = warnLoop();
// 启动路径文件执行任务
const pathTask = executePathFile(pathFilePath);
@@ -858,6 +930,7 @@ async function runPath(pathFilePath, map_name, whitelistKeywords, blacklistKeywo
// 等待所有任务完成
try {
// await Promise.allSettled([pathTask, ocrTask, dumperTask, warnTask]);
await Promise.allSettled([pathTask, ocrTask, dumperTask]);
} catch (error) {
console.error(`执行任务时发生错误:${error.message}`);

View File

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