优化爱可菲厨艺机关README

This commit is contained in:
秋云
2025-06-19 05:29:13 +08:00
parent f74368ee8d
commit 9c8ef7caef
8 changed files with 277 additions and 247 deletions

View File

@@ -0,0 +1,114 @@
// 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 main() {
// 定义变量
const name1 = "伪造日志测试";
const name2 = "伪造地图追踪.json";
// 调用 fakeLog 函数,输出 JavaScript 的结尾日志,耗时 1.234 秒
const duration1 = 1234; // 1.234 秒
await fakeLog(name1, true, false, duration1);
// 输出地图追踪开始的日志
const duration2 = 0; // 地图追踪开始时,耗时为 0
await fakeLog(name2, false, true, duration2);
// 等待5秒
await sleep(5000);
log.info('模拟地图追踪运行完成')
// 调用 fakeLog 函数,输出地图追踪结束的日志,耗时 5.000 秒
const duration3 = 5000; // 5.000 秒
await fakeLog(name2, false, false, duration3);
// 调用 fakeLog 函数,输出 JavaScript 开始的日志
const duration4 = 0; // JS 开始时,耗时为 0
await fakeLog(name1, true, true, duration4);
}
// 调用主函数
main();

View File

@@ -0,0 +1,14 @@
{
"manifest_version": 1,
"name": "伪造日志测试",
"version": "1.0",
"bgi_version": "0.44.0",
"description": "",
"authors": [
{
"name": "mno"
}
],
"settings_ui": "settings.json",
"main": "main.js"
}

View File

@@ -0,0 +1,59 @@
[
{
"name": "operationType",
"type": "select",
"label": "操作模式(默认:生成路径组文件)",
"options": [
"生成路径组文件",
"执行路径组文件1",
"执行路径组文件2",
"执行路径组文件3",
"输出地图追踪文件"
]
},
{
"name": "excludeTagsForPathGroup1",
"type": "input-text",
"label": "路径组1要排除的标签传奇水免次数盾或高危"
},
{
"name": "selectTagsForPathGroup2",
"type": "input-text",
"label": "路径组2要选择的标签传奇水免次数盾或高危"
},
{
"name": "selectTagsForPathGroup3",
"type": "input-text",
"label": "路径组3要选择的标签传奇水免次数盾或高危"
},
{
"name": "disableAutoPickup",
"type": "checkbox",
"label": "是否禁用自动拾取(默认不禁用)"
},
{
"name": "disableRouteCdCheck",
"type": "checkbox",
"label": "是否禁用路线CD检测默认不禁用"
},
{
"name": "requiredMonsterCount",
"type": "input-text",
"label": "目标怪物数量默认405必须为0以上整数"
},
{
"name": "minSecPerMonster",
"type": "input-text",
"label": "最低秒均(秒均=摩拉/时间默认0.1"
},
{
"name": "excludeTagsForAll",
"type": "input-text",
"label": "全局排除关键词(使用中文分号分隔)"
},
{
"name": "accountName",
"type": "input-text",
"label": "账户名,用于区分不同的账户"
}
]