🐞 fix(gvg): 修复城池驻守和机器人刷新逻辑

This commit is contained in:
luying
2023-02-24 15:09:12 +08:00
parent 4b8aa6f803
commit 0271ac726a
8 changed files with 126 additions and 52 deletions
+21 -19
View File
@@ -899,57 +899,59 @@ export async function initHiddenDataSchedule(isInit: boolean, data?: HiddenDataM
// —————————————— 配表兼容 end —————————————— //
// —————————————— gvg start —————————————— //
let gvgBattleSecondJob: Job; // gvg每5秒的定时器
let gvgBattleCatapultJob: Job; // gvg投石车定时器
export async function initGVGConfigSchedule() {
let config = await GVGConfigModel.findConfig();
if(!config || nowSeconds() > config.scheduleTime) {
config = await createNewGVGConfig();
}
if(scheduledJobs[`gvgTeam`]) scheduledJobs[`gvgTeam`].cancel();
scheduleJob(`gvgTeam`, config.teamTime * 1000, async () => {
await pinus.app.rpc.guild.guildRemote.setGVGConfig.broadcast(config);
})
if(scheduledJobs[`gvgConfig`]) scheduledJobs[`gvgConfig`].cancel();
scheduleJob(`gvgConfig`, config.scheduleTime * 1000, createNewGVGConfig);
if(nowSeconds() > config.prepareTime) {
initLeaguePrepare();
} else {
if(scheduledJobs[`gvgPrepare`]) scheduledJobs[`gvgPrepare`].cancel();
scheduleJob(`gvgPrepare`, config.prepareTime * 1000, initLeaguePrepare);
}
scheduleJob('gvgFightSchedule', '0 0 22 * * ?', saveVestigeRankSchedule);
if(scheduledJobs[`gvgFight`]) scheduledJobs[`gvgFight`].cancel();
scheduleJob(`gvgFight`, '0 0 22 * * ?', saveVestigeRankSchedule);
let { startFightTime, endFightTime } = getFightTimeByPeriod(GVG_PERIOD.BATTLE, config.battleTime);
if(nowSeconds() > startFightTime && nowSeconds() < endFightTime) {
if(nowSeconds() > startFightTime - GVG.GVG_GUARD_START_TIME && nowSeconds() < endFightTime) {
if(gvgBattleSecondJob) gvgBattleSecondJob.cancel();
gvgBattleSecondJob = scheduleJob('gvgBattleSecondJob', '*/5 * * * * *', gvgBattleSecondSchedule);
gvgBattleSecondJob = scheduleJob('gvgBattleSecond', '*/5 * * * * *', gvgBattleSecondSchedule);
if(gvgBattleCatapultJob) gvgBattleCatapultJob.cancel();
gvgBattleCatapultJob = scheduleJob('gvgBattleCatapultJob', `*/${GVG.GVG_CATAPULT_TIME} * * * * *`, gvgBattleCatapult);
gvgBattleCatapultJob = scheduleJob('gvgBattleCatapult', `*/${GVG.GVG_CATAPULT_TIME} * * * * *`, gvgBattleCatapult);
} else {
scheduleJob(`gvgBattleStartSchedule`, (startFightTime - GVG.GVG_GUARD_START_TIME) * 1000, gvgBattleStartSchedule);
}
if(scheduledJobs[`gvgBattleEndSchedule`]) scheduledJobs[`gvgBattleEndSchedule`].cancel();
scheduleJob(`gvgBattleEndSchedule`, endFightTime * 1000, gvgBattleEndSchedule);
}
let gvgBattleSecondJob: Job; // gvg每5秒的定时器
let gvgBattleCatapultJob: Job; // gvg投石车定时器
// gvg激战期开始定时器
export async function gvgBattleStartSchedule() {
console.log('##### gvgBattleStartSchedule', Date.now())
if(gvgBattleSecondJob) gvgBattleSecondJob.cancel();
gvgBattleSecondJob = scheduleJob('gvgBattleSecondJob', '*/5 * * * * *', gvgBattleSecondSchedule);
gvgBattleSecondJob = scheduleJob('gvgBattleSecond', '*/5 * * * * *', gvgBattleSecondSchedule);
setTimeout(async () => {
console.log('############')
if(gvgBattleCatapultJob) gvgBattleCatapultJob.cancel();
gvgBattleCatapultJob = scheduleJob('gvgBattleCatapultJob', `*/${GVG.GVG_CATAPULT_TIME} * * * * *`, gvgBattleCatapult);
// 初始化投石车
let guildServers = pinus.app.getServersByType('guild');
if(guildServers.length > 0) {
pinus.app.rpc.guild.guildRemote.gvgBattleStart.toServer(getRandSingleEelm(guildServers).id);
}
}, 60);
// 初始化投石车
let guildServers = pinus.app.getServersByType('guild');
if(guildServers.length > 0) {
pinus.app.rpc.guild.guildRemote.gvgBattleStart.toServer(getRandSingleEelm(guildServers).id);
}
if(gvgBattleCatapultJob) gvgBattleCatapultJob.cancel();
gvgBattleCatapultJob = scheduleJob('gvgBattleCatapult', `*/${GVG.GVG_CATAPULT_TIME} * * * * *`, gvgBattleCatapult);
}