优化爱可菲厨艺机关README
This commit is contained in:
114
example/js/伪造日志测试/main.js
Normal file
114
example/js/伪造日志测试/main.js
Normal 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();
|
||||
14
example/js/伪造日志测试/manifest.json
Normal file
14
example/js/伪造日志测试/manifest.json
Normal 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"
|
||||
}
|
||||
59
example/js/伪造日志测试/settings.json
Normal file
59
example/js/伪造日志测试/settings.json
Normal 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": "账户名,用于区分不同的账户"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user