Add files via upload (#398)

This commit is contained in:
Flatmirrr
2025-03-07 00:58:37 +08:00
committed by GitHub
parent a71c4f0fca
commit f7715121d5
37 changed files with 2886 additions and 0 deletions

View File

@@ -0,0 +1,220 @@
(async function () {
const startTime = Date.now();
setGameMetrics(1920, 1080, 1);
//================= 1.设定路线 =================
const folder1 = 'assets/枫丹地脉花-路线1 厄里那斯/';
const folder2 = 'assets/枫丹地脉花-路线2 秋分山西侧锚点左下/';
const folder3 = 'assets/枫丹地脉花-路线3 秋分山西侧锚点右/';
const folder4 = 'assets/枫丹地脉花-路线4 柔灯港上锚点/';
const folder5 = 'assets/枫丹地脉花-路线5 新枫丹科学院左锚点/';
const folder6 = 'assets/枫丹地脉花-路线6 芒索斯山东麓/';
const pathing1 = [
"枫丹地脉花-路线1 厄里那斯-1厄里那斯神像下.json",
"枫丹地脉花-路线1 厄里那斯-2厄里那斯神像右下.json",
"枫丹地脉花-路线1 厄里那斯-3厄里那斯神像右下_.json",
"枫丹地脉花-路线1 厄里那斯-4厄里那斯神像右下下下.json",
"枫丹地脉花-路线1 厄里那斯-5厄里那斯神像下下下下.json",
"枫丹地脉花-路线1 厄里那斯-6厄里那斯神像下下下.json",
];
const pathing2 = [
"枫丹地脉花-路线2 秋分山西侧锚点左下-1秋分山左下.json",
"枫丹地脉花-路线2 秋分山西侧锚点左下-2秋分山左下+.json",
"枫丹地脉花-路线2 秋分山西侧锚点左下-3秋分山左下下.json",
"枫丹地脉花-路线2 秋分山西侧锚点左下-4秋分山左下下下.json",
"枫丹地脉花-路线2 秋分山西侧锚点左下-5秋分山左左下下.json",
];
const pathing3 = [
"枫丹地脉花-路线3 秋分山西侧锚点右-1锚点右.json",
"枫丹地脉花-路线3 秋分山西侧锚点右-2锚点右右.json",
"枫丹地脉花-路线3 秋分山西侧锚点右-3锚点右右右.json",
"枫丹地脉花-路线3 秋分山西侧锚点右-4东侧锚点上.json",
];
const pathing4 = [
"枫丹地脉花-路线4 柔灯港上锚点-1锚点左上.json",
"枫丹地脉花-路线4 柔灯港上锚点-2锚点左上+.json",
"枫丹地脉花-路线4 柔灯港上锚点-3锚点左左上.json",
"枫丹地脉花-路线4 柔灯港上锚点-4锚点左上++.json",
];
const pathing5 = [
"枫丹地脉花-路线5 新枫丹科学院左锚点-1锚点左上.json",
"枫丹地脉花-路线5 新枫丹科学院左锚点-2锚点上.json",
"枫丹地脉花-路线5 新枫丹科学院左锚点-3科学院左上锚点.json",
"枫丹地脉花-路线5 新枫丹科学院左锚点-4科学院左上锚点左上.json",
];
const pathing6 = [
"枫丹地脉花-路线6 芒索斯山东麓-1锚点下.json",
"枫丹地脉花-路线6 芒索斯山东麓-2锚点右.json",
"枫丹地脉花-路线6 芒索斯山东麓-3锚点左.json",
"枫丹地脉花-路线6 芒索斯山东麓-4锚点左上.json",
];
// ================= 2. 配置读取 =================
let filePath; // 声明变量
if (settings.path === undefined) { // 检查用户是否选了地址
log.error("请在游戏中确认想刷地脉的首点位置然后在js设置中选择路线。",);
throw new Error("用户未设置路线,已终止执行"); // 没选就报错后停止
}
else {
filePath = settings.path
}
// 路线映射表-将用户设置映射对应路线
const pathingMap = {
"路线1 厄里那斯": pathing1,
"路线2 秋分山西侧锚点左下": pathing2,
"路线3 秋分山西侧锚点右": pathing3,
"路线4 柔灯港上锚点": pathing4,
"路线5 新枫丹科学院左锚点": pathing5,
"路线6 芒索斯山东麓": pathing6
};
const folderMap = {
"路线1 厄里那斯": folder1,
"路线2 秋分山西侧锚点左下": folder2,
"路线3 秋分山西侧锚点右": folder3,
"路线4 柔灯港上锚点": folder4,
"路线5 新枫丹科学院左锚点": folder5,
"路线6 芒索斯山东麓": folder6
};
// 输出选择的路线
log.info(`已选择路线:${settings.path}`);
// 定义路线常量
const selectedPath = pathingMap[filePath];
const selectedFolder = folderMap[filePath];
// 读取原始次数配置
const rawTimes = settings.times ? settings.times : "6";
// 验证是否为数字
let timesValue;
if (!/^-?\d+\.?\d*$/.test(rawTimes)) { // 匹配整数和小数
timesValue = 6
log.info("⚠️ 刷本次数设置不为数字改为默认值6");
} else {
// 转换为数字
const num = parseFloat(rawTimes);
// 范围检查
if (num < 1) {
timesValue = 1;
log.info(`⚠️ 次数 ${num} 小于1已调整为1`);
} else if (num > 6) {
timesValue = 6;
log.info(`⚠️ 次数 ${num} 大于6已调整为6`);
} else {
// 处理小数
if (!Number.isInteger(num)) {
timesValue = Math.floor(num);
log.info(`⚠️ 次数 ${num} 不是整数,已向下取整为 ${timesValue}`);
} else {
timesValue = num;
}
}
}
const timesConfig = { value: timesValue };
//已定义好路线路径、刷本次数的常量。现在需要定义领取动作并做刷本动作并保持自动拾取关闭。路线为selectedFolder+selectedPath次数为timesConfig
//路径存在性检查
if (selectedPath) {
for (const jsonFile of selectedPath) {
}
} else {
throw new Error("未找到路径文件");
}
//定义领取动作
async function claimRewards() {
log.info("尝试领取奖励优先使用浓缩按下两次esc避免使用月亮");
for (let i = 0; i < 6; i++) {
keyPress("F");
await sleep(i < 5 ? 400 : 600);
}
click(918, 760);
await sleep(1600);
keyPress("VK_ESCAPE");
await sleep(800);
keyPress("VK_ESCAPE");
await sleep(800);
}
//定义了领取动作为claimRewards
// ================= 3. 主执行逻辑 =================
try {
// 计算实际执行次数(取用户设置次数与路线长度的最小值)
const maxExecutions = Math.min(timesConfig.value, selectedPath.length);
log.info(`本条路线执行至第 ${maxExecutions} 朵花`);
// 按顺序执行路径文件
let executedCount = 0;
for (const jsonFile of selectedPath) {
if (executedCount >= maxExecutions) {
log.info("已达到执行次数,终止运行");
break; // 条件1触发次数限制
}
// 关闭自动拾取
dispatcher.addTimer(new RealtimeTimer("AutoPick", { forceInteraction: false }));
// 执行单个路径文件
log.info(`开始执行第 ${executedCount + 1}/${maxExecutions} 次路径:${jsonFile}`);
await pathingScript.runFile(`${selectedFolder}${jsonFile}`);
// 领取奖励
log.info(`此时应该可以按F接触地脉花`);
log.info(`开始第 ${executedCount + 1} 朵花的奖励领取`);
await claimRewards();
// 确保重新开启自动拾取
dispatcher.addTimer(new RealtimeTimer("AutoPick", { forceInteraction: true }));
// 冷却等待(可选)
await sleep(1000);
executedCount++;
}
log.info("本次地脉花路线已执行完毕。");
} catch (error) {
log.error(`执行过程中发生错误:${error.message}`);
}
})();