@@ -71,7 +71,7 @@
|
||||
var Rewards = settings.Rewards ? settings.Rewards : false; // ture 领取冒险点奖励,false 不领取冒险点奖励
|
||||
var Fligtin = false; //领取冒险点奖励标志。
|
||||
var FINDagin = 0; //地脉花寻找标志。lv.1.2新增,用于判断是否找线路余下地脉花。
|
||||
var tolerance = 25;
|
||||
var tolerance = 30;
|
||||
var position ={};
|
||||
var Lastexecution = false;//线路执行标志,用于判断上一线路是否执行。
|
||||
var Fightquick = settings.Fightquick ? settings.Fightquick : false;
|
||||
@@ -81,6 +81,18 @@
|
||||
const ocrRegion1 = { x: 800, y: 200, width: 300, height: 100 }; // 中心区域
|
||||
const ocrRo1 = RecognitionObject.ocr(ocrRegion1.x, ocrRegion1.y, ocrRegion1.width, ocrRegion1.height);
|
||||
|
||||
|
||||
filePath = ""
|
||||
// 读取原始次数配置
|
||||
var rawTimes = settings.times*2 ? settings.times : "12";
|
||||
var color = settings.color ? settings.color : 1;
|
||||
var BIAOZZ = "assets/model/BIAOZ.bmp"
|
||||
|
||||
if (color == 2){ var DIMAIHUA = "assets/model/DIMAIHUA-huank.bmp";}
|
||||
else if (color == 1){var DIMAIHUA = "assets/model/DIMAIHUA-lank.bmp";}
|
||||
else{var DIMAIHUA = "assets/model/DIMAIHUA-lank.bmp";}
|
||||
|
||||
|
||||
log.debug(`DEBUG:${SHUV}.${color}.${rawTimes}`);//调试LOG
|
||||
if (Rewards){log.warn("结束后领励练点和提交每日!");if(settings.nh === undefined || settings.nh === "") {log.warn("好感队未配置,领奖励时不切换队伍")}}
|
||||
if (settings.nh === undefined || settings.nh === "") { log.warn("好感队禁用!");haoganq=0}else{var haogandui = settings.nh;haoganq=1;if(settings.n === undefined ) {throw new Error("好感队已经设置,请填战斗队伍!")}}
|
||||
@@ -89,16 +101,9 @@
|
||||
if (color == 1) {log.warn("地脉类型 :'蓝色-经验书花!'");}else{log.warn("地脉类型 :'黄色-摩拉花!'")}
|
||||
let nowuidString = settings.nowuid ? settings.nowuid : "";
|
||||
|
||||
filePath = ""
|
||||
// 读取原始次数配置
|
||||
var rawTimes = settings.times*2 ? settings.times : "12";
|
||||
var color = settings.color ? settings.color : 1;
|
||||
var BIAOZZ = "assets/model/BIAOZ.bmp"
|
||||
|
||||
|
||||
|
||||
if (color == 2){var DIMAIHUA = "assets/model/DIMAIHUA-huank.bmp";}
|
||||
else if (color == 1){var DIMAIHUA = "assets/model/DIMAIHUA-lank.bmp";}
|
||||
else{var DIMAIHUA = "assets/model/DIMAIHUA-lank.bmp";}
|
||||
|
||||
|
||||
|
||||
@@ -228,14 +233,14 @@
|
||||
{ line: 2, flower: 3, x: 1117, y: 801 },
|
||||
{ line: 2, flower: 4, x: 1082, y: 896 },
|
||||
{ line: 2, flower: 5, x: 1013, y: 883 },
|
||||
// 线路3
|
||||
// 线路3√
|
||||
{ line: 3, flower: 1, x: 1216, y: 661 },
|
||||
{ line: 3, flower: 2, x: 1239, y: 685 },
|
||||
{ line: 3, flower: 3, x: 1282, y: 642 },
|
||||
{ line: 3, flower: 4, x: 1335, y: 639 },
|
||||
// 线路4
|
||||
{ line: 4, flower: 1, x: 983, y: 672 },
|
||||
{ line: 4, flower: 2, x: 932, y: 660 },
|
||||
{ line: 4, flower: 1, x: 965, y: 672 },
|
||||
{ line: 4, flower: 2, x: 921, y: 660 },
|
||||
{ line: 4, flower: 3, x: 886, y: 660 },
|
||||
{ line: 4, flower: 4, x: 876, y: 625 },
|
||||
// 线路5
|
||||
@@ -274,6 +279,7 @@
|
||||
await click(1844,1021);
|
||||
await sleep(500);
|
||||
await click(1446,350);
|
||||
await sleep(500);
|
||||
let XIAN6 = await imageRecognition(DIMAIHUA,1,0,0,387,0,700,200);if (XIAN6.found){
|
||||
log.info("地脉花位置: X:"+XIAN6.x+" Y:"+XIAN6.y);
|
||||
position = {line:6,flower:1};
|
||||
@@ -293,15 +299,16 @@
|
||||
log.info("地脉花位置: X:"+XIAN123.x+" Y:"+XIAN123.y);
|
||||
const recognizedCoord = { x: XIAN123.x, y: XIAN123.y };
|
||||
position = findFlowerPositionWithTolerance(recognizedCoord, tolerance);
|
||||
if (position.line==3){position = findFlowerPositionWithTolerance(recognizedCoord, 20);}
|
||||
if (position.line==3){position = findFlowerPositionWithTolerance(recognizedCoord, tolerance);}
|
||||
if (position) {
|
||||
return true;
|
||||
} else {
|
||||
log.info(`无法找到花朵位置(在容错范围内)。`);return false;
|
||||
}
|
||||
}
|
||||
await moveMouseTo(132,783);
|
||||
await sleep(500);
|
||||
await moveMouseTo(132,783);
|
||||
await sleep(800);
|
||||
let XIAN4 = await imageRecognition(DIMAIHUA,1,0,0);
|
||||
if (XIAN4.found){
|
||||
log.info("地脉花位置: X:"+XIAN4.x+" Y:"+XIAN4.y);
|
||||
@@ -313,6 +320,7 @@
|
||||
log.info(`无法找到花朵位置(在容错范围内)。`);return false;
|
||||
}
|
||||
}
|
||||
await sleep(500);
|
||||
await moveMouseTo(1064,1079);
|
||||
await sleep(200);
|
||||
let XIAN66 = await imageRecognition(DIMAIHUA,1,0,0);
|
||||
@@ -328,22 +336,79 @@
|
||||
}else{throw new Error("线路出错,退出!")}
|
||||
}
|
||||
|
||||
// 函数:根据坐标查找花朵位置
|
||||
function findFlowerPositionWithTolerance(coord, tolerance) {
|
||||
let closestFlower = null; // 用于记录最近的花朵
|
||||
let closestDistance = Infinity; // 初始化最近距离为无穷大
|
||||
let matches = []; // 用于存储所有匹配的花朵
|
||||
|
||||
// 遍历所有花朵坐标,检查是否在容错范围内
|
||||
for (let i = 0; i < allFlowerCoords.length; i++) {
|
||||
const flower = allFlowerCoords[i];
|
||||
if (Math.abs(flower.x - coord.x) <= tolerance && Math.abs(flower.y - coord.y) <= tolerance) {
|
||||
return { line: flower.line, flower: flower.flower };
|
||||
const flower = allFlowerCoords[i];
|
||||
const distance = Math.sqrt(Math.pow(flower.x - coord.x, 2) + Math.pow(flower.y - coord.y, 2));
|
||||
|
||||
if (distance <= tolerance) {
|
||||
matches.push(flower); // 在容错范围内,添加到匹配列表
|
||||
} else {
|
||||
// 如果不在容错范围内,则检查是否是当前最近的花朵
|
||||
if (distance < closestDistance) {
|
||||
closestFlower = flower;
|
||||
closestDistance = distance;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 根据匹配情况返回结果
|
||||
if (matches.length === 1) {
|
||||
// 找到一个符合项,返回这个项
|
||||
log.warn("找到了一个匹配的花朵!", matches[0].line,matches[0].flower);
|
||||
return { line: matches[0].line, flower: matches[0].flower,x: matches[0].x, y: matches[0].y };
|
||||
} else if (matches.length > 1) {
|
||||
// 找到多个符合项,处理逻辑
|
||||
let minXDiff = Infinity;
|
||||
let minYDiff = Infinity;
|
||||
let minXFlower = null;
|
||||
let minYFlower = null;
|
||||
|
||||
for (let i = 0; i < matches.length; i++) {
|
||||
const diffX = Math.abs(matches[i].x - coord.x);
|
||||
const diffY = Math.abs(matches[i].y - coord.y);
|
||||
|
||||
if (diffX < minXDiff) {
|
||||
minXDiff = diffX;
|
||||
minXFlower = matches[i];
|
||||
}
|
||||
|
||||
if (diffY < minYDiff) {
|
||||
minYDiff = diffY;
|
||||
minYFlower = matches[i];
|
||||
}
|
||||
}
|
||||
|
||||
// 比对X轴和Y轴的最小差距,返回对应的花朵
|
||||
if (minXDiff < minYDiff) {
|
||||
log.warn("找到了多个匹配的花朵,选择X轴差距最小的花朵!", minXFlower.line,minXFlower.flower);
|
||||
return { line: minXFlower.line, flower: minXFlower.flower,x: minXFlower.x, y: minXFlower.y };
|
||||
} else {
|
||||
log.warn("找到了多个匹配的花朵,选择Y轴差距最小的花朵!", minYFlower.line,minYFlower.flower);
|
||||
return { line: minYFlower.line, flower: minYFlower.flower,x: minYFlower.x, y: minYFlower.y };
|
||||
}
|
||||
} else {
|
||||
// 没有找到符合项,返回全局最近的花朵
|
||||
if (closestFlower) {
|
||||
log.warn("没有找到地脉花,返回最近地脉花!", closestFlower.line,closestFlower.flower);
|
||||
return { line: closestFlower.line, flower: closestFlower.flower,x: closestFlower.x, y: closestFlower.y };
|
||||
} else {
|
||||
// 如果没有找到任何花朵,返回一个默认值或抛出错误(根据实际需求决定)
|
||||
throw new Error("未找到任何花朵");
|
||||
}
|
||||
}
|
||||
return null; // 如果没有找到匹配的坐标,返回null
|
||||
}
|
||||
|
||||
//寻找地脉溢口,文字识别不到转圈寻找,不管有没找到都执行战斗,最后领取奖励判断是否继续执行
|
||||
async function VeinEntrance() {
|
||||
for (let i = 0;i < 2;i++) {
|
||||
let JIECHU = await Textocr("接触地脉溢口",3,2,0,1188,358,200,400);
|
||||
if (JIECHU.found){await keyPress("F");await dispatcher.addTimer(new RealtimeTimer("AutoPick", { "forceInteraction": true }));break;}else{if(i = 1){
|
||||
if (JIECHU.found){await keyPress("F");await dispatcher.addTimer(new RealtimeTimer("AutoPick", { "forceInteraction": true }));await keyPress("F");break;}else{if(i == 1){
|
||||
log.warn("没找到地脉花,尝试强制转圈寻找,不管有没找到都执行战斗...");
|
||||
dispatcher.addTimer(new RealtimeTimer("AutoPick", { "forceInteraction": true }));
|
||||
await keyDown("W");await sleep(500);await keyUp("W");
|
||||
@@ -575,12 +640,10 @@
|
||||
await sleep(2000);
|
||||
await dispatcher.runTask(new SoloTask("AutoFight"));
|
||||
}else
|
||||
{
|
||||
shouldContinueChecking = false;
|
||||
{
|
||||
if(!await autoFight(Fighttimeout)){
|
||||
log.warn("战斗失败,测试寻找地脉花入口");
|
||||
}
|
||||
shouldContinueChecking = true;
|
||||
log.warn("战斗失败,尝试寻找地脉花入口");
|
||||
}
|
||||
}
|
||||
|
||||
//执行到地脉花地点的寻路脚本
|
||||
|
||||
Reference in New Issue
Block a user