From 1d037b8bb220338cc4c4c7e9633b3330131fd21d Mon Sep 17 00:00:00 2001 From: Traveler07 <88669636+Traveler07@users.noreply.github.com> Date: Fri, 10 Oct 2025 18:31:05 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=8F=90=E4=BE=9BOCR=E6=94=AF?= =?UTF-8?q?=E6=8C=81=20(#2113)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- repo/js/AutoPermission/main.js | 95 +++++++++++++++++++++------- repo/js/AutoPermission/manifest.json | 2 +- repo/js/AutoPermission/settings.json | 16 ++++- 3 files changed, 88 insertions(+), 25 deletions(-) diff --git a/repo/js/AutoPermission/main.js b/repo/js/AutoPermission/main.js index 75b106542..6d07c9d01 100644 --- a/repo/js/AutoPermission/main.js +++ b/repo/js/AutoPermission/main.js @@ -1,29 +1,78 @@ (async function () { - log.info("请确保执行脚本前能够通过ESC回到主界面"); await genshin.returnMainUi(); - keyPress("VK_F2") - await sleep(1000); - click(330,1010) //点击世界权限 - await sleep(1000); let domainName = settings.domainName; + let operationDelay = settings.operationDelay?settings.operationDelay:1000; + if(domainName===undefined){ + domainName="不允许加入" + } + setGameMetrics(1920, 1080, 1.5) + keyPress("VK_F2") + await sleep(operationDelay); + + if(settings.workMode==="基于固定位置"){ + click(330, 1010) //点击世界权限 + await sleep(operationDelay); switch (domainName) { - case "直接加入": - click(330, 910); - log.info("权限设置为【直接加入】"); - break; - case "不允许加入": - click(330, 850); // 不允许 - log.info("权限设置为【不允许加入】"); - break; - case "确认后可加入": - click(330, 960); // 确认后 - log.info("权限设置为【确认后可加入】"); - break; - default: - click(330, 850); // 不允许 - log.info("锁门"); - break; + case "直接加入": + click(330, 910); + log.info("权限设置为【直接加入】"); + break; + case "不允许加入": + click(330, 850); // 不允许 + log.info("权限设置为【不允许加入】"); + break; + case "确认后可加入": + click(330, 960); // 确认后 + log.info("权限设置为【确认后可加入】"); + break; + default: + click(330, 850); // 不允许 + log.info("锁门"); + break; } - await genshin.returnMainUi(); // 结束后回到主界面 -})(); + } + else{ + let tag = 0; + for (let i = 0; i < 5 && tag === 0; i++) { + let OCRcaptureRegion = captureGameRegion(); + + let resList = OCRcaptureRegion.findMulti(RecognitionObject.ocrThis); + + for (let i = 0; i < resList.count; i++) { + let res = resList[i]; + if (res.text.includes("世界权限")) { + res.click(); + tag = 1; + break; + } + } + } + if (tag === 0) { + log.error("未找到【世界权限】按钮,结束执行"); + return; + } + tag = 0; + for (let i = 0; i < 5 && tag === 0; i++) { + OCRcaptureRegion = captureGameRegion(); + + resList = OCRcaptureRegion.findMulti(RecognitionObject.ocrThis); + + for (let i = 0; i < resList.count; i++) { + let res = resList[i]; + if (res.text.includes(domainName)) { + res.click(); + tag = 1; + break; + } + } + } + if (tag === 0) { + log.error("找到【世界权限】按钮,但权限设置失败,结束执行"); + return; + } + } + keyPress("VK_ESCAPE"); + log.info("权限设置为【" + domainName + "】"); + +})(); \ No newline at end of file diff --git a/repo/js/AutoPermission/manifest.json b/repo/js/AutoPermission/manifest.json index 851723823..a0422b838 100644 --- a/repo/js/AutoPermission/manifest.json +++ b/repo/js/AutoPermission/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 1, "name": "自动设置权限", - "version": "1.1", + "version": "2.0", "description": "设置进入世界的权限,默认锁门", "authors": [ { diff --git a/repo/js/AutoPermission/settings.json b/repo/js/AutoPermission/settings.json index 2f0317519..40d8cbadc 100644 --- a/repo/js/AutoPermission/settings.json +++ b/repo/js/AutoPermission/settings.json @@ -1,12 +1,26 @@ [ + { + "name": "workMode", + "type": "select", + "label": "工作模式(默认OCR)", + "options": [ + "基于OCR", + "基于固定位置" + ] + }, { "name": "domainName", "type": "select", - "label": "设置权限", + "label": "设置权限(默认不允许加入)", "options": [ "直接加入", "确认后可加入", "不允许加入" ] + }, + { + "name": "operationDelay", + "type": "input-text", + "label": "操作延迟(填入数字,单位毫秒,默认1000)\n无报错但未生效时可尝试提高操作延迟" } ] \ No newline at end of file