/** * 尝试领取地脉花奖励 * @returns {Promise} */ this.attemptReward = async function () { const MAX_RETRY = 5; // 超时处理 if (retryCount >= MAX_RETRY) { retryCount = 0; throw new Error("超过最大重试次数,领取奖励失败"); } log.info("开始领取地脉奖励"); keyPress("F"); await sleep(500); // 识别是否为地脉之花界面 let resList = captureGameRegion().findMulti(ocrRoThis); // 使用预定义的ocrRoThis对象 let isValid = false; let condensedResin = null; let originalResin = null; let isResinEmpty = false; let dobuleReward = false; if (resList && resList.count > 0) { // 分析识别到的文本 for (let i = 0; i < resList.count; i++) { let res = resList[i]; if (res.text.includes("使用浓缩树脂")) { isValid = true; condensedResin = res; } else if (res.text.includes("使用原粹树脂")) { isValid = true; originalResin = res; } else if (res.text.includes("补充原粹树脂")) { isValid = true; isResinEmpty = true; } else if (res.text.includes("产出")) { isValid = true; dobuleReward = true; } } // 处理不同的树脂情况 if (originalResin && dobuleReward == true) { log.info("选择使用原粹树脂,获得双倍产出"); click(Math.round(originalResin.x + originalResin.width / 2), Math.round(originalResin.y + originalResin.height / 2)); } else if (condensedResin) { log.info("选择使用浓缩树脂"); click(Math.round(condensedResin.x + condensedResin.width / 2), Math.round(condensedResin.y + condensedResin.height / 2)); } else if (originalResin) { log.info("选择使用原粹树脂"); click(Math.round(originalResin.x + originalResin.width / 2), Math.round(originalResin.y + originalResin.height / 2)); } else if (isResinEmpty) { log.error("识别到补充原粹树脂,看来树脂用完了呢"); keyPress("VK_ESCAPE"); throw new Error("树脂已用完"); } if (settings.friendshipTeam) { log.info("切换回战斗队伍"); await sleep(500); const switchSuccess = await switchTeam(settings.team); } } // 界面不正确,尝试重试 if (!isValid) { log.info("当前界面不是地脉之花界面,重试"); await genshin.returnMainUi(); await sleep(1000); retryCount++; await autoNavigateToReward(); await attemptReward(); } }