From 809039b2af192613d92d8ee87034112bb9f774ef Mon Sep 17 00:00:00 2001 From: mno <718135749@qq.com> Date: Thu, 7 Aug 2025 13:21:18 +0800 Subject: [PATCH] =?UTF-8?q?js=EF=BC=9A=E9=94=84=E5=9C=B0=E4=B8=80=E6=9D=A1?= =?UTF-8?q?=E9=BE=991.3.5=E5=92=8C=E6=96=B0js"=E6=80=A7=E8=83=BD=E6=B5=8B?= =?UTF-8?q?=E8=AF=95"=20(#1497)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- repo/js/AutoHoeingOneDragon/README.md | 2 ++ repo/js/AutoHoeingOneDragon/main.js | 18 ++++++++++---- repo/js/AutoHoeingOneDragon/manifest.json | 2 +- repo/js/ComputerBlower/main.js | 29 +++++++++++++++++++++++ repo/js/ComputerBlower/manifest.json | 16 +++++++++++++ repo/js/ComputerBlower/readme.md | 2 ++ repo/js/ComputerBlower/settings.json | 19 +++++++++++++++ 7 files changed, 82 insertions(+), 6 deletions(-) create mode 100644 repo/js/ComputerBlower/main.js create mode 100644 repo/js/ComputerBlower/manifest.json create mode 100644 repo/js/ComputerBlower/readme.md create mode 100644 repo/js/ComputerBlower/settings.json diff --git a/repo/js/AutoHoeingOneDragon/README.md b/repo/js/AutoHoeingOneDragon/README.md index 926a6c46..df9d6c75 100644 --- a/repo/js/AutoHoeingOneDragon/README.md +++ b/repo/js/AutoHoeingOneDragon/README.md @@ -74,6 +74,8 @@ --- ### 更新日志 +### 1.3.5(2025.08.07) +1.使用dispose极大优化内存占用 ### 1.3.4(2025.08.07) 1.修复拾取失效 2.修复泥头车模式卡复活界面 diff --git a/repo/js/AutoHoeingOneDragon/main.js b/repo/js/AutoHoeingOneDragon/main.js index b6c0c47f..9b44c0bc 100644 --- a/repo/js/AutoHoeingOneDragon/main.js +++ b/repo/js/AutoHoeingOneDragon/main.js @@ -1,4 +1,4 @@ -//当前js版本 1.3.4 +//当前js版本 1.3.5 //拾取时上下滑动的时间 const timeMoveUp = 500; @@ -501,7 +501,9 @@ async function runPath(pathFilePath, map_name, whitelistKeywords, blacklistKeywo try { let template = file.ReadImageMatSync(imagePath); let recognitionObject = RecognitionObject.TemplateMatch(template, xMin, yMin, width, height); - let result = captureGameRegion().find(recognitionObject); + const gameRegion = captureGameRegion(); + let result = gameRegion.find(recognitionObject); + gameRegion.dispose(); if (result.isExist()) { return true; // 如果找到图标,返回 true } @@ -540,7 +542,9 @@ async function runPath(pathFilePath, map_name, whitelistKeywords, blacklistKeywo try { let template = file.ReadImageMatSync(imagePath); let recognitionObject = RecognitionObject.TemplateMatch(template, xMin, yMin, width, height); - let result = captureGameRegion().find(recognitionObject); + const gameRegion = captureGameRegion(); + let result = gameRegion.find(recognitionObject); + gameRegion.dispose(); if (result.isExist()) { return true; // 如果找到图标,返回 true } @@ -584,7 +588,7 @@ async function runPath(pathFilePath, map_name, whitelistKeywords, blacklistKeywo xRange.min, yRange.min, xRange.max - xRange.min, yRange.max - yRange.min )); - + ra.dispose(); // 遍历识别结果,检查是否找到目标文本 let results = []; for (let i = 0; i < resList.count; i++) { @@ -622,9 +626,13 @@ async function runPath(pathFilePath, map_name, whitelistKeywords, blacklistKeywo try { let template = file.ReadImageMatSync(imagePath); let recognitionObject = RecognitionObject.TemplateMatch(template, xMin, yMin, width, height); - let result = captureGameRegion().find(recognitionObject); + const gameRegion = captureGameRegion(); + let result = gameRegion.find(recognitionObject); + gameRegion.dispose(); if (result.isExist()) { return { success: true, x: result.x, y: result.y, width: result.width, height: result.height }; + } else { + } } catch (error) { log.error(`识别图像时发生异常: ${error.message}`); diff --git a/repo/js/AutoHoeingOneDragon/manifest.json b/repo/js/AutoHoeingOneDragon/manifest.json index 4bec1272..1f0b33ba 100644 --- a/repo/js/AutoHoeingOneDragon/manifest.json +++ b/repo/js/AutoHoeingOneDragon/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 1, "name": "锄地一条龙", - "version": "1.3.4", + "version": "1.3.5", "description": "一站式解决自动化锄地,支持只拾取狗粮,请仔细阅读README.md后使用", "authors": [ { diff --git a/repo/js/ComputerBlower/main.js b/repo/js/ComputerBlower/main.js new file mode 100644 index 00000000..35e28500 --- /dev/null +++ b/repo/js/ComputerBlower/main.js @@ -0,0 +1,29 @@ +// 主函数 +(async function () { + let startTime = Date.now(); + const interval = +settings.interval || 1000; + const timeout = +settings.timeout || 60; + let lastCheck = startTime; + let ocrcount = 0; + let loopCount = 0; + let logCount = 0; + //let store = []; + while (Date.now() - startTime < timeout * 1000) { + loopCount++; + try { + let GameRegion = captureGameRegion(); + // store[loopCount] = GameRegion; + if (settings.dispose) GameRegion.dispose(); + ocrcount++; + } catch (error) { + log.error(`运行时发生异常: ${error.message}`); + break; + } + if (Date.now() - lastCheck >= interval) { + logCount++; + lastCheck = Date.now(); + log.info(`在第${logCount}个${interval}毫秒内执行了${ocrcount}次截图`); + ocrcount = 0; + } + } +})(); diff --git a/repo/js/ComputerBlower/manifest.json b/repo/js/ComputerBlower/manifest.json new file mode 100644 index 00000000..a9939a6a --- /dev/null +++ b/repo/js/ComputerBlower/manifest.json @@ -0,0 +1,16 @@ +{ + "manifest_version": 1, + "name": "截图性能测试", + "version": "0.1", + "tags": [], + "bgi_version": "0.46.0", + "description": "测测你的", + "authors": [ + { + "name": "mno", + } + ], + "settings_ui": "settings.json", + "main": "main.js" + } + \ No newline at end of file diff --git a/repo/js/ComputerBlower/readme.md b/repo/js/ComputerBlower/readme.md new file mode 100644 index 00000000..e87fd70d --- /dev/null +++ b/repo/js/ComputerBlower/readme.md @@ -0,0 +1,2 @@ +运行后将会尝试满负荷循环截图,并在日志输出截图次数,可在自定义配置选择是否dispose + diff --git a/repo/js/ComputerBlower/settings.json b/repo/js/ComputerBlower/settings.json new file mode 100644 index 00000000..2c25f3ec --- /dev/null +++ b/repo/js/ComputerBlower/settings.json @@ -0,0 +1,19 @@ +[ + { + "name": "dispose", + "type": "checkbox", + "label": "是否dispose" + }, + { + "name": "timeout", + "type": "input-text", + "label": "运行时间(秒)", + "default": "60" + }, + { + "name": "interval", + "type": "input-text", + "label": "间隔多久输出一次(毫秒)", + "default": "1000" + } +] \ No newline at end of file