Files
bettergi-scripts-list/repo/js/消耗复活料理/main.js
mno 036704504c js:自动狗粮重制版1.21更新 (#1037)
* js:自动狗粮重制版1.21更新

* js:消耗复活料理更新

现在会从七天神像处下落了,避免因为简易策略脚本失效造成问题

* js:根据patick-ze的pr,修改fakelog中的日志级别
2025-06-09 00:50:21 +08:00

150 lines
6.7 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.

// fakeLog 函数,使用方法:将本函数放在主函数前,调用时请务必使用await否则可能出现v8白框报错
//在js开头处伪造该js结束运行的日志信息如 await fakeLog("js脚本", true, true, 0);
//在js结尾处伪造该js开始运行的日志信息如 await fakeLog("js脚本", true, false, 2333);
//duration项目仅在伪造结束信息时有效且无实际作用可以任意填写当你需要在日志中输出特定值时才需要单位为毫秒
//在调用地图追踪前伪造该地图追踪开始运行的日志信息,如 await fakeLog(`地图追踪.json`, false, true, 0);
//在调用地图追踪后伪造该地图追踪结束运行的日志信息,如 await fakeLog(`地图追踪.json`, false, false, 0);
//如此便可以在js运行过程中伪造地图追踪的日志信息可以在日志分析等中查看
async function fakeLog(name, isJs, isStart, duration) {
await sleep(10);
const currentTime = Date.now();
// 参数检查
if (typeof name !== 'string') {
log.error("参数 'name' 必须是字符串类型!");
return;
}
if (typeof isJs !== 'boolean') {
log.error("参数 'isJs' 必须是布尔型!");
return;
}
if (typeof isStart !== 'boolean') {
log.error("参数 'isStart' 必须是布尔型!");
return;
}
if (typeof currentTime !== 'number' || !Number.isInteger(currentTime)) {
log.error("参数 'currentTime' 必须是整数!");
return;
}
if (typeof duration !== 'number' || !Number.isInteger(duration)) {
log.error("参数 'duration' 必须是整数!");
return;
}
// 将 currentTime 转换为 Date 对象并格式化为 HH:mm:ss.sss
const date = new Date(currentTime);
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
const seconds = String(date.getSeconds()).padStart(2, '0');
const milliseconds = String(date.getMilliseconds()).padStart(3, '0');
const formattedTime = `${hours}:${minutes}:${seconds}.${milliseconds}`;
// 将 duration 转换为分钟和秒,并保留三位小数
const durationInSeconds = duration / 1000; // 转换为秒
const durationMinutes = Math.floor(durationInSeconds / 60);
const durationSeconds = (durationInSeconds % 60).toFixed(3); // 保留三位小数
// 使用四个独立的 if 语句处理四种情况
if (isJs && isStart) {
// 处理 isJs = true 且 isStart = true 的情况
const logMessage = `正在伪造js开始的日志记录\n\n` +
`[${formattedTime}] [INF] BetterGenshinImpact.Service.ScriptService\n` +
`------------------------------\n\n` +
`[${formattedTime}] [INF] BetterGenshinImpact.Service.ScriptService\n` +
`→ 开始执行JS脚本: "${name}"`;
log.debug(logMessage);
}
if (isJs && !isStart) {
// 处理 isJs = true 且 isStart = false 的情况
const logMessage = `正在伪造js结束的日志记录\n\n` +
`[${formattedTime}] [INF] BetterGenshinImpact.Service.ScriptService\n` +
`→ 脚本执行结束: "${name}", 耗时: ${durationMinutes}${durationSeconds}\n\n` +
`[${formattedTime}] [INF] BetterGenshinImpact.Service.ScriptService\n` +
`------------------------------`;
log.debug(logMessage);
}
if (!isJs && isStart) {
// 处理 isJs = false 且 isStart = true 的情况
const logMessage = `正在伪造地图追踪开始的日志记录\n\n` +
`[${formattedTime}] [INF] BetterGenshinImpact.Service.ScriptService\n` +
`------------------------------\n\n` +
`[${formattedTime}] [INF] BetterGenshinImpact.Service.ScriptService\n` +
`→ 开始执行地图追踪任务: "${name}"`;
log.debug(logMessage);
}
if (!isJs && !isStart) {
// 处理 isJs = false 且 isStart = false 的情况
const logMessage = `正在伪造地图追踪结束的日志记录\n\n` +
`[${formattedTime}] [INF] BetterGenshinImpact.Service.ScriptService\n` +
`→ 脚本执行结束: "${name}", 耗时: ${durationMinutes}${durationSeconds}\n\n` +
`[${formattedTime}] [INF] BetterGenshinImpact.Service.ScriptService\n` +
`------------------------------`;
log.debug(logMessage);
}
}
(async function () {
//伪造js结束的日志记录
await fakeLog("消耗复活料理", true, false, 2333);
// 从 settings 中获取最大循环次数,如果未配置则默认为 2000
const maxLoopCount = parseInt(settings.maxLoopCount || 2000, 10);
// 从 settings 中获取排除时间(小时数),如果未配置则默认为 4
const excludeHour = parseInt(settings.excludeTimeRange || 4, 10);
// 检查最大循环次数是否为有效数字
if (isNaN(maxLoopCount) || maxLoopCount <= 0) {
log.error("无效的最大循环次数,请输入一个正整数");
return; // 退出整个程序
}
// 检查排除时间是否为有效数字
if (isNaN(excludeHour) || excludeHour < 0 || excludeHour > 23) {
log.error("无效的排除时间请输入一个0到23之间的整数");
return; // 退出整个程序
}
// 定义路径文件名
const pathFileName = "信仰之跃.json";
// 执行循环
for (let i = 0; i < maxLoopCount; i++) {
// 获取当前时间
const now = new Date();
const currentHour = now.getHours(); // 获取当前时间的小时数
const currentTime = now.toLocaleString(); // 获取完整的当前时间字符串
// 如果当前时间的小时数与排除时间相同,则退出循环
if (currentHour === excludeHour) {
log.info(`当前时间是 ${currentTime},与排除时间小时数相同,将退出循环`);
break; // 退出循环
}
// 记录当前时间
log.info(`正在执行循环第 ${i + 1} 次,总共 ${maxLoopCount} 次,当前时间: ${currentTime}`);
await fakeLog(`${i + 1}次信仰之跃.json`, false, true, 0);
// 运行路径追踪任务
await pathingScript.runFile(pathFileName);
await fakeLog(`${i + 1}次信仰之跃.json`, false, false, 0);
//捕获任务结束的信息同时等待115秒用来卡时间
try {
log.info('正在等待复活料理cd')
await sleep(115000);
} catch (error) {
log.error(`发生错误: ${error}`);
break; // 终止循环
}
}
//伪造一个js开始的日志记录
await fakeLog("消耗复活料理", true, true, 0);
})();