强制所有脚本进行dispose(如发生提前释放问题请自行修复) (#2292)

* 强制dispose

* 强制dispose(版本号更新)
This commit is contained in:
躁动的氨气
2025-11-02 13:27:59 +08:00
committed by GitHub
parent d89adc890e
commit 204825f37d
125 changed files with 996 additions and 532 deletions

View File

@@ -149,14 +149,20 @@ var CommissionBasic = {
// 检测完成状态
var completedResult = checkRegion.find(completedRo);
if (!completedResult.isEmpty()) {
captureRegion.dispose();
checkRegion.dispose();
return "completed";
}
// 检测未完成状态
var uncompletedResult = checkRegion.find(uncompletedRo);
if (!uncompletedResult.isEmpty()) {
captureRegion.dispose();
checkRegion.dispose();
return "uncompleted";
}
captureRegion.dispose();
checkRegion.dispose();
log.warn("委托{id}状态识别失败", button.id);
return "unknown";

View File

@@ -267,6 +267,8 @@ var Execute = {
var captureRegion = captureGameRegion();
var rewardTextArea = captureRegion.DeriveCrop(1210, 515, 200, 50);
var rewardResult = rewardTextArea.find(RecognitionObject.ocrThis);
captureRegion.dispose();
rewardTextArea.dispose();
log.debug("检测到文字: " + rewardResult.text);
// 检测到特点文字则结束!!!
if (rewardResult.text == textArray) {
@@ -282,6 +284,7 @@ var Execute = {
for (var i = 0; i < 100; i++) {
captureRegion = captureGameRegion();
var iconRes = captureRegion.Find(boxIconRo);
captureRegion.dispose();
log.info("检测到委托图标位置 ({x}, {y})", iconRes.x, iconRes.y);
if (iconRes.x >= 920 && iconRes.x <= 980 && iconRes.y <= 540) {
advanceNum++;

View File

@@ -30,11 +30,13 @@
// 查找模板
if (cap.find(teamRO)) {
log.info("识别到战斗结束");
cap.dispose();
// 取消 打开队伍
keyPress("l");
return true;
}
cap.dispose();
log.info("未识别到战斗结束");
await sleep(intervals);
}

View File

@@ -22,7 +22,9 @@ var executeAutoSkipLogic = async function (stepData, stepName) {
var recognizeImage = async function (recognitionObject) {
try {
// 尝试识别图像
var imageResult = captureGameRegion().find(recognitionObject);
let captureRegion = captureGameRegion();
var imageResult = captureRegion.find(recognitionObject);
captureRegion.dispose();
if (
imageResult &&
imageResult.x !== 0 &&
@@ -183,6 +185,8 @@ var executeAutoSkipLogic = async function (stepData, stepName) {
dialogArea.height
);
var ocrResults = dialogArea.FindMulti(ocrRo);
captureRegion.dispose();
dialogArea.dispose();
if (ocrResults && ocrResults.count > 0) {
var foundValidOption = false;

View File

@@ -64,7 +64,9 @@
while (openPairingTries < 3) {
keyPress("l");
await sleep(3500);
var teamConfigResult = captureGameRegion().find(roTeamConfig);
const ro1 = captureGameRegion();
var teamConfigResult = ro1.find(roTeamConfig);
ro1.dispose();
if (teamConfigResult.isExist()) {
openPairingTries = 0;
return true;
@@ -106,7 +108,9 @@
file.ReadImageMatSync("Data/characterimage/" + characterFileName + ".png"),
0, 0, 1920, 1080
);
var characterResult = captureGameRegion().find(characterRo);
const ro2 = captureGameRegion();
var characterResult = ro2.find(characterRo);
ro2.dispose();
if (characterResult.isExist()) {
log.info("已找到角色{character}", actualName);
// 计算向右偏移35像素、向下偏移35像素的位置
@@ -146,8 +150,10 @@
}
// 识别"更换"或"加入"按钮
var replaceResult = captureGameRegion().find(roReplace);
var joinResult = captureGameRegion().find(roJoin);
const ro3 = captureGameRegion();
var replaceResult = ro3.find(roReplace);
var joinResult = ro3.find(roJoin);
ro3.dispose();
if (replaceResult.isExist() || joinResult.isExist()) {
await sleep(300);

View File

@@ -103,6 +103,7 @@ var UI = {
var captureRegion = captureGameRegion();
var res = captureRegion.Find(paimonMenuRo);
captureRegion.dispose();
return !res.isEmpty();
},
@@ -117,6 +118,7 @@ var UI = {
var captureRegion = captureGameRegion();
var res = captureRegion.Find(paimonMenuRo);
captureRegion.dispose();
return !res.isEmpty();
},

View File

@@ -44,6 +44,7 @@ var Utils = {
// 捕获并识别
var region = captureGameRegion();
region.Find(ro);
region.dispose();
// 2000毫秒后移除绘制的边框
setTimeout(function () {
@@ -122,6 +123,7 @@ var Utils = {
// 截图识别
var captureRegion = captureGameRegion();
var results = await captureRegion.findMulti(TemplateMatchRo);
captureRegion.dispose();
return results;
} catch (error) {
@@ -185,6 +187,7 @@ var Utils = {
// 截图识别
var captureRegion = captureGameRegion();
var OCRresults = await captureRegion.findMulti(locationOcrRo);
captureRegion.dispose();
return OCRresults;
} catch (error) {

View File

@@ -1,7 +1,7 @@
{
"manifest_version": 1,
"name": "(对话+成就)全自动蒙德地区每日委托",
"version": "0.98.10",
"version": "0.98.11",
"tags": ["委托","对话","战斗","成就","历练点"],
"description": "自动完成每日委托、自动识别委托内容、自动追踪战斗委托、自动完成对话委托、自动获得到隐藏成就。使用前请阅读README.md获取详细说明和常见问题解答。目前项目急需人手,有意者可加群。感谢云闲vsv & 换苏伟u & 小鹰划船不用桨 & 塔台 & 未知_ 的共同开发",
"authors": [