Files
mno fbf7fcd245 js:锄地一条龙1.4.0 (#1568)
* js:锄地一条龙1.4.0

### 1.4.0(2025.08.12)
1.增加拾取模式,模板匹配拾取并设为默认项,之前的拾取模式改名为ocr拾取

* js:性能测试

增加自定义配置选择测试项目和识图区域大小

* js:锄地一条龙

适当增加拾取后延时
2025-08-12 16:26:17 +08:00

80 lines
2.9 KiB
JavaScript

// 主函数
(async function () {
operationMode = settings.operationMode || "截图";
const xRange = parseInt(+settings.xRange || 1920, 10);
const yRange = parseInt(+settings.yRange || 1920, 10);
let startTime = Date.now();
const interval = +settings.interval || 1000;
const timeout = +settings.timeout || 60;
let lastCheck = startTime;
let ocrcount = 0;
let loopCount = 0;
const imagePath = "assets/流放.png";
let template = file.ReadImageMatSync(imagePath);
if (operationMode === "截图") {
while (Date.now() - startTime < timeout * 1000) {
try {
let GameRegion = captureGameRegion();
if (settings.dispose) GameRegion.dispose();
ocrcount++;
if (Date.now() - lastCheck >= interval) {
loopCount++;
await sleep(1);
lastCheck = Date.now();
log.info(`在第${loopCount}${interval}毫秒内执行了${ocrcount}次截图`);
ocrcount = 0;
}
} catch (error) {
log.error(`运行时发生异常: ${error.message}`);
break;
}
}
}
if (operationMode === "模板匹配") {
let GameRegion = captureGameRegion();
while (Date.now() - startTime < timeout * 1000) {
try {
let recognitionObject = RecognitionObject.TemplateMatch(template, 0, 0, xRange, yRange);
let result = GameRegion.find(recognitionObject);
ocrcount++;
if (Date.now() - lastCheck >= interval) {
loopCount++;
await sleep(1);
lastCheck = Date.now();
log.info(`在第${loopCount}${interval}毫秒内执行了${ocrcount}次模板匹配`);
ocrcount = 0;
}
} catch (error) {
log.error(`运行时发生异常: ${error.message}`);
break;
}
}
if (settings.dispose) GameRegion.dispose();
}
if (operationMode === "ocr") {
let GameRegion = captureGameRegion();
while (Date.now() - startTime < timeout * 1000) {
try {
let result = GameRegion.findMulti(RecognitionObject.ocr(
0, 0,
xRange, yRange
));
ocrcount++;
} catch (error) {
log.error(`运行时发生异常: ${error.message}`);
break;
}
if (Date.now() - lastCheck >= interval) {
loopCount++;
lastCheck = Date.now();
await sleep(1);
log.info(`在第${loopCount}${interval}毫秒内执行了${ocrcount}次OCR`);
ocrcount = 0;
}
}
if (settings.dispose) GameRegion.dispose();
}
})();