From 33aa4ec170727c46a41d9d8bb7567c6b88dfa9cc Mon Sep 17 00:00:00 2001 From: segfault-bilibili Date: Thu, 1 Sep 2022 17:48:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E5=BC=80=E8=8D=92=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=9C=B0=E5=9B=BE=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- floatUI.js | 89 +++++++++++++++++++++++++++++++++++++- images/sectionOnMapJP.png | Bin 0 -> 17645 bytes images/shinnyNew.png | Bin 0 -> 22187 bytes 3 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 images/sectionOnMapJP.png create mode 100644 images/shinnyNew.png diff --git a/floatUI.js b/floatUI.js index 14a38dd7..dae43d9b 100644 --- a/floatUI.js +++ b/floatUI.js @@ -8325,6 +8325,8 @@ function algo_init() { "startBtn", "closeBtn", "sectionClearMagiaStone", + "sectionOnMapJP", + "shinnyNew", ]; var loadAllImages = syncer.syn(function () { @@ -10231,6 +10233,15 @@ function algo_init() { x: 1011, y: 599, pos: "center" } }, + sectionOnMapJP: { + //搜索右大半边地图 + topLeft: { + x: 600, y: 128, pos: "top" + }, + bottomRight: { + x: 1919, y: 1079, pos: "bottom" + } + }, }; function getButtonArea(type) { let knownArea = knownButtonCoords[type]; @@ -10250,6 +10261,20 @@ function algo_init() { log(type, point); return point; } + function findAllButtons(screenshot, type) { + let template = knownImgs[type]; + let img = getButtonImg(screenshot, type); + let matched = null; + try { + matched = images.matchTemplate(img, template, {threshold: 0.9, max: 64}); + } catch (e) { + matched = null; + } + if (matched != null && matched.first() != null) matched = matched.points; + else matched = null; + log(type, matched); + return matched; + } function isButtonPresent(screenshot, type) { return findButton(screenshot, type) ? true : false; } @@ -10268,6 +10293,59 @@ function algo_init() { function isSectionClear(screenshot) { return isButtonPresent(screenshot, "sectionClearMagiaStone"); } + function findNewSectionOnMap(screenshot) { + const imgName = "sectionOnMapJP"; + let points = findAllButtons(screenshot, imgName); + if (points == null) return null; + + const btnSize = getConvertedAreaNoCutout({ + topLeft: {x: 0, y: 0, pos: "top"}, + bottomRight: {x: 270, y: 210, pos: "top"} + }); + const btnOffset = getConvertedAreaNoCutout({ + topLeft: {x: 0, y: 0, pos: "top"}, + bottomRight: {x: 206, y: 22, pos: "top"} + }); + + let areas = []; + const searchedArea = getButtonArea(imgName); + points.forEach((point) => { + let area = {topLeft: {pos: "top"}, bottomRight: {pos: "top"}}; + for (let corner in btnSize) { + ["x", "y"].forEach((axis) => { + //计算出整个按钮所在区域 + area[corner][axis] = searchedArea.topLeft[axis] + + point[axis] + + btnSize[corner][axis] + - btnOffset.bottomRight[axis]; + //防止超出屏幕边界(否则后面截取部分图片时会崩溃) + if (area[corner][axis] > searchedArea.bottomRight[axis]) + area[corner][axis] = searchedArea.bottomRight[axis]; + }); + } + areas.push(area); + }); + log("areas", areas); + + let point = null; + const template = knownImgs["shinnyNew"]; + for (let deadlineTime = new Date().getTime() + 5000; new Date().getTime() <= deadlineTime; ) { + screenshot = compatCaptureScreen(); + areas.find((area) => { + let img = renewImage(images.clip(screenshot, area.topLeft.x, area.topLeft.y, getAreaWidth(area), getAreaHeight(area))); + point = images.findImage(img, template, {threshold: 0.85}); + if (point != null) { + ["x", "y"].forEach((axis) => point[axis] += area.topLeft[axis]); + point.x += parseInt(template.getWidth() / 2); + return true; + } + }); + } + + log("shinnyNew(click)", point); + + return point; + } //判断是否出现超时回镜层首页按钮 var knownBackToMirrorsTopButtonCoords = { @@ -11756,8 +11834,9 @@ function algo_init() { initOCR(); dialogs.alert("临时开荒辅助", - "临时开荒辅助脚本能够在一个章节(section)内自动选BATTLE进行周回,\n" - +"但不会嗑药,也不会处理掉线等情况。" + "临时开荒辅助脚本能够在一个章节(section)内自动选BATTLE进行周回;\n" + +"以及支持地图型周回,但在找不到没打过(new)的关卡时不会自动拖动地图;\n" + +"另外,不会嗑药,也不会处理掉线等情况。" ); log("缩放图片..."); @@ -11831,6 +11910,8 @@ function algo_init() { return found; } while (true) { + let newSectionOnMapPoint = null; + let screenshot = compatCaptureScreen(); if (isMarkedAsNewQuest(screenshot)) { click(convertCoords(getAreaCenter(knownNewQuestCoords))); @@ -11848,6 +11929,10 @@ function algo_init() { click(convertCoords(clickSets.closeFollowPrompt)); } else if (isSectionClear(screenshot)) { click(convertCoords(clickSets.screenCenter)); + } else if ((newSectionOnMapPoint = findNewSectionOnMap(screenshot))) { + click(newSectionOnMapPoint); + newSectionOnMapPoint = null; + sleep(3000); } sleep(1000); } diff --git a/images/sectionOnMapJP.png b/images/sectionOnMapJP.png new file mode 100644 index 0000000000000000000000000000000000000000..0fca7bf14d3e460e6668f730ca70fee27520a20b GIT binary patch literal 17645 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 literal 0 HcmV?d00001 diff --git a/images/shinnyNew.png b/images/shinnyNew.png new file mode 100644 index 0000000000000000000000000000000000000000..01169dd7f13e0f3bcfc997fb0aceb68aae3c059b GIT binary patch literal 22187 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 literal 0 HcmV?d00001