v.2.9版本 全自动枫丹地脉花 20250629 (#1234)
* Delete repo/js/Auto全自动“枫丹”地脉花 directory 重新命名,并升级 * v.2.9版本 全自动枫丹地脉花 20250629 ### v.2.9版本:20250629 1. 添加树脂数量识别,防止树脂耗尽的时候多跑一次。 2. 重新命名,添加README.MD
100
repo/js/AutoFontaineLeyLine/README.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# AAA 地脉花注意事项
|
||||
|
||||
## 零、前言
|
||||
|
||||
测试中,注意事项不完善请谅解,如有BUG,QQ:119996800,随时欢迎反馈。
|
||||
后续优化代码和使用说明,先测试看如何!
|
||||
感谢平面镜和D捣蛋两位大佬的基础线路和逻辑。
|
||||
|
||||
## 一、省流注意事项
|
||||
|
||||
1. 目前设置两次自动战斗,加入了错误打开奖励页面的检测,解决误触领奖的错误,建议把超时时间设定为60秒以上,并勾选更快检测战斗结束,根据练度不同调整。
|
||||
2. 建议手动把自动拾取关闭,公版没有API接口可以关闭,开始前设置不自动拾取怪物的掉落物,能让线路运行更流畅。
|
||||
3. 禁用UID刷取地脉花有概率识别不成功,如更换纯色或没花纹的名片能大大提高识别率(99.99999%)。
|
||||
|
||||
## 二、配置简介
|
||||
|
||||
1. **《好感队伍》和《战斗队伍》填写**:如填写了《好感队伍》(用于打完地脉花领取奖励和结束地脉花领取励练点、每日),则《战斗队伍》必须填写,否则无法运行。
|
||||
- 冷知识:浓缩树脂只算一次地脉次数,所以在一条龙时可以不合树脂,打完地脉再领每日。如《好感队伍》和《战斗队伍》都不填,则不会切换队伍打地脉花,建议和配置器的配置设置队伍一致。
|
||||
|
||||
2. **如果勾选了打完后,领取每日奖励《好感队伍》必填**:建议无论是否需要,《好感队伍》和《战斗队伍》都填,都填一个队伍也行。
|
||||
|
||||
3. **《刷取次数》**:默认为6,每条线路4~6朵花,如果不想刷太多次,可选择单线路模式,只会打一条线路内的花,数量为《刷取次数》,如果选择了《耗尽树脂模式》,线路打完也会继续寻找新的线路,直到耗尽浓缩和使用原粹树脂,不会使用小月亮,请放心。
|
||||
|
||||
4. **默认选“1”刷蓝色的经验书地脉之花,选“2”为刷金黄色的摩拉地脉之花**。
|
||||
|
||||
5. **可填写需要禁用的UID**:禁止此UID刷地脉花,通过派蒙页面左上角的UID进行文字识别,如有多个账号需禁用,使用“/”符号隔开,如12345678/99999999,经过测试,只要在UID数字后面为比较干净的颜色,没有特效动画的名片,识别了100次全正确,再多测看下。
|
||||
|
||||
6. **直跑模式**:当打完一个地脉花后,如下一个地脉花比较近,直接跑过去而不是重新传送。
|
||||
|
||||
## 三、更新说明
|
||||
|
||||
### v.1.1版本:20250410
|
||||
|
||||
1. 修复自动战斗不停向前走的问题。
|
||||
2. 修复第一次战斗部不切换战斗队伍问题。
|
||||
3. 修复线路1第三朵花文件命错误。
|
||||
4. 修复队伍未填写判断为已定义问题,改为在设置过又删除队伍后判断未未定义。
|
||||
5. 修复树脂耗尽模式下,不打完整体线路问题,改为强制打完整体线路。
|
||||
6. 新增,如地脉花线路不在初始位置,快速模式是找不到的,在模糊位置可能被找到,即线路在被打过后,尝试通过无视树脂是否用完,遍历此线路查找线路剩余的地脉花,如再次找到地脉花,恢复正常判断树脂是否用完。
|
||||
7. 优化快速查找模式下的准确性。
|
||||
8. 优化模糊模式下的搜索范围,和坐标位置。
|
||||
|
||||
### v.1.2版本:20250414
|
||||
|
||||
1. 优化切换队伍时间,避免可能得切换队伍失败导致退出的情况。
|
||||
2. 修复线路2在快速寻找模式下识别不准确问题。
|
||||
3. 优化提前出地脉花的检测时间。
|
||||
4. 特殊处理:1、枫丹路线2秋分山西侧锚点左下第五朵花特殊处理,避免错误传送到地下螃蟹,直接跑过去。
|
||||
|
||||
### v.1.3版本:202500422
|
||||
|
||||
1. 优化最后领奖时检测是否误触地脉之花导致任务失败的问题。
|
||||
2. 修复模糊模式下找到地脉花但没有的情况下会继续寻找地脉花的问题。
|
||||
3. 优化模糊查找下的开始线路。
|
||||
4. 修复由于检测地脉之花页面导致的软件报错。
|
||||
|
||||
### v.2.0版本:20250503
|
||||
|
||||
1. 重写寻找地脉花线路方法,删除模糊寻找模式。
|
||||
2. 添加直跑模式,当打完一个地脉花后,如下一个地脉花比较近,直接跑过去而不是重新传送。(要求BGI的44.8版本)
|
||||
|
||||
### v.2.1版本:20250512
|
||||
|
||||
1. 更改UID识别方法。(适配原神UI改变)
|
||||
|
||||
### v.2.2版本:20250524
|
||||
|
||||
1. 参考D捣蛋和秋云佬的代码,加入异步检测战斗结束。
|
||||
|
||||
### v.2.3版本:20250528
|
||||
|
||||
1. 优化寻找地脉花逻辑。
|
||||
|
||||
### v.2.4版本:20250613
|
||||
|
||||
1. 特殊处理第二线路第5朵花,避免传送到螃蟹。
|
||||
2. 调整领取OCR范围,添加选择优先使用的树脂类型(适配3次地脉双倍)。
|
||||
3. 调整按次数执行逻辑,解决次数大于单线路打不够次数的问题。
|
||||
|
||||
### v.2.5版本:20250619
|
||||
|
||||
1. 适配5.7版本树脂的选择使用。
|
||||
- 说明:设定树脂顺序,1=浓缩树脂/2=原粹树脂/3=脆弱树脂/4=须臾树脂,用`/`隔开,填写对应的树脂数字即可,默认:1/2 ,表示先使用浓缩树脂,再使用原粹树脂,不填的不使用"
|
||||
|
||||
### v.2.6版本:20250620
|
||||
|
||||
1. 修复参数错误
|
||||
2. 前往地脉花和领取奖励坐标优化,减少不必要的位置判断点,加速到达和领取。
|
||||
|
||||
### v.2.7版本:20250621
|
||||
|
||||
1. 优化超时时间的设定。
|
||||
|
||||
### v.2.8版本:20250626
|
||||
|
||||
1. 减少直跑模式下的途经点数量,防止卡死。
|
||||
|
||||
### v.2.9版本:20250629
|
||||
|
||||
1. 添加树脂数量识别,防止树脂耗尽的时候多跑一次。
|
||||
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
BIN
repo/js/AutoFontaineLeyLine/assets/model/fragile_resin_count.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
@@ -25,7 +25,7 @@
|
||||
if (afterBehavior===1){if (xa===0 & ya===0){log.info("点击模式:开");}await sleep(1000);click(res.x+xa, res.y+ya);}else{if (debugmodel===1 & xa===0 & ya===0){log.info("点击模式:关")}}
|
||||
if (afterBehavior===2){if (xa===0 & ya===0){log.info("F模式:开");}await sleep(1000);keyPress("F");}else{if (debugmodel===1 & xa===0 & ya===0){log.info("F模式:关")}}
|
||||
if (debugmodel===1 & xa===0 & ya===0){log.info("全图代码位置:({x},{y},{h},{w})", res.x-10, res.y-10, res.width+10, res.Height+10);}else{ log.info("识别到图片");}
|
||||
return result = { x: res.x, y: res.y, w:res.width,h:res.Height,found: true }
|
||||
return result = { x: res.x+xa, y: res.y+ya, w:res.width,h:res.Height,found: true }
|
||||
}
|
||||
const NowTime = new Date();
|
||||
if ((NowTime - startTime)>timeout*1000){if (debugmodel===1 & xa===0 & ya===0){log.info(`${timeout}秒超时退出,未找到图片`);}return result = {found: false };}else{ii=8}
|
||||
@@ -56,6 +56,10 @@
|
||||
if (clickocr===2){await sleep(100);keyPress("F");}else{log.info("F模式:关");}
|
||||
return result = { text: res.text, x: res.x, y: res.y, found: true }
|
||||
}
|
||||
if (debugcode===2 && !res.isEmpty()){
|
||||
// log.info("({x},{y},{h},{w})", res.x-10, res.y-10, res.width+10, res.Height+10);
|
||||
return result = { text: res.text, x: res.x, y: res.y, found: true }
|
||||
}
|
||||
}
|
||||
const NowTime = new Date();
|
||||
if (Math.abs(NowTime - startTime)>chaotime*1000){if (x===0 & y===0){log.info(`${chaotime}秒超时退出,"${wenzi}"未找到`);}return result = {found: false };}else{ii=8;if (x !== 861){await keyPress("VK_W");}log.info(`"${wenzi}"识别中……`);}
|
||||
@@ -121,6 +125,9 @@
|
||||
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";}
|
||||
var condensedResin = "assets/model/condensed_resin_count.png";
|
||||
var originalResin = "assets/model/original_resin_count.png";
|
||||
var fragileResin = "assets/model/fragile_resin_count.png";
|
||||
|
||||
log.debug(`DEBUG:${SHUV}.${color}.${rawTimes}`);//调试LOG
|
||||
if (Rewards){log.warn("结束后领励练点和提交每日!");if(settings.nh === undefined || settings.nh === "") {log.warn("好感队未配置,领奖励时不切换队伍")}}
|
||||
@@ -467,6 +474,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
await Textocr("地脉之花", 1, 1, 0, 861,265, 194, 265);
|
||||
await sleep(500);
|
||||
|
||||
for (let j = 0;j < 2;j++) {
|
||||
@@ -479,9 +487,36 @@
|
||||
let BUC = await Textocr("补充",0.5,0,0,1150,440,210,130);
|
||||
if (BUC.found) {continue;}
|
||||
}
|
||||
|
||||
let { condensedResinCount, originalResinCount, fragileResinCount } = await getRemainResinStatus();
|
||||
|
||||
let shouldExit = true;
|
||||
|
||||
if (resinTypes.includes("1"))
|
||||
{
|
||||
shouldExit &= (parseInt(condensedResinCount, 10) <= 1);
|
||||
}
|
||||
if (resinTypes.includes("2"))
|
||||
{
|
||||
shouldExit &= (parseInt(originalResinCount, 10) < 40);
|
||||
}
|
||||
if (resinTypes.includes("3"))
|
||||
{
|
||||
shouldExit &= (parseInt(fragileResinCount, 10) <= 1);
|
||||
}
|
||||
|
||||
await click(SHU.x+550,SHU.y)
|
||||
log.info(` ${resinTypeMap[rewards[i]]} 获取奖励...`);
|
||||
dispatcher.addTimer(new RealtimeTimer("AutoPick", { forceInteraction: true }));
|
||||
|
||||
if (shouldExit)
|
||||
{
|
||||
log.warn("树脂耗尽,停止执行...");
|
||||
await sleep(1000);
|
||||
SHUOVER=2;
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -495,6 +530,77 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
async function getRemainResinStatus() {
|
||||
var condensedResinCount = 0; // 浓缩树脂
|
||||
var originalResinCount = 0; // 原粹树脂
|
||||
var fragileResinCount = 0; // 脆弱树脂
|
||||
|
||||
// 浓缩树脂
|
||||
var condensedResinCountRa = await imageRecognition(condensedResin,0, 0, 0,1190,0,400,80);
|
||||
if (condensedResinCountRa.found) {
|
||||
// await moveMouseTo(condensedResinCountRa.x,condensedResinCountRa.y);
|
||||
let countArea = await Textocr("",1, 0, 2,condensedResinCountRa.x+condensedResinCountRa.w,condensedResinCountRa.y,condensedResinCountRa.w*2-5,condensedResinCountRa.h-5);//
|
||||
if (countArea.found){
|
||||
// log.info("浓缩树脂识别数量结果: "+ countArea.text);
|
||||
condensedResinCount = countArea.text
|
||||
}
|
||||
else
|
||||
{
|
||||
log.info("浓缩树脂识别数量结果:无");
|
||||
}
|
||||
|
||||
} else {
|
||||
log.info("未检测到浓缩树脂图标");
|
||||
}
|
||||
|
||||
var originalResinCountRa = await imageRecognition(originalResin,0, 0, 0,1555,0,75,80);
|
||||
if (originalResinCountRa.found) {
|
||||
// await moveMouseTo(originalResinCountRa.x,originalResinCountRa.y);
|
||||
let countArea = await Textocr("",1, 1, 2,originalResinCountRa.x+originalResinCountRa.w,originalResinCountRa.y,originalResinCountRa.w*3,originalResinCountRa.h);//
|
||||
if (countArea.found){
|
||||
log.info("原粹树脂识别数量结果:"+ countArea.text);
|
||||
let match = countArea.text.match(/(\d+)\s*[/1]\s*(2|20|200)/);
|
||||
if (match) {
|
||||
originalResinCount = match[1];
|
||||
// log.info("脆弱树脂识别数量提取:"+ originalResinCount);
|
||||
}
|
||||
else
|
||||
{
|
||||
log.info("原粹树脂识别数量提取失败");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
log.info("原粹树脂识别数量结果::无");
|
||||
}
|
||||
|
||||
} else {
|
||||
log.info("未检测到原粹树脂图标");
|
||||
}
|
||||
|
||||
|
||||
var fragileResinCountRa = await imageRecognition(fragileResin,0, 0, 1,1190,0,400,80);
|
||||
if (fragileResinCountRa.found) {
|
||||
// await moveMouseTo(fragileResinCountRa.x,fragileResinCountRa.y);
|
||||
let countArea = await Textocr("",1, 1, 2,fragileResinCountRa.x+fragileResinCountRa.w,fragileResinCountRa.y,fragileResinCountRa.w*2,fragileResinCountRa.h);//
|
||||
if (countArea.found){
|
||||
// log.info("脆弱树脂识别数量结果:"+ countArea.text);
|
||||
fragileResinCount = countArea.text
|
||||
}
|
||||
else
|
||||
{
|
||||
log.info("脆弱树脂识别数量结果::无");
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
log.info("未检测到脆弱树脂图标");
|
||||
}
|
||||
|
||||
log.info("树脂状态:浓缩{0} 原粹{1} 脆弱{2} ", condensedResinCount, originalResinCount, fragileResinCount)
|
||||
return {condensedResinCount,originalResinCount,fragileResinCount}
|
||||
}
|
||||
|
||||
async function isOnRewardPage() {
|
||||
const rewardText = await Textocr("地脉之花", 0.2, 0, 0, 861,265, 194, 265);
|
||||
return rewardText.found;
|
||||
@@ -672,9 +778,9 @@
|
||||
else
|
||||
{
|
||||
let pathDic = JSON.parse(file.readTextSync(choicePath));
|
||||
if (pathDic["positions"].length > 3)
|
||||
if (pathDic["positions"].length > 1)
|
||||
{
|
||||
pathDic["positions"] = pathDic["positions"].slice(-3);
|
||||
pathDic["positions"] = pathDic["positions"].slice(-1);
|
||||
}
|
||||
await pathingScript.run(JSON.stringify(pathDic));
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "地脉花-可禁UID/领每日/树脂使用顺序",
|
||||
"version": "2.7",
|
||||
"name": "全自动枫丹地脉花",
|
||||
"version": "2.9",
|
||||
"bgi_version": "0.44.8",
|
||||
"description": "枫丹地脉花,蓝花金花通用。生存压力大,请带盾奶;避免纯水输出,请注意说明文件。如有BUG请联系作者QQ:119996800",
|
||||
"tags":["地脉花"],
|
||||
@@ -1,78 +0,0 @@
|
||||
零、前言
|
||||
测试中,注意事项不完善请谅解,如有BUG,QQ:119996800,随时欢迎反馈。
|
||||
后续优化代码和使用说明,先测试看如何!
|
||||
感谢平面镜和D捣蛋两位大佬的基础线路和逻辑。
|
||||
|
||||
一、省流注意事项:
|
||||
1、目前设置两次自动战斗,加入了错误打开奖励页面的检测,解决误触领奖的错误,建议把超时时间设定为60秒以上,并勾选更快检测战斗结束,根据练度不同调整。
|
||||
2、建议手动把自动拾取关闭,公版没有API接口可以关闭,开始前设置不自动拾取怪物的掉落物,能让线路运行更流畅。
|
||||
3、禁用UID刷取地脉花有概率识别不成功,如更换纯色或没花纹的名片能大大提高识别率(99.99999%)。
|
||||
|
||||
二、配置简介:
|
||||
|
||||
1、《好感队伍》和《战斗队伍》填写:如填写了《好感队伍》(用于打完地脉花领取奖励和结束地脉花领取励练点、每日),则《战斗队伍》必须填写,否则无法运行。
|
||||
冷知识:浓缩树脂只算一次地脉次数,所以在一条龙时可以不合树脂,打完地脉再领每日。如《好感队伍》和《战斗队伍》都不填,则不会切换队伍打地脉花,建议和配置器的配置设置队伍一致。
|
||||
|
||||
2、如果勾选了打完后,领取每日奖励《好感队伍》必填,建议无论是否需要,《好感队伍》和《战斗队伍》都填,都填一个队伍也行。
|
||||
|
||||
3、《刷取次数》默认为6,每条线路4~6朵花,如果不想刷太多次,可选择单线路模式,只会打一条线路内的花,数量为《刷取次数》,如果选择了《耗尽树脂模式》,线路打完也会继续寻找新的线路,直到耗尽浓缩和使用原粹树脂,不会使用小月亮,请放心。
|
||||
|
||||
4、默认选“1”刷蓝色的经验书地脉之花,选“2”为刷金黄色的摩拉地脉之花。
|
||||
|
||||
5、可填写需要禁用的UID,禁止此UID刷地脉花,通过派蒙页面左上角的UID进行文字识别,如有多个账号需禁用,使用“/”符号隔开,如12345678/99999999,经过测试,只要在UID数字后面为比较干净的颜色,没有特效动画的名片,识别了100次全正确,再多测看下。
|
||||
|
||||
5、直跑模式,当打完一个地脉花后,如下一个地脉花比较近,直接跑过去而不是重新传送。
|
||||
|
||||
|
||||
|
||||
三、更新说明:
|
||||
v.1.1版本:20250410
|
||||
1、修复自动战斗不停向前走的问题。
|
||||
2、修复第一次战斗部不切换战斗队伍问题。
|
||||
3、修复线路1第三朵花文件命错误。
|
||||
4、修复队伍未填写判断为已定义问题,改为在设置过又删除队伍后判断未未定义。
|
||||
5、修复树脂耗尽模式下,不打完整体线路问题,改为强制打完整体线路。
|
||||
6、新增,如地脉花线路不在初始位置,快速模式是找不到的,在模糊位置可能被找到,即线路在被打过后,尝试通过无视树脂是否用完,遍历此线路查找线路剩余的地脉花,如再次找到地脉花,恢复正常判断树脂是否用完。
|
||||
7、优化快速查找模式下的准确性。
|
||||
8、优化模糊模式下的搜索范围,和坐标位置。
|
||||
|
||||
v.1.2版本:20250414
|
||||
1、优化切换队伍时间,避免可能得切换队伍失败导致退出的情况。
|
||||
2、修复线路2在快速寻找模式下识别不准确问题。
|
||||
3、优化提前出地脉花的检测时间。
|
||||
4、特殊处理:1、枫丹路线2秋分山西侧锚点左下第五朵花特殊处理,避免错误传送到地下螃蟹,直接跑过去。
|
||||
|
||||
v.1.3版本:202500422
|
||||
1、优化最后领奖时检测是否误触地脉之花导致任务失败的问题。
|
||||
2、修复模糊模式下找到地脉花但没有的情况下会继续寻找地脉花的问题。
|
||||
3、优化模糊查找下的开始线路。
|
||||
4、修复由于检测地脉之花页面导致的软件报错。
|
||||
|
||||
v.2.0版本:20250503
|
||||
1、重写寻找地脉花线路方法,删除模糊寻找模式。
|
||||
2、添加直跑模式,当打完一个地脉花后,如下一个地脉花比较近,直接跑过去而不是重新传送。(要求BGI的44.8版本)
|
||||
|
||||
v.2.1版本:20250512
|
||||
1、更改UID识别方法。(适配原神UI改变)
|
||||
|
||||
v.2.2版本:20250524
|
||||
1、参考D捣蛋和秋云佬的代码,加入异步检测战斗结束。
|
||||
|
||||
v.2.3版本:20250528
|
||||
1、优化寻找地脉花逻辑。
|
||||
|
||||
v.2.4版本:20250613
|
||||
1、特殊处理第二线路第5朵花,避免传送到螃蟹。
|
||||
2、调整领取OCR范围,添加选择优先使用的树脂类型(适配3次地脉双倍)。
|
||||
3、调整按次数执行逻辑,解决次数大于单线路打不够次数的问题。
|
||||
|
||||
v.2.5版本:20250619
|
||||
1、适配5.7版本树脂的选择使用。
|
||||
说明:设定树脂顺序,1=浓缩树脂/2=原粹树脂/3=脆弱树脂/4=须臾树脂,用`/`隔开,填写对应的树脂数字即可,默认:1/2 ,表示先使用浓缩树脂,再使用原粹树脂,不填的不使用"
|
||||
|
||||
v.2.6版本:20250620
|
||||
1、修复参数错误
|
||||
2、前往地脉花和领取奖励坐标优化,减少不必要的位置判断点,加速到达和领取。
|
||||
|
||||
v.2.7版本:20250621
|
||||
1、优化超时时间的设定。
|
||||
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |