diff --git a/repo/js/AutoLeyLineOutcrop/utils/calCountByResin.js b/repo/js/AutoLeyLineOutcrop/utils/calCountByResin.js index e67a397d4..33d2a2d96 100644 --- a/repo/js/AutoLeyLineOutcrop/utils/calCountByResin.js +++ b/repo/js/AutoLeyLineOutcrop/utils/calCountByResin.js @@ -205,16 +205,18 @@ async function recognizeNumberByOCR(ocrRegion, pattern) { * 统计原粹树脂数量 * @returns {number} 原粹树脂数量 */ -async function countOriginalResin(tryOriginalMode,opToMainUi) { +async function countOriginalResin(tryOriginalMode,opToMainUi,openMap) { if (tryOriginalMode) { log.info("尝试使用原始模式"); return await countOriginalResinBackup() } else { - let ocrPhysical = await physical.ocrPhysical(opToMainUi); + log.info('尝试使用优化模式'); + let ocrPhysical = await physical.ocrPhysical(opToMainUi,openMap); await sleep(600) if (ocrPhysical && ocrPhysical.ok) { return ocrPhysical.remainder; } else { + log.error(`ocrPhysical error`); throw new Error("ocrPhysical error"); } } @@ -457,43 +459,47 @@ this.countAllResin = async function () { setGameMetrics(1920, 1080, 1); log.info("开始统计树脂数量"); - // 返回主界面 - let toMainUi=true - // await genshin.returnMainUi(); - // await sleep(CONFIG.UI_DELAY); - - let tryPass = true; - try { - resinCounts.original = await countOriginalResin(false,toMainUi); - } catch (e) { - tryPass = false - } + await genshin.returnMainUi(); await sleep(CONFIG.UI_DELAY); // 打开地图界面统计原粹/浓缩树脂 await openMap(); await sleep(CONFIG.UI_DELAY); + let tryPass = true; + try { + log.info("[开始]统计补充树脂界面中的树脂"); + resinCounts.original = await countOriginalResin(false,false); + moveMouseTo(CONFIG.COORDINATES.AVOID_SELECTION.x, CONFIG.COORDINATES.AVOID_SELECTION.y) + await sleep(500); + resinCounts.transient = await countTransientResin(); + resinCounts.fragile = await countFragileResin(); + log.info("[完成]统计补充树脂界面中的树脂"); + // 点击避免选中效果影响统计 + click(CONFIG.COORDINATES.AVOID_SELECTION.x, CONFIG.COORDINATES.AVOID_SELECTION.y); + } catch (e) { + tryPass = false + } + await sleep(CONFIG.UI_DELAY); log.info("开始统计地图界面中的树脂"); - if (!tryPass){ // 如果第一次尝试失败,则切换到蒙德 await switchtoCountrySelection(CONFIG.COORDINATES.MONDSTADT.x, CONFIG.COORDINATES.MONDSTADT.y) resinCounts.original = await countOriginalResin(!tryPass); } resinCounts.condensed = await countCondensedResin(); + if (!tryPass) { + // 打开补充树脂界面统计须臾/脆弱树脂 + await openReplenishResinUi(); + await sleep(CONFIG.UI_DELAY); - // 打开补充树脂界面统计须臾/脆弱树脂 - await openReplenishResinUi(); - await sleep(CONFIG.UI_DELAY); - - // 点击避免选中效果影响统计 - click(CONFIG.COORDINATES.AVOID_SELECTION.x, CONFIG.COORDINATES.AVOID_SELECTION.y); - await sleep(500); - - log.info("开始统计补充树脂界面中的树脂"); - resinCounts.transient = await countTransientResin(); - resinCounts.fragile = await countFragileResin(); + // 点击避免选中效果影响统计 + click(CONFIG.COORDINATES.AVOID_SELECTION.x, CONFIG.COORDINATES.AVOID_SELECTION.y); + await sleep(500); + log.info("开始统计补充树脂界面中的树脂"); + resinCounts.transient = await countTransientResin(); + resinCounts.fragile = await countFragileResin(); + } // 显示结果 displayResults(resinCounts); diff --git a/repo/js/AutoLeyLineOutcrop/utils/physical.js b/repo/js/AutoLeyLineOutcrop/utils/physical.js index c59db88f6..45abf8ffd 100644 --- a/repo/js/AutoLeyLineOutcrop/utils/physical.js +++ b/repo/js/AutoLeyLineOutcrop/utils/physical.js @@ -62,7 +62,7 @@ async function saveOnlyNumber(str) { * - min {number}: 最小可执行体力值 * - remainder {number}: 当前剩余体力值 */ -async function ocrPhysical(opToMainUi = false) { +async function ocrPhysical(opToMainUi = false,openMap=false) { // 检查是否启用体力识别功能,如果未启用则直接返回默认结果 if (!settings.isResinExhaustionMode) { log.info(`===未启用===`) @@ -79,8 +79,10 @@ async function ocrPhysical(opToMainUi = false) { } //设置最小可执行体力值 let minPhysical = MinPhysical - //打开地图界面 - await keyPress('M') + if (openMap){ + //打开地图界面 + await keyPress('M') + } await sleep(ms) log.debug(`===[点击+]===`) //点击+ 按钮 x=1264,y=39,width=18,height=19 @@ -95,7 +97,7 @@ async function ocrPhysical(opToMainUi = false) { let templateMatchAddButtonRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync(`${add_objJson.path}`), add_objJson.x, add_objJson.y, add_objJson.width, add_objJson.height); let regionA = captureGameRegion() // let buttonA = captureGameRegion().find(templateMatchAddButtonRo); - let buttonA = region.find(templateMatchAddButtonRo); + let buttonA = regionA.find(templateMatchAddButtonRo); regionA.Dispose() await sleep(ms) @@ -178,7 +180,7 @@ async function ocrPhysical(opToMainUi = false) { let execute = (remainder - minPhysical) >= 0 log.info(`最小可执行原粹树脂:{min},原粹树脂:{key}`, minPhysical, remainder,) - await keyPress('VK_ESCAPE') + // await keyPress('VK_ESCAPE') return { ok: execute, min: minPhysical, @@ -187,6 +189,7 @@ async function ocrPhysical(opToMainUi = false) { } catch (e) { throwError(`识别失败,err:${e.message}`) } finally { + //返回地图操作 if (opToMainUi) { await toMainUi(); // 切换到主界面 }