js:联机狗粮&锄地一条龙 (#2272)

* js:联机狗粮&锄地一条龙

1.联机狗粮识别队伍编号增加输出
2.联机狗粮移除分解狗粮过程中找不到对应按钮的输出
3.锄地一条龙增加对12小时制的处理

* Update main.js
This commit is contained in:
mno
2025-10-29 21:01:39 +08:00
committed by GitHub
parent f894aa3d1a
commit c771051638
5 changed files with 30 additions and 10 deletions

View File

@@ -877,7 +877,7 @@ async function isMainUI() {
async function getPlayerSign() {
let attempts = 0;
let result = 0;
while (attempts < 5) {
while (attempts < 10) {
attempts++;
const picDic = {
"0P": "assets/RecognitionObject/0P.png",
@@ -912,12 +912,13 @@ async function getPlayerSign() {
let p3 = gameRegion.Find(p3Ro);
let p4 = gameRegion.Find(p4Ro);
gameRegion.dispose();
if (p0.isExist()) { result = 0; break; }
if (p1.isExist()) { result = 1; break; }
if (p2.isExist()) { result = 2; break; }
if (p3.isExist()) { result = 3; break; }
if (p4.isExist()) { result = 4; break; }
if (p0.isExist()) { result = 0; log.info("识别结果为0P"); break; }
if (p1.isExist()) { result = 1; log.info("识别结果为0P"); break; }
if (p2.isExist()) { result = 2; log.info("识别结果为0P"); break; }
if (p3.isExist()) { result = 3; log.info("识别结果为0P"); break; }
if (p4.isExist()) { result = 4; log.info("识别结果为0P"); break; }
}
log.warn("超时仍未识别到队伍编号");
return result;
}
@@ -1481,7 +1482,6 @@ async function processArtifacts() {
result.click();
return true; // 成功立刻返回
}
log.warn(`识别失败,第 ${attempts + 1} 次重试`);
} catch (err) {
} finally {
gameRegion.dispose();

View File

@@ -1,7 +1,7 @@
{
"manifest_version": 1,
"name": "AAA狗粮联机团购",
"version": "1.5.12",
"version": "1.5.13",
"tags": [
"狗粮"
],

View File

@@ -64,6 +64,7 @@
- **排除关键词:** 含有关键词的路线会被排除,例如填写纳塔来排除所有纳塔路线,同样使用中文逗号分隔
4. **只建议在原神中设置1080p60帧使用其他分辨率或帧率出现任何问题都是正常现象**
5. **不建议使用12小时制时间虽然也能跑**
### 二、**锄地收益**
- 击杀精英怪和小怪通常会掉落对应的材料和一定量摩拉,同时为队伍中角色提供经验,精英怪还会概率掉落三四星的战狂、教官、流放者圣遗物

View File

@@ -26,12 +26,19 @@ let blacklistSet = new Set();
let state;
const accountName = settings.accountName || "默认账户";
let pathings;
let localeWorks;
(async function () {
targetItems = await loadTargetItems();
//自定义配置处理
const operationMode = settings.operationMode || "运行锄地路线";
localeWorks = !isNaN(Date.parse(new Date().toLocaleString()));
if (!localeWorks) {
log.warn('[WARN] 当前设备 toLocaleString 无法被 Date 解析');
log.warn('[WARN] 建议不要使用12小时时间制');
await sleep(5000);
}
let k = settings.efficiencyIndex;
// 空字符串、null、undefined 或非数字 → 0.5
if (k === '' || k == null || Number.isNaN(Number(k))) {
@@ -147,6 +154,10 @@ let pathings;
}
log.info('当前队伍:' + teamStr);
if (improperTeam) {
log.warn("当前队伍不适合锄地建议重新阅读readme相关部分");
await sleep(5000);
}
log.info("开始运行锄地路线");
await updateRecords(pathings, accountName);
@@ -1335,6 +1346,7 @@ async function processPathingsByGroup(pathings, accountName) {
// 更新路径的 cdTime
pathing.cdTime = nextEightClock.toLocaleString();
if (!localeWorks) pathing.cdTime = nextEightClock.toISOString();
remainingEstimatedTime -= pathing.t;
const actualUsedTime = (new Date() - groupStartTime) / 1000;
@@ -1369,6 +1381,9 @@ async function initializeCdTime(pathings, accountName) {
? new Date(entry.cdTime).toLocaleString()
: new Date(0).toLocaleString();
if (!localeWorks) pathing.cdTime = entry
? new Date(entry.cdTime).toISOString()
: new Date(0).toISOString();
// 确保当前 records 是数组
const current = Array.isArray(pathing.records) ? pathing.records : new Array(7).fill(-1);
@@ -1388,6 +1403,10 @@ async function initializeCdTime(pathings, accountName) {
pathing.cdTime = new Date(0).toLocaleString();
pathing.records = new Array(7).fill(-1);
});
if (!localeWorks) pathings.forEach(pathing => {
pathing.cdTime = new Date(0).toISOString();
pathing.records = new Array(7).fill(-1);
});
}
}

View File

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