fix: typos.

This commit is contained in:
起个名字好难
2025-06-25 06:39:47 +08:00
parent c47f29b8b4
commit 873e10619e
5 changed files with 72 additions and 71 deletions

View File

@@ -22,14 +22,14 @@ const LocationButtonRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
(async function() { (async function () {
// 留空或曾经设定后删除运行30轮否则为设定值 // 留空或曾经设定后删除运行30轮否则为设定值
let runTimes = isNaN(settings.runTimes) || settings.runTimes === '' ? 50 : settings.runTimes; let runTimes = isNaN(settings.runTimes) || settings.runTimes === '' ? 50 : settings.runTimes;
const messages = [ const messages = [
'1.请使用0.44.0或版本号更高的BetterGI运行本JS', '1.请使用0.44.0或版本号更高的BetterGI运行本JS',
`2.确保完成班尼特邀约任务`, `2.确保完成班尼特邀约任务`,
`3.行走位最好是E恢复角色`, `3.行走位最好是E恢复角色`,
`4.关闭E技能回血'${settings.disableHealHP? "是" : "否"}'`, `4.关闭E技能回血'${settings.disableHealHP ? "是" : "否"}'`,
`5.预期执行轮数'${runTimes}'`, `5.预期执行轮数'${runTimes}'`,
]; ];
for (let message of messages) { for (let message of messages) {
@@ -56,7 +56,7 @@ const LocationButtonRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("
} }
log.info(`开始刷取珍贵宝箱`); log.info(`开始刷取珍贵宝箱`);
if (!settings.enableSimplifyMode) { if (!settings.enableSimplifyMode) {
await AutoPath(`前往地点${settings.disableFullMode? "(工程模式)": ""}`); await AutoPath(`前往地点${settings.disableFullMode ? "(工程模式)" : ""}`);
} }
// let prePickStatus = true; // 测试用 // let prePickStatus = true; // 测试用
let prePickStatus = await UpperLimitPreciousChest(); // 到达地点时检查一次 let prePickStatus = await UpperLimitPreciousChest(); // 到达地点时检查一次

View File

@@ -15,7 +15,7 @@ const RightSliderBottomRo = RecognitionObject.TemplateMatch(file.ReadImageMatSyn
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
(async function() { (async function () {
// 翻页 // 翻页
async function pageDown(SliderBottomRo) { async function pageDown(SliderBottomRo) {
let SliderBottom = captureGameRegion().find(SliderBottomRo); let SliderBottom = captureGameRegion().find(SliderBottomRo);

View File

@@ -1,4 +1,4 @@
(async function() { (async function () {
function logTimeTaken(startTime) { function logTimeTaken(startTime) {
const currentTime = Date.now(); const currentTime = Date.now();

View File

@@ -1,26 +1,26 @@
(async function () { (async function () {
const woodType = ["桦木","萃华木","松木","垂香木","杉木","竹节","却砂木","梦见木","枫木","孔雀木","御伽木","证悟木","业果木","辉木","刺葵木","柽木","悬铃木","椴木","白梣木","香柏木","白栗栎木","燃爆木","灰灰楼林木"]; const woodType = ["桦木", "萃华木", "松木", "垂香木", "杉木", "竹节", "却砂木", "梦见木", "枫木", "孔雀木", "御伽木", "证悟木", "业果木", "辉木", "刺葵木", "柽木", "悬铃木", "椴木", "白梣木", "香柏木", "白栗栎木", "燃爆木", "灰灰楼林木"];
const singleWoodType = ["桦木","松木","杉木","竹节","却砂木","梦见木","枫木","孔雀木","御伽木","证悟木","业果木","辉木","刺葵木","柽木","白梣木","白栗栎木","燃爆木","灰灰楼林木"]; const singleWoodType = ["桦木", "松木", "杉木", "竹节", "却砂木", "梦见木", "枫木", "孔雀木", "御伽木", "证悟木", "业果木", "辉木", "刺葵木", "柽木", "白梣木", "白栗栎木", "燃爆木", "灰灰楼林木"];
const woodNumberMap = new Map(woodType.map(key => [key, 0])); const woodNumberMap = new Map(woodType.map(key => [key, 0]));
let woodNumberMapCopy = new Map(); let woodNumberMapCopy = new Map();
// 用于求解 垂香木-萃华木-香柏木 路线次数的线性规划求解器, 暴力求解,加一点点剪枝. // 用于求解 垂香木-萃华木-香柏木 路线次数的线性规划求解器, 暴力求解,加一点点剪枝.
function lpsolve1(y1,y2,y3) { function lpsolve1(y1, y2, y3) {
let x1max = Math.ceil(y1 / 48); let x1max = Math.ceil(y1 / 48);
let x2max = Math.ceil(y2 / 48); let x2max = Math.ceil(y2 / 48);
let x3max = Math.ceil(y2 / 15); let x3max = Math.ceil(y2 / 15);
let bestObjectiveValue = Infinity; let bestObjectiveValue = Infinity;
let bestSolution; let bestSolution;
let x1, x2, x3, x4, v1, v2, v3, v4; let x1, x2, x3, x4, v1, v2, v3, v4;
for (x1 = 0, v1 = 57*x1; x1 <= x1max && v1 < bestObjectiveValue; x1++, v1 += 57) { for (x1 = 0, v1 = 57 * x1; x1 <= x1max && v1 < bestObjectiveValue; x1++, v1 += 57) {
for (x2 = Math.max(Math.ceil((y1-48*x1)/9), 0), v2 = v1 + 191*x2; x2 <= x2max && v2 < bestObjectiveValue; x2++, v2 += 191) { for (x2 = Math.max(Math.ceil((y1 - 48 * x1) / 9), 0), v2 = v1 + 191 * x2; x2 <= x2max && v2 < bestObjectiveValue; x2++, v2 += 191) {
for (x3 = Math.max(Math.ceil((y2-6*x1-48*x2)/15),0), v3 = v2 + 59*x3; x3 <= x3max && v3 < bestObjectiveValue; x3++, v3 += 59) { for (x3 = Math.max(Math.ceil((y2 - 6 * x1 - 48 * x2) / 15), 0), v3 = v2 + 59 * x3; x3 <= x3max && v3 < bestObjectiveValue; x3++, v3 += 59) {
x4 = Math.max(Math.ceil((y3-9*x2-27*x3)/72),0); x4 = Math.max(Math.ceil((y3 - 9 * x2 - 27 * x3) / 72), 0);
v4 = v3 + 49*x4; v4 = v3 + 49 * x4;
if (v4 < bestObjectiveValue) { if (v4 < bestObjectiveValue) {
bestObjectiveValue = v4; bestObjectiveValue = v4;
bestSolution = [ x1, x2, x3, x4 ]; bestSolution = [x1, x2, x3, x4];
break; break;
} }
} }
@@ -30,15 +30,15 @@
} }
// 求解 悬铃木-椴木 路线次数. // 求解 悬铃木-椴木 路线次数.
function lpsolve2(y1,y2) { function lpsolve2(y1, y2) {
y1 = Math.max(y1,0); y1 = Math.max(y1, 0);
y2 = Math.max(y2,0); y2 = Math.max(y2, 0);
if (30*y1 > 42*y2) { if (30 * y1 > 42 * y2) {
return [Math.ceil(y1 / 42), 0]; return [Math.ceil(y1 / 42), 0];
} else if (30* y1 < 27*y2) { } else if (30 * y1 < 27 * y2) {
return [0, Math.ceil(y2 / 30)]; return [0, Math.ceil(y2 / 30)];
} else { } else {
return [Math.ceil((10*y1-9*y2)/150), Math.ceil((14*y2-10*y1)/150)]; return [Math.ceil((10 * y1 - 9 * y2) / 150), Math.ceil((14 * y2 - 10 * y1) / 150)];
} }
} }
@@ -47,7 +47,7 @@
if (target === '') { if (target === '') {
const woodNumberMapCopyObj = Object.fromEntries(woodNumberMapCopy); const woodNumberMapCopyObj = Object.fromEntries(woodNumberMapCopy);
const differenceMap = new Map([...woodNumberMap].map(([key, value]) => { const differenceMap = new Map([...woodNumberMap].map(([key, value]) => {
return [key, woodNumberMapCopyObj[key]- value]; return [key, woodNumberMapCopyObj[key] - value];
})); }));
log.info(`自动伐木运行结束, 总共获得${woodCountToStr(differenceMap)}`); log.info(`自动伐木运行结束, 总共获得${woodCountToStr(differenceMap)}`);
} else { } else {
@@ -55,7 +55,7 @@
} }
} }
function woodCountToStr(woodCount, n=1) { function woodCountToStr(woodCount, n = 1) {
let result = ''; let result = '';
for (let [key, value] of woodCount) { for (let [key, value] of woodCount) {
if (value > 0) { if (value > 0) {
@@ -84,16 +84,16 @@
log.info(`正在执行 ${pathingName} 大循环路径`); log.info(`正在执行 ${pathingName} 大循环路径`);
await pathingScript.runFile(filePath); await pathingScript.runFile(filePath);
log.info(`完成 ${pathingName} 大循环路径, 获得${woodCountToStr(woodCount)}`); log.info(`完成 ${pathingName} 大循环路径, 获得${woodCountToStr(woodCount)}`);
woodCount.forEach((value, key) => {woodNumberMap.set(key, woodNumberMap.get(key)-value)}); woodCount.forEach((value, key) => { woodNumberMap.set(key, woodNumberMap.get(key) - value) });
} catch (error) { } catch (error) {
log.error(`在砍伐 ${pathingName} 时发生错误: ${error}`); log.error(`在砍伐 ${pathingName} 时发生错误: ${error}`);
} }
woodCount = pathing.fileName.slice(-pathing.fileName.length+1).reduce((accumulator, currentValue) => { woodCount = pathing.fileName.slice(-pathing.fileName.length + 1).reduce((accumulator, currentValue) => {
return filenameToWoodCountMap(currentValue, accumulator); return filenameToWoodCountMap(currentValue, accumulator);
}, new Map()); }, new Map());
j = 1; j = 1;
} else if (pathing.fileName.length > 1) { } else if (pathing.fileName.length > 1) {
woodCount = pathing.fileName.slice(-pathing.fileName.length+1).reduce((accumulator, currentValue) => { woodCount = pathing.fileName.slice(-pathing.fileName.length + 1).reduce((accumulator, currentValue) => {
return filenameToWoodCountMap(currentValue, accumulator); return filenameToWoodCountMap(currentValue, accumulator);
}, woodCount); }, woodCount);
} }
@@ -107,18 +107,19 @@
} }
try { try {
for (let i = 0; i < n; i++) { for (let i = 0; i < n; i++) {
log.info(`正在执行 ${pathingName}${i+1}/${n} 次循环`); log.info(`正在执行 ${pathingName}${i + 1}/${n} 次循环`);
for (let k = j; k < pathing.fileName.length; k++) { for (let k = j; k < pathing.fileName.length; k++) {
filePath = filePathPre + pathing.fileName[k] + filePathSuf; filePath = filePathPre + pathing.fileName[k] + filePathSuf;
await pathingScript.runFile(filePath); await pathingScript.runFile(filePath);
} }
log.info(`${pathingName}${i+1}/${n} 次循环执行完成`); log.info(`${pathingName}${i + 1}/${n} 次循环执行完成`);
logTimeTaken(startTime); logTimeTaken(startTime);
} }
log.info(`完成 ${pathingName} 循环路径, 获得${woodCountToStr(woodCount, n)}`); log.info(`完成 ${pathingName} 循环路径, 获得${woodCountToStr(woodCount, n)}`);
logTimeTaken(startTime); logTimeTaken(startTime);
woodCount.forEach((value, key) => { woodCount.forEach((value, key) => {
woodNumberMap.set(key, woodNumberMap.get(key)-value*n);}); woodNumberMap.set(key, woodNumberMap.get(key) - value * n);
});
log.info(`${pathingName} 伐木完成,将执行下一个`); log.info(`${pathingName} 伐木完成,将执行下一个`);
logTimeTaken(startTime); logTimeTaken(startTime);
logRemainingItems(); logRemainingItems();
@@ -131,7 +132,7 @@
logRemainingItems(); logRemainingItems();
await sleep(1000); await sleep(1000);
if (woodNumberMap.get('萃华木') > 0) { if (woodNumberMap.get('萃华木') > 0) {
let [x1,x2,x3,x4] = lpsolve1(woodNumberMap.get('垂香木'),woodNumberMap.get('萃华木'),woodNumberMap.get('香柏木')); let [x1, x2, x3, x4] = lpsolve1(woodNumberMap.get('垂香木'), woodNumberMap.get('萃华木'), woodNumberMap.get('香柏木'));
await runPathingNTimes('垂香木', '垂香木', x1); await runPathingNTimes('垂香木', '垂香木', x1);
await runPathingNTimes('萃华木', '萃华木', x2); await runPathingNTimes('萃华木', '萃华木', x2);
await runPathingNTimes('香柏木-萃华木', '香柏木', x3); await runPathingNTimes('香柏木-萃华木', '香柏木', x3);
@@ -144,7 +145,7 @@
if (woodNumberMap.get('悬铃木') > 0 || woodNumberMap.get('椴木') > 0) { if (woodNumberMap.get('悬铃木') > 0 || woodNumberMap.get('椴木') > 0) {
await runPathingNTimes('悬铃木-椴木-大循环', '', 1); await runPathingNTimes('悬铃木-椴木-大循环', '', 1);
let [x1,x2] = lpsolve2(woodNumberMap.get('悬铃木'),woodNumberMap.get('椴木')); let [x1, x2] = lpsolve2(woodNumberMap.get('悬铃木'), woodNumberMap.get('椴木'));
await runPathingNTimes('悬铃木', '悬铃木', x1); await runPathingNTimes('悬铃木', '悬铃木', x1);
await runPathingNTimes('椴木', '椴木', x2); await runPathingNTimes('椴木', '椴木', x2);
} }
@@ -161,7 +162,7 @@
log.error('木材数组存在重复项'); log.error('木材数组存在重复项');
return; return;
} }
let num = numbers.length === 0 ? 2000 : numbers.length === 1 ? Math.min(Math.ceil(numbers[0] / (hasItto? 1.2 : 1)), 2000) : null; let num = numbers.length === 0 ? 2000 : numbers.length === 1 ? Math.min(Math.ceil(numbers[0] / (hasItto ? 1.2 : 1)), 2000) : null;
if (woods.length === 0) { if (woods.length === 0) {
if (num === null) { if (num === null) {
log.error('请在自定义选项输入木材名,用空格隔开'); log.error('请在自定义选项输入木材名,用空格隔开');
@@ -202,9 +203,9 @@
function filenameToWoodCountMap(str, woodCount = new Map()) { function filenameToWoodCountMap(str, woodCount = new Map()) {
let strArray = str.split("-").filter(str => str.trim() !== ""); let strArray = str.split("-").filter(str => str.trim() !== "");
for (let i = 0; i < strArray.length-1; i++) { for (let i = 0; i < strArray.length - 1; i++) {
if (woodType.includes(strArray[i])) { if (woodType.includes(strArray[i])) {
count = Number(strArray[i+1].replace(/[^\d]/g, '')); count = Number(strArray[i + 1].replace(/[^\d]/g, ''));
if (count !== 0) { if (count !== 0) {
if (woodCount.has(strArray[i])) { if (woodCount.has(strArray[i])) {
woodCount.set(strArray[i], count + woodCount.get(strArray[i])); woodCount.set(strArray[i], count + woodCount.get(strArray[i]));
@@ -235,32 +236,32 @@
// 因为要根据文件名来计算循环次数, 所以文件命名必须包含 '木材种类1-数量1-木材种类2-数量2-...', 说明此文件路线中采集的木材种类和数目. 如果没有采集木材(比如单纯跑路的大循环)也请至少添加一种类型, 数量可以填0. // 因为要根据文件名来计算循环次数, 所以文件命名必须包含 '木材种类1-数量1-木材种类2-数量2-...', 说明此文件路线中采集的木材种类和数目. 如果没有采集木材(比如单纯跑路的大循环)也请至少添加一种类型, 数量可以填0.
// 文件名中的木材种类见 woodType 数组, 与游戏保持一致, 数量可以只填数字, 地址和时间等其他信息可以不填, 分隔符用 '-'. // 文件名中的木材种类见 woodType 数组, 与游戏保持一致, 数量可以只填数字, 地址和时间等其他信息可以不填, 分隔符用 '-'.
const pathingMap = { const pathingMap = {
'桦木': { fileName: ['蒙德-星落湖-桦木-75个-54秒']}, '桦木': { fileName: ['蒙德-星落湖-桦木-75个-54秒'] },
'萃华木': { fileName: ['萃华木-48个-松木-3-垂香木-9-御伽木-9-香柏木-9-191秒']}, '萃华木': { fileName: ['萃华木-48个-松木-3-垂香木-9-御伽木-9-香柏木-9-191秒'] },
'松木': { fileName: ['蒙德-蒙德城-松木-0个(大循环)', '蒙德-蒙德城-松木-48个-43秒(循环)'], folderName: '蒙德-松木'}, '松木': { fileName: ['蒙德-蒙德城-松木-0个(大循环)', '蒙德-蒙德城-松木-48个-43秒(循环)'], folderName: '蒙德-松木' },
'却砂木': { fileName: ['璃月-归离原-却砂木-39个(大循环)', '璃月-归离原-却砂木-39个(循环)'], folderName: '璃月-却砂木'}, '却砂木': { fileName: ['璃月-归离原-却砂木-39个(大循环)', '璃月-归离原-却砂木-39个(循环)'], folderName: '璃月-却砂木' },
'竹节': { fileName: ['璃月-轻策庄-竹节-0个(大循环)', '璃月-轻策庄-竹节-78个-29秒(循环)'], folderName: '璃月-竹节'}, '竹节': { fileName: ['璃月-轻策庄-竹节-0个(大循环)', '璃月-轻策庄-竹节-78个-29秒(循环)'], folderName: '璃月-竹节' },
'垂香木': { fileName: ['蒙德-风起地-垂香木-48个-萃华木-6个-57秒']}, '垂香木': { fileName: ['蒙德-风起地-垂香木-48个-萃华木-6个-57秒'] },
'杉木': { fileName: ['蒙德-达达乌帕谷-杉木-0个(大循环)', '蒙德-达达乌帕谷-杉木-69个-58秒(循环)'], folderName: '蒙德-杉木'}, '杉木': { fileName: ['蒙德-达达乌帕谷-杉木-0个(大循环)', '蒙德-达达乌帕谷-杉木-69个-58秒(循环)'], folderName: '蒙德-杉木' },
'梦见木': { fileName: ['稻妻-甘金岛-梦见木-0个(大循环)', '稻妻-甘金岛-梦见木-45个(循环)'], folderName: '稻妻-梦见木'}, '梦见木': { fileName: ['稻妻-甘金岛-梦见木-0个(大循环)', '稻妻-甘金岛-梦见木-45个(循环)'], folderName: '稻妻-梦见木' },
'枫木': { fileName: ['稻妻-绯木村-枫木-42个-83秒']}, '枫木': { fileName: ['稻妻-绯木村-枫木-42个-83秒'] },
'孔雀木': { fileName: ['稻妻-镇守之森-孔雀木-51个-御伽木-9个-萃华木-3个-60秒']}, '孔雀木': { fileName: ['稻妻-镇守之森-孔雀木-51个-御伽木-9个-萃华木-3个-60秒'] },
'御伽木': { fileName: ['稻妻-水月池-御伽木-18个-90秒(大循环)', '稻妻-水月池-御伽木-57个-64秒(循环)'], folderName: '稻妻-御伽木'}, '御伽木': { fileName: ['稻妻-水月池-御伽木-18个-90秒(大循环)', '稻妻-水月池-御伽木-57个-64秒(循环)'], folderName: '稻妻-御伽木' },
'辉木': { fileName: ['须弥-禅那园-辉木-0个(大循环)', '须弥-禅那园-辉木-48个-29秒(循环)'], folderName: '须弥-辉木'}, '辉木': { fileName: ['须弥-禅那园-辉木-0个(大循环)', '须弥-禅那园-辉木-48个-29秒(循环)'], folderName: '须弥-辉木' },
'业果木': { fileName: ['须弥-禅那园-业果木-12个-证悟木-3个(大循环)', '须弥-禅那园-业果木-42个-辉木-12个-23秒(循环)'], folderName: '须弥-业果木'}, '业果木': { fileName: ['须弥-禅那园-业果木-12个-证悟木-3个(大循环)', '须弥-禅那园-业果木-42个-辉木-12个-23秒(循环)'], folderName: '须弥-业果木' },
'证悟木': { fileName: ['须弥-禅那园-证悟木-3个-业果木-6个-辉木-3个(大循环)', '须弥-禅那园-证悟木-57个-业果木-24个-62秒(循环)'], folderName: '须弥-证悟木'}, '证悟木': { fileName: ['须弥-禅那园-证悟木-3个-业果木-6个-辉木-3个(大循环)', '须弥-禅那园-证悟木-57个-业果木-24个-62秒(循环)'], folderName: '须弥-证悟木' },
'刺葵木': { fileName: ['须弥-上下风蚀地-刺葵木-42个']}, '刺葵木': { fileName: ['须弥-上下风蚀地-刺葵木-42个'] },
'柽木': { fileName: ['须弥-阿如村-柽木-42个-65秒']}, '柽木': { fileName: ['须弥-阿如村-柽木-42个-65秒'] },
'悬铃木-椴木-大循环': {fileName: ['枫丹-卡布狄斯堡遗迹-悬铃木-51个-椴木-33个(大循环)'], folderName: '枫丹-悬铃木-椴木'}, '悬铃木-椴木-大循环': { fileName: ['枫丹-卡布狄斯堡遗迹-悬铃木-51个-椴木-33个(大循环)'], folderName: '枫丹-悬铃木-椴木' },
'悬铃木': { fileName: ['枫丹-卡布狄斯堡遗迹-悬铃木-42个-椴木-30个(循环)'], folderName: '枫丹-悬铃木-椴木'}, '悬铃木': { fileName: ['枫丹-卡布狄斯堡遗迹-悬铃木-42个-椴木-30个(循环)'], folderName: '枫丹-悬铃木-椴木' },
'椴木': { fileName: ['枫丹-卡布狄斯堡遗迹-悬铃木-27个-椴木-30个(小循环)'], folderName: '枫丹-悬铃木-椴木'}, '椴木': { fileName: ['枫丹-卡布狄斯堡遗迹-悬铃木-27个-椴木-30个(小循环)'], folderName: '枫丹-悬铃木-椴木' },
'白梣木': { fileName: ['枫丹-苍晶区-白梣木-75个(大循环)', '枫丹-苍晶区-白梣木-75个(循环)'], folderName: '枫丹-白梣木'}, '白梣木': { fileName: ['枫丹-苍晶区-白梣木-75个(大循环)', '枫丹-苍晶区-白梣木-75个(循环)'], folderName: '枫丹-白梣木' },
'香柏木': { fileName: ['枫丹-秋分山西侧-香柏木-0个(大循环)', '枫丹-秋分山西侧-香柏木-72个-49秒(循环)'], folderName: '枫丹-香柏木'}, '香柏木': { fileName: ['枫丹-秋分山西侧-香柏木-0个(大循环)', '枫丹-秋分山西侧-香柏木-72个-49秒(循环)'], folderName: '枫丹-香柏木' },
// '炬木': { description: '炬木15个', times: 134 }, // '炬木': { description: '炬木15个', times: 134 },
'白栗栎木': { fileName: ['纳塔-踞石山-白栗栎木-36个', '纳塔-回声之子-白栗栎木-33个-燃爆木-27个'], folderName: '纳塔-白栗栎木-燃爆木'}, '白栗栎木': { fileName: ['纳塔-踞石山-白栗栎木-36个', '纳塔-回声之子-白栗栎木-33个-燃爆木-27个'], folderName: '纳塔-白栗栎木-燃爆木' },
'灰灰楼林木': { fileName: ['纳塔-奥奇卡纳塔-灰灰楼林木-42个-79秒']}, '灰灰楼林木': { fileName: ['纳塔-奥奇卡纳塔-灰灰楼林木-42个-79秒'] },
'燃爆木': { fileName: ['纳塔-隆崛坡-燃爆木-54个-105秒']}, '燃爆木': { fileName: ['纳塔-隆崛坡-燃爆木-54个-105秒'] },
'香柏木-萃华木': { fileName: ['枫丹-枫丹廷-香柏木-9个(大循环)', '枫丹-枫丹廷-香柏木-27个-萃华木-15个-59秒(循环)'], folderName: '枫丹-香柏木-萃华木'}, '香柏木-萃华木': { fileName: ['枫丹-枫丹廷-香柏木-9个(大循环)', '枫丹-枫丹廷-香柏木-27个-萃华木-15个-59秒(循环)'], folderName: '枫丹-香柏木-萃华木' },
// '桃椰子木': { description: '桃椰子木12个', times: 167 } // '桃椰子木': { description: '桃椰子木12个', times: 167 }
}; };
@@ -275,9 +276,9 @@
log.info('自动伐木开始...'); log.info('自动伐木开始...');
let woodsArray = settings.woods? settings.woods.split(/\s+/): []; let woodsArray = settings.woods ? settings.woods.split(/\s+/) : [];
let numbersArray = settings.numbers? settings.numbers.split(/\s+/).map(Number).map(num => isNaN(num) ? 0 : num): []; let numbersArray = settings.numbers ? settings.numbers.split(/\s+/).map(Number).map(num => isNaN(num) ? 0 : num) : [];
let hasItto = settings.hasItto? settings.hasItto : false; let hasItto = settings.hasItto ? settings.hasItto : false;
mapWoodsToNumbers(woodsArray, numbersArray, hasItto); mapWoodsToNumbers(woodsArray, numbersArray, hasItto);
await woodCutting(); await woodCutting();
})(); })();

View File

@@ -22,7 +22,7 @@ const QuickUsePlusButtonRo = RecognitionObject.TemplateMatch(file.ReadImageMatSy
let QuickUsePlusButton = captureGameRegion().find(QuickUsePlusButtonRo); let QuickUsePlusButton = captureGameRegion().find(QuickUsePlusButtonRo);
if (isNaN(settings.times || settings.numberPerUse <= 0)) { if (isNaN(settings.times || settings.numberPerUse <= 0)) {
number = 1 number = 1
}else{ } else {
for (let i = 1; i < settings.numberPerUse; ++i) { for (let i = 1; i < settings.numberPerUse; ++i) {
QuickUsePlusButton.click();// 点击使用数量 QuickUsePlusButton.click();// 点击使用数量
await sleep(300); await sleep(300);