Files
bettergi-scripts-list/archive/js/Tzi-每日一条龙+副本晶蝶尘歌壶/main.js
起个名字好难 7a9f3296bb archive JS
2025-05-08 01:24:49 +08:00

444 lines
13 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(async function () {
const startTime = Date.now(); //记录启动时间
setGameMetrics(1920, 1080, 1); // 设置游戏运行的分辨率和缩放
//基础延迟
let delay = settings.delay || 2000;
//定义合成台and凯瑟琳的选择路径
let hct_filePath = settings.hsc_selectValue || "枫丹合成台";
let ksl_filePath = settings.ksl_selectValue || "枫丹凯瑟琳";
async function hct_AutoPath(locationName) {
log.info(`即将前往 ${locationName}`);
try {
let filePath = `assets/合成台位置/${locationName}.json`;
await pathingScript.runFile(filePath);
} catch (error) {
log.error(`执行 ${locationName} 路径时发生错误`);
}
log.info(`已到达 ${locationName}`);
}
async function ksl_AutoPath(locationName) {
log.info(`即将前往 ${locationName}`);
try {
let filePath = `assets/凯瑟琳位置/${locationName}.json`;
await pathingScript.runFile(filePath);
} catch (error) {
log.error(`执行 ${locationName} 路径时发生错误`);
}
log.info(`已到达 ${locationName}`);
}
async function prt_AutoPath(locationName) {
log.info(`即将前往 ${locationName}`);
try {
let filePath = `assets/烹饪台位置/${locationName}.json`;
await pathingScript.runFile(filePath);
} catch (error) {
log.error(`执行 ${locationName} 路径时发生错误`);
}
log.info(`已到达 ${locationName}`);
}
// 领取邮件
keyPress("Escape");
await sleep(1500);
click(50, 605);
await sleep(1500);
click(150, 1015);
await sleep(1000);
click(150, 1015);
await sleep(1000);
keyPress("Escape");
await sleep(1000);
keyPress("Escape");
log.info("已完成 领取邮件");
await sleep(delay);
// 设置世界权限
let domainName = settings.domainName;
if (domainName != "默认当前") {
keyPress("VK_F2")
await sleep(1000);
click(160, 1020); // 点击世界权限
await sleep(1000);
switch (domainName) {
case "不允许加入":
click(330, 870);
log.info("权限设置为 不允许加入");
break;
case "直接加入":
click(330, 920);
log.info("权限设置为 直接加入");
break;
case "确认后可加入":
click(330, 970);
log.info("权限设置为 确认后可加入");
break;
default:
click(330, 870); // 为空不允许
log.info("锁门");
await sleep(2000);
keyPress("Escape");
break;
}
}
// 前往_合成台
await hct_AutoPath(hct_filePath);
await sleep(1000);
// 合成浓缩树脂
keyPress("F");
await sleep(2000);
click(960, 540);
await sleep(1000);
click(960, 540);
await sleep(1000);
click(1750, 1010); //点击合成
await sleep(5000);
keyPress("Escape");
await sleep(1000);
keyPress("Escape"); // 确保完全退出合成
log.info("已完成 合成浓缩树脂");
await sleep(delay);
// 自动秘境
if (settings.autoInstance == "是" | settings.autoInstance == undefined) {
while (true) {
try {
await dispatcher.runTask(new SoloTask("AutoDomain"));
await sleep(500);
break;
} catch (ex) {
if (ex.message.includes("检测到复苏界面")) {
log.info("复活后,继续执行自动秘境。");
continue;
}
else {
// 如果不包含 "检测到复苏界面",则继续抛出异常
throw ex;
}
}
}
}
// 分解狗粮
if (settings.decomposeDogFood == "是" | settings.decomposeDogFood == undefined) {
keyPress("B");
await sleep(1000);
click(670, 40);
await sleep(1000);
click(660, 1010);
await sleep(1000);
click(300, 1020);
await sleep(500);
click(300, 380);
await sleep(50);
click(300, 300);
await sleep(50);
click(300, 220);
await sleep(50);
click(300, 150);
await sleep(500);
click(340, 1010);
await sleep(800);
click(1740, 1020);
await sleep(800);
click(1180, 750);
await sleep(800);
click(950, 800);
await sleep(800);
keyPress("Escape");
await sleep(1000);
keyPress("Escape");
log.info("已完成 分解狗粮");
await sleep(1000);
}
// 前往_凯瑟琳
await ksl_AutoPath(ksl_filePath);
await sleep(1000);
// 领取历练点
keyPress("F1");
await sleep(2000);
click(290, 345);
await sleep(1000);
click(1550, 755);
await sleep(1000);
click(1550, 755);
await sleep(1500);
// click(1670, 235);
keyPress("Escape");
log.info("已完成 领取历练点");
await sleep(delay);
// 领取每日委托奖励
keyPress("F");
log.info("按下F键");
await sleep(1000);
click(960, 540);
await sleep(1000);
click(1380, 425);// 点击坐标(1380, 425)(领取「每日委托」奖励)
await sleep(1000);
click(960, 540);
await sleep(2000);
click(960, 960);// 点击坐标(960, 960)(关闭奖励弹出页面)
log.info("已完成 领取每日委托奖励");
await sleep(delay);
// 重新探索派遣
keyPress("F");
await sleep(1800);
click(960, 540);
await sleep(1000);
click(1400, 580);
await sleep(1000);
click(160, 1010);
await sleep(1000);
click(1160, 1020);
await sleep(1000);
keyPress("Escape");
log.info("已完成 重新探索派遣");
await sleep(delay);
// 领取纪行奖励
keyPress("F4");
await sleep(1500);
click(960, 50);
await sleep(1000);
click(1720, 980);
await sleep(2000);
click(860, 50);
await sleep(1000);
click(1720, 980);
await sleep(1000);
keyPress("Escape");
await sleep(1000);
keyPress("Escape");
log.info("已完成 领取纪行奖励");
await sleep(delay);
// 前往_凯瑟琳
await genshin.tp(4515, 3630);
await sleep(1000);
//切换至抓晶蝶队伍
if (settings.catchButterfly == "是" | settings.catchButterfly == undefined) {
keyPress("L");
await sleep(3000);
click(75, 1020);
await sleep(200);
click(700, 115);
await sleep(200);
click(700, 115);
await sleep(300);
click(75, 200);
await sleep(800);
click(75, 1020);
await sleep(800);
let tempVar = settings.number || 5;
if (tempVar < 9) { // 向右点击
for (let i = 1; i < tempVar; i++) {
click(1850, 540);
await sleep(50);
}
} else { // 向左点击
tempVar = 16 - tempVar
for (let i = 0; i < tempVar; i++) {
click(75, 540);
await sleep(50);
}
}
click(1555, 1020);
await sleep(1000);
keyPress("Escape");
log.info("已切换至第" + settings.number || 5 + "队");
await sleep(delay);
}
//切换角色
keyPress("1");
log.info("已切换至第1个角色");
// 进入尘歌壶
keyPress("B");
await sleep(1000);
click(1060, 50);
await sleep(500);
click(770, 180);
await sleep(300);
click(1690, 1010);
await sleep(1000);
keyPress("F");
await sleep(10000);
log.info("已完成 进入尘歌壶");
// 如果延迟时间大于3000ms 执行防止加载卡岩
if (delay > 3000) {
await sleep(3000);
log.info("当前基础延迟大于{time},已等待防止加载卡岩", "3000ms");
}
// 尘歌壶找阿圆
(async function () {
// 绘绮庭路径
const pathingA = async function () {
keyDown("S"); // 按下 S 键
await sleep(500); // 等待 500ms
keyUp("S"); // 松开 S 键
await sleep(500); // 等待 500ms
keyDown("S"); // 按下 S 键
keyDown("A"); // 按下 A 键
await sleep(2100); // 等待 2100ms
keyUp("S"); // 松开 S 键
keyUp("A"); // 松开 A 键
log.info("绮庭路径执行完毕");
};
// 妙香林路径
const pathingB = async function () {
keyDown("D"); // 按下 D 键
await sleep(1500); // 等待 1500ms
keyUp("D"); // 松开 D 键
log.info("妙香林路径执行完毕");
};
// 黛翠峰&罗浮洞路径
const pathingC = async function () {
keyDown("D"); // 按下 D 键
await sleep(500); // 等待 500ms
keyUp("D"); // 松开 D 键
log.info("黛翠峰&罗浮洞路径执行完毕");
};
// 清琼岛路径
const pathingD = async function () {
keyDown("D");
await sleep(500);
keyUp("D");
log.info("清琼岛路径执行完毕");
};
// 读取用户设置
let path = settings.path !== undefined ? settings.path : ''; // 使用设置的路径
log.debug(`path: ${path}`);
// 根据选择的路径执行相应操作默认执行路径A绘绮庭路径
if (path === '绘绮庭') {
log.info('开始执行绮庭路径');
await pathingA(); // 执行绘绮庭路径
} else if (path === '妙香林') {
log.info('开始执行妙香林路径');
await pathingB(); // 执行妙香林路径
} else if (path === '黛翠峰&罗浮洞') {
log.info('开始执行黛翠峰&罗浮洞路径');
await pathingC(); // 执行黛翠峰or罗浮洞路径
} else if (path === '清琼岛') {
log.info('开始执行清琼岛路径');
await pathingD(); // 执行清琼岛路径
} else {
log.info('未选择有效路径执行默认路径D清琼岛');
await pathingD(); // 默认执行路径A清琼岛
}
})();
//领取洞天宝钱和好感度
await sleep(1000);
keyPress("F");
await sleep(2000);
click(1370, 420);
await sleep(1500);
click(1370, 420);
await sleep(800);
click(1800, 710); //领取好感
await sleep(200);
click(1345, 300); //点击x
await sleep(200);
click(1080, 960); //领取洞天宝钱
await sleep(200);
click(1345, 300); //点击x
await sleep(500);
click(1865, 44); //点击右上角x退出
await sleep(3000);
click(1300, 800);
await sleep(1000);
click(1300, 800);
log.info("已完成 领取洞天宝钱和好感");
await sleep(3000);
//抓晶蝶
if (settings.catchButterfly == "是" | settings.catchButterfly == undefined) {
dispatcher.addTimer(new RealtimeTimer("AutoPick", { "forceInteraction": true })); // 启用自动拾取的实时任务
log.info('开始捕捉晶蝶,请在队伍中务必携带{zyyy},使用成男/成女角色', '早柚/瑶瑶');
async function captureCrystalfly(locationName, x, y, num) {
log.info('前往 {name}', locationName);
await genshin.tp(x, y);
await sleep(1000);
log.info('尝试捕捉晶蝶, {num}只', num);
let filePath = `assets/晶蝶位置/${locationName}.json`;
await keyMouseScript.runFile(filePath);
}
await captureCrystalfly('枫丹-塔拉塔海谷', 4328, 3960, 4);
await captureCrystalfly('枫丹-枫丹廷区', 4822, 3628, 3);
await captureCrystalfly('枫丹-苍白的遗荣', 4188, 2992, 2);
await captureCrystalfly('枫丹-幽林雾道', 3376, 3290, 2);
await captureCrystalfly('枫丹-卡布狄斯堡遗迹上方', 3554, 3024, 4);
await captureCrystalfly('枫丹-卡布狄斯堡遗迹下方_优化', 3374, 2699, 3);
await captureCrystalfly('枫丹-莫尔泰区', 3810, 2334, 2);
await captureCrystalfly('枫丹-特别温暖的地方', 4790, 2520, 3);
await captureCrystalfly('须弥-化城郭左侧', 2699, -767, 2);
await captureCrystalfly('须弥-下风蚀地', 4452, -2456, 3);
dispatcher.addTimer(new RealtimeTimer("AutoPick", { "forceInteraction": false })); // 关闭自动拾取的实时任务
}
const endTime = Date.now();
const totalTimeInSeconds = (endTime - startTime) / 1000;
const minutes = Math.floor(totalTimeInSeconds / 60);
const seconds = totalTimeInSeconds % 60;
const formattedTime = `${minutes}${seconds.toFixed(0).padStart(2, '0')}`;
log.info(`已完成总耗时: ${formattedTime}`);
await sleep(2000);
log.info("已完成 所有内容 结束-Tzi");
await sleep(2000);
// 结束游戏
if (settings.exitGame == "是" | settings.exitGame == undefined) {
for (let i = 0; i < 5; i++) {
log.info('即将在 {num}s 后退出', 5 - i + "s");
await sleep(1000);
}
keyDown("MENU");
keyDown("F4");
await sleep(50);
keyUp("MENU");
keyUp("F4");
}
})();