Files
bettergi-scripts-list/repo/js/AutoInstructorLock/main.js

111 lines
4.3 KiB
JavaScript

// 主逻辑
(async function () {
let scrollTimes = (+settings.scrollTimes) || 0;
let scrollLoops = (+settings.scrollLoops) || 37;
//先回到主界面
await genshin.returnMainUi();
keyPress("B");
//切换到圣遗物界面
await ClickPNG("Artifacts");
//点击关闭“按时间排序”
await ClickPNG("sequence", 2);
//点击筛选
await ClickPNG("filter");
//重置条件
await ClickPNG("reset");
//筛选套装
await ClickPNG("filterSet");
await sleep(200);
moveMouseTo(400, 750);
//开始寻找教官
let attempts = 0;
while (attempts < 100) {
attempts++;
if (await ClickPNG("instructor", 1)) {
//找到教官,终止循环
break;
}
//没找到教官,尝试向下翻页
await keyMouseScript.runFile(`assets/滚轮下翻.json`);
}
if (attempts >= 100) {
log.warn("未找到教官");
} else {
log.info("成功找到教官");
//确认筛选
await ClickPNG("confirmFilter");
//筛选未满级
await ClickPNG("notFullLevel");
//筛选未锁定
await ClickPNG("notLocked");
//确认
await ClickPNG("confirm");
//开始锁定四星教官
for (let n = 1; n <= scrollTimes + 1; n++) {
if (n != 1) {
//当不是第一次循环时,进行翻页
await sleep(200);
log.info("执行翻页");
moveMouseTo(960, 540);
for (let k = 1; k <= scrollLoops; k++) {
await keyMouseScript.runFile(`assets/滚轮下翻.json`);
}
}
for (let j = 1; j <= 4; j++) {
let dobreak = false;
for (let i = 1; i <= 8; i++) {
const fourStarRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync(`assets/RecognitionObject/fourStar.png`), 120 + 145 * (i - 1), 200 + (j - 1) * 176, 150, 180);
if (await findAndClick(fourStarRo)) {
//成功找到并点击四星教官,根据自定义配置决定是否锁定
let dolock = true;
await sleep(50);
if (settings.chargeOnly) {
let hasCharge1 = await ClickPNG("chargeE1", 1);
let hasCharge2 = await ClickPNG("chargeE2", 1);
if (!hasCharge1 && !hasCharge2) {
log.info("不含充能词条,不锁定");
dolock = false;
}
}
if (settings.thressStartONly) {
const threeStartRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync(`assets/RecognitionObject/threeStart.png`), 1330, 590, 70, 35);
let threeStart = await findAndClick(threeStartRo, 1);
if (!threeStart) {
log.info("不是初始三,不锁定");
dolock = false;
}
}
if (dolock) {
log.info("满足锁定条件,点击锁定");
await ClickPNG("lock", 5);
}
} else {
//已经没有四星教官,终止
dobreak = true;
break;
}
}
if (dobreak) {
break;
}
}
}
}
})();
async function ClickPNG(png, maxAttempts = 20) {
const pngRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync(`assets/RecognitionObject/${png}.png`));
return await findAndClick(pngRo, maxAttempts);
}
async function findAndClick(target, maxAttempts = 20) {
for (let i = 0; i < maxAttempts; i++) {
const rg = captureGameRegion();
try {
const res = rg.find(target);
if (res.isExist()) { await sleep(50); res.click(); await sleep(50); return true; }
} finally { rg.dispose(); }
if (i < maxAttempts - 1) await sleep(50);
}
return false;
}