removed: invalid folder
This commit is contained in:
@@ -1,101 +0,0 @@
|
|||||||
// 检查 F 图标和右边水平对齐的文字
|
|
||||||
async function checkNpcAndFAlignment(npcName, fDialogueRo) {
|
|
||||||
try {
|
|
||||||
let ra = captureGameRegion();
|
|
||||||
let fRes = ra.find(fDialogueRo);
|
|
||||||
if (!fRes.isExist()) {
|
|
||||||
let f_attempts = 0; // 初始化为0而不是null
|
|
||||||
while (f_attempts < 5) {
|
|
||||||
f_attempts++;
|
|
||||||
log.info(`当前尝试次数:${f_attempts}`);
|
|
||||||
|
|
||||||
if (f_attempts <= 3) {
|
|
||||||
await keyMouseScript.runFile(`assets/滚轮下翻.json`);
|
|
||||||
await sleep(1000);
|
|
||||||
} else if (f_attempts === 4) {
|
|
||||||
log.warn("尝试调整游戏时间");
|
|
||||||
// 先调整到8点
|
|
||||||
await setGameTime(8);
|
|
||||||
await sleep(2000);
|
|
||||||
|
|
||||||
// 8点时进行3次滚轮下滑和NPC检测
|
|
||||||
log.info("8点时执行滚轮下滑和NPC检测循环");
|
|
||||||
for (let i = 0; i < 3; i++) {
|
|
||||||
await keyMouseScript.runFile(`assets/滚轮下翻.json`);
|
|
||||||
await sleep(1000);
|
|
||||||
// 检查F图标和NPC是否对齐
|
|
||||||
if (await checkAlignment()) {
|
|
||||||
log.info(`在8点第${i + 1}次滚动后找到对齐的NPC: ${npcName}`);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 如果8点没找到,调整到18点
|
|
||||||
await setGameTime(18);
|
|
||||||
await sleep(2000);
|
|
||||||
|
|
||||||
// 18点时进行3次滚轮下滑和NPC检测
|
|
||||||
log.info("18点时执行滚轮下滑和NPC检测循环");
|
|
||||||
for (let i = 0; i < 3; i++) {
|
|
||||||
await keyMouseScript.runFile(`assets/滚轮下翻.json`);
|
|
||||||
await sleep(1000);
|
|
||||||
// 检查F图标和NPC是否对齐
|
|
||||||
if (await checkAlignment()) {
|
|
||||||
log.info(`在18点第${i + 1}次滚动后找到对齐的NPC: ${npcName}`);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 如果都没找到,重新加载路径文件
|
|
||||||
log.info("重新加载路径文件");
|
|
||||||
await pathingScript.runFile(filePath);
|
|
||||||
await sleep(500);
|
|
||||||
} else {
|
|
||||||
log.warn("尝试次数已达上限");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
fRes = ra.find(fDialogueRo);
|
|
||||||
if (fRes.isExist()) {
|
|
||||||
log.info("找到 F 图标");
|
|
||||||
// 找到F图标后,立即检查对齐情况
|
|
||||||
if (await checkAlignment()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
log.warn(`尝试 ${f_attempts}:寻找 F 图标`);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!fRes.isExist()) {
|
|
||||||
log.warn("经过多次尝试后仍未找到 F 图标");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 如果已经找到F图标,检查对齐情况
|
|
||||||
return await checkAlignment();
|
|
||||||
} catch (err) {
|
|
||||||
log.warn(`检查NPC和F对齐失败: ${err}`);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 内部函数:检查F图标和NPC是否对齐
|
|
||||||
async function checkAlignment() {
|
|
||||||
let ra = captureGameRegion();
|
|
||||||
let fRes = ra.find(fDialogueRo);
|
|
||||||
if (!fRes.isExist()) return false;
|
|
||||||
|
|
||||||
let centerYF = fRes.y + fRes.height / 2;
|
|
||||||
let ocrResult = await performOcr(npcName, npcxRange, { min: fRes.y, max: fRes.y + fRes.height }, tolerance);
|
|
||||||
if (!ocrResult.success) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
let centerYnpcName = ocrResult.y + ocrResult.height / 2;
|
|
||||||
let isAligned = Math.abs(centerYnpcName - centerYF) <= npctolerance;
|
|
||||||
if (isAligned) {
|
|
||||||
log.info(`NPC '${npcName}' 和 F 图标水平对齐,NPC: ${centerYnpcName}, F 图标: ${centerYF}`);
|
|
||||||
}
|
|
||||||
return isAligned;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user