feat: 兽肉好感记录当日运行次数及刷新时间 (#2751)

This commit is contained in:
起个名字好难的喵
2026-01-20 23:42:35 +08:00
committed by GitHub
parent 0aa140f993
commit 15d08d1554
3 changed files with 77 additions and 7 deletions

View File

@@ -0,0 +1,4 @@
{
"alreadyRunCount": 0,
"nextRefreshTime": 1768939200000
}

View File

@@ -147,6 +147,43 @@
}
}
// 获取下一个凌晨 4 点 (UTC+8) 的时间戳
function getNextRefreshTimestamp() {
const OFFSET = 8 * 60 * 60 * 1000; // UTC+8 偏移量
let now = new Date();
// 计算当前的 UTC+8 时间
let utc8Now = new Date(now.getTime() + OFFSET);
// 构造今日 UTC+8 的凌晨 4 点
let refresh = new Date(utc8Now);
refresh.setUTCHours(REFRESH_HOUR, 0, 0, 0);
// 如果当前时间已经过了今天的 4 点,则刷新时间定在明天 4 点
if (utc8Now.getTime() >= refresh.getTime()) {
refresh.setUTCDate(refresh.getUTCDate() + 1);
}
// 转回标准时间戳存储
return refresh.getTime() - OFFSET;
}
// 读取运行记录
function readRecord() {
try {
let content = file.readTextSync(RECORD_PATH);
return JSON.parse(content);
} catch (e) {
// 防止文件损坏导致报错
return { alreadyRunCount: 0, nextRefreshTime: getNextRefreshTimestamp() };
}
}
// 写入运行记录
function saveRecord(record) {
file.writeText(RECORD_PATH, JSON.stringify(record, null, 2));
}
// 好感核心函数
async function AutoFriendship(runTimes, statueTimes, getMeatMode, delayTime, startTime, ocrTimeout) {
for (let i = 0; i < runTimes; i++) {
@@ -184,6 +221,8 @@
if (ocrStatus) {
log.info(`当前次数:${i + 1}/${runTimes}`);
record.alreadyRunCount++;
saveRecord(record);
// 开启急速拾取
dispatcher.addTimer(new RealtimeTimer("AutoPick", {
@@ -285,7 +324,6 @@
log.info(message);
await sleep(500);
}
log.info('兽肉好感开始...');
// 切换队伍
if (!!settings.partyName) {
@@ -306,6 +344,30 @@
}
const startTime = Date.now();
await AutoFriendship(runTimes, statueTimes, getMeatMode, delayTime, startTime, ocrTimeout);
// 运行记录相关参数时区为UTC+8
const RECORD_PATH = "assets/run_record.json";
const REFRESH_HOUR = 4;
let record = readRecord();
// 1. 检查是否超过刷新时间
if (startTime >= record.nextRefreshTime) {
log.info(">> 检测到已过刷新时间,重置运行次数...");
record.alreadyRunCount = 0;
record.nextRefreshTime = getNextRefreshTimestamp();
}
// 2. 计算需要运行的次数
// 逻辑:如果没过刷新时间且 >= runTimes 则跳过;如果 < 则运行差值;如果超过了(上面已重置)则运行目标次数
let timesToRun = runTimes - record.alreadyRunCount;
if (timesToRun <= 0) {
log.info(`>> 今日已完成 ${record.alreadyRunCount} 次,无需运行。`);
saveRecord(record); // 更新一下可能的刷新时间戳
return;
} else {
log.info(`>> 今日已完成 ${record.alreadyRunCount} 次,还需运行 ${timesToRun}`);
}
log.info('兽肉好感开始...');
await AutoFriendship(timesToRun, statueTimes, getMeatMode, delayTime, startTime, ocrTimeout);
})();

View File

@@ -1,18 +1,22 @@
{
"manifest_version": 1,
"name": "兽肉好感:自动好感度&刷两只鳄鱼兽肉&卡时间",
"version": "1.4.2",
"version": "1.4.3",
"bgi_version": "0.44.6",
"tags": ["好感", "兽肉", "突发事件"],
"tags": [
"好感",
"兽肉",
"突发事件"
],
"description": "通过突发事件:张牙舞爪的恶党刷兽肉并顺带获取好感度好感度超过10次后不再获取请使用满员好感度队伍并为全体队伍角色配置相应的战斗策略",
"authors": [
{
"name": "起个名字好难的喵",
"links":"https://github.com/MisakaAldrich"
"name": "起个名字好难的喵",
"links": "https://github.com/MisakaAldrich"
},
{
"name": "柒叶子",
"links":"https://github.com/5117600049"
"links": "https://github.com/5117600049"
}
],
"settings_ui": "settings.json",