后台:军团活动debug
This commit is contained in:
@@ -5,20 +5,22 @@ import { getEvent } from '../../../services/eventSercive';
|
|||||||
import { resResult } from '../../../pubUtils/util';
|
import { resResult } from '../../../pubUtils/util';
|
||||||
import { STATUS } from '../../../consts/statusCode';
|
import { STATUS } from '../../../consts/statusCode';
|
||||||
import { GMMailModel } from '../../../db/GMMail';
|
import { GMMailModel } from '../../../db/GMMail';
|
||||||
import { setGmMails } from '../../../pubUtils/gmData/gmDataUtil';
|
import { delGuildActivityRank, getRoleOnlineInfo } from '../../../services/redisService';
|
||||||
import { getRoleOnlineInfo } from '../../../services/redisService';
|
|
||||||
import { SendMailFun } from '../../../services/mailService';
|
import { SendMailFun } from '../../../services/mailService';
|
||||||
import { GM_MAIL_TYPE } from '../../../consts';
|
import { GM_MAIL_TYPE } from '../../../consts';
|
||||||
import { RewardInter } from '../../../pubUtils/interface';
|
import { RewardInter } from '../../../pubUtils/interface';
|
||||||
import { MarqueeModel } from '../../../db/Marquee';
|
import { MarqueeModel } from '../../../db/Marquee';
|
||||||
import { ServerlistModel } from '../../../db/Serverlist';
|
import { ServerlistModel } from '../../../db/Serverlist';
|
||||||
import { getWorldChannelSid } from '../../../services/chatService';
|
import { pushCurrentTime } from '../../../services/chatService';
|
||||||
import { MaintenanceModel } from '../../../db/Maintenance';
|
import { MaintenanceModel } from '../../../db/Maintenance';
|
||||||
import { initMaintenance, stopMaintenance } from '../../../services/gmService';
|
import { initMaintenance, stopMaintenance } from '../../../services/gmService';
|
||||||
import { checkActivityEditable, checkActivityGroupType } from '../../../services/activity/activityService';
|
import { checkActivityEditable, checkActivityGroupType } from '../../../services/activity/activityService';
|
||||||
import { ActivityModel } from '../../../db/Activity';
|
import { ActivityModel } from '../../../db/Activity';
|
||||||
import { ActivityGroupModel } from '../../../db/ActivityGroup';
|
import { ActivityGroupModel } from '../../../db/ActivityGroup';
|
||||||
import { ActivityGroupTypeModel } from '../../../db/ActivityGroupType';
|
import { ActivityGroupTypeModel } from '../../../db/ActivityGroupType';
|
||||||
|
import { GuildActivityCityModel } from '../../../db/GuildActivityCity';
|
||||||
|
import { GuildActivityRecordModel } from '../../../db/GuildActivityRec';
|
||||||
|
import { getTimeFunM } from '../../../pubUtils/timeUtil';
|
||||||
export default function (app: Application) {
|
export default function (app: Application) {
|
||||||
return new GmHandler(app);
|
return new GmHandler(app);
|
||||||
}
|
}
|
||||||
@@ -335,7 +337,49 @@ export class GmHandler {
|
|||||||
return resResult(STATUS.SUCCESS)
|
return resResult(STATUS.SUCCESS)
|
||||||
}
|
}
|
||||||
|
|
||||||
async setGuildActivityDebug(msg: { startActivity: number, }, session: BackendSession) {
|
/**
|
||||||
// 1. 将军团活动的时间设置到
|
* 开启军团活动到拍卖行debug
|
||||||
|
* @param msg
|
||||||
|
* @param session
|
||||||
|
*/
|
||||||
|
async setGuildActivityDebug(msg: { aid: number, day: number, startActivity: number, endActivity: number, startGuildAuction: number, endGuildAuction: number, startWorldAuction: number, endWorldAuction: number }, session: BackendSession) {
|
||||||
|
const { aid, day, startActivity = 0, endActivity = 0, startGuildAuction = 0, endGuildAuction = 0, startWorldAuction = 0, endWorldAuction = 0 } = msg;
|
||||||
|
const uid = session.get('uid');
|
||||||
|
if(aid == undefined || day == undefined ) {
|
||||||
|
return resResult(STATUS.WRONG_PARMS);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置字典
|
||||||
|
let now = new Date();
|
||||||
|
|
||||||
|
let startTimes = await pinus.app.rpc.guild.guildActivityRemote.setDicGuildActivity.broadcast(now.getTime(), aid, startActivity, endActivity);
|
||||||
|
await pinus.app.rpc.systimer.systimerRemote.setDicGuildActivity.broadcast(now.getTime(), aid, startActivity, endActivity);
|
||||||
|
await pinus.app.rpc.guild.guildActivityRemote.setDicAuctionTime.broadcast(startTimes[0], endActivity, startGuildAuction, endGuildAuction, startWorldAuction, endWorldAuction);
|
||||||
|
await pinus.app.rpc.systimer.systimerRemote.setDicAuctionTime.broadcast(startTimes[0], endActivity, startGuildAuction, endGuildAuction, startWorldAuction, endWorldAuction);
|
||||||
|
await pinus.app.rpc.guild.guildActivityRemote.setDay.broadcast(day);
|
||||||
|
await pinus.app.rpc.systimer.systimerRemote.setDay.broadcast(day);
|
||||||
|
|
||||||
|
|
||||||
|
// 清空旧数据
|
||||||
|
if (day <= 2) {
|
||||||
|
await GuildActivityCityModel.deleteMany({});
|
||||||
|
}
|
||||||
|
if(aid != 0) await delGuildActivityRank(aid);
|
||||||
|
await GuildActivityRecordModel.updateTodayInfo({ status: 2 });
|
||||||
|
|
||||||
|
// 开启定时器
|
||||||
|
await pinus.app.rpc.systimer.systimerRemote.setAuctionSchedule.broadcast();
|
||||||
|
await pinus.app.rpc.systimer.systimerRemote.setGuildActivitySchedule.broadcast();
|
||||||
|
// 向客户端发送时间
|
||||||
|
let time = <number>getTimeFunM().getTimeWithWeek(day, 20, 0, 0) - startActivity;
|
||||||
|
await pushCurrentTime(time);
|
||||||
|
return resResult(STATUS.SUCCESS, {
|
||||||
|
startActivity: startTimes[0],
|
||||||
|
endActivity: startTimes[0] + endActivity * 1000,
|
||||||
|
startGuildAuction: startTimes[0] + endActivity * 1000 + startGuildAuction * 1000,
|
||||||
|
endGuildAuction: startTimes[0] + endActivity * 1000 + startGuildAuction * 1000 + endGuildAuction * 1000,
|
||||||
|
startWorldAuction: startTimes[0] + endActivity * 1000 + startGuildAuction * 1000 + endGuildAuction * 1000 + startWorldAuction * 1000,
|
||||||
|
endWorldAuction: startTimes[0] + endActivity * 1000 + startGuildAuction * 1000 + endGuildAuction * 1000 + startWorldAuction * 1000 + endWorldAuction * 1000,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -193,7 +193,8 @@ export class GuildHandler {
|
|||||||
if(!bossInstance) return resResult(STATUS.GUILD_SCRIPT_NOT_OPENED);
|
if(!bossInstance) return resResult(STATUS.GUILD_SCRIPT_NOT_OPENED);
|
||||||
|
|
||||||
let { myEncourageCnt } = await refreshUserGuildOfBoss(userGuild);
|
let { myEncourageCnt } = await refreshUserGuildOfBoss(userGuild);
|
||||||
let costGold = (myEncourageCnt + count - dicParam.GUILD_BOSS.GUILD_BOSS_ENCOURAGE_FREECOUNT) * dicParam.GUILD_BOSS.GUILD_BOSS_ENCOURAGE_COST;
|
let freeCount = dicParam.GUILD_BOSS.GUILD_BOSS_ENCOURAGE_FREECOUNT - myEncourageCnt > 0? dicParam.GUILD_BOSS.GUILD_BOSS_ENCOURAGE_FREECOUNT - myEncourageCnt: 0;
|
||||||
|
let costGold = (count - freeCount) * dicParam.GUILD_BOSS.GUILD_BOSS_ENCOURAGE_COST;
|
||||||
if(costGold < 0) costGold = 0;
|
if(costGold < 0) costGold = 0;
|
||||||
let { gold } = await RoleModel.findByRoleId(roleId, 'gold');
|
let { gold } = await RoleModel.findByRoleId(roleId, 'gold');
|
||||||
if(gold < costGold) return resResult(STATUS.BATTLE_GOLD_NOT_ENOUGH);
|
if(gold < costGold) return resResult(STATUS.BATTLE_GOLD_NOT_ENOUGH);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Application, ChannelService, HandlerService, } from 'pinus';
|
import { Application, ChannelService, HandlerService, } from 'pinus';
|
||||||
import { sendAllGuildRanks, sendGuildActEndMsg, calWoodenHorseAndSend, sendRaceStartMsg } from '../../../services/guildActivityService';
|
import { sendAllGuildRanks, sendGuildActEndMsg, calWoodenHorseAndSend, sendRaceStartMsg, setDicGuildActivity, setDicAuctionTime } from '../../../services/guildActivityService';
|
||||||
import { gameData } from '../../../pubUtils/data';
|
import { gameData } from '../../../pubUtils/data';
|
||||||
import { setWeek } from '../../../pubUtils/timeUtil';
|
import { setWeek } from '../../../pubUtils/timeUtil';
|
||||||
|
|
||||||
@@ -65,6 +65,22 @@ export class GuildActivityRemote {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 改变字典表中的军团活动开始时间&持续时间
|
||||||
|
* @param {number} aid 活动
|
||||||
|
* @param {number} startSeconds 从现在开始几秒后开启活动
|
||||||
|
* @param {number} endSeconds 从开始之后几秒后结束活动
|
||||||
|
*/
|
||||||
|
async setDicGuildActivity(now: number, aid: number, startSeconds: number, endSeconds: number) {
|
||||||
|
return setDicGuildActivity(now, aid, startSeconds, endSeconds);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 改变字典表中的拍卖行时间
|
||||||
|
*/
|
||||||
|
async setDicAuctionTime(startTime: number, endActivity: number, startGuild: number, endGuild: number, startWorld: number, endWorld: number) {
|
||||||
|
setDicAuctionTime(startTime, endActivity, startGuild, endGuild, startWorld, endWorld);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* !! 注意,这条函数会改变内存时间,影响甚大,请考虑清楚后使用
|
* !! 注意,这条函数会改变内存时间,影响甚大,请考虑清楚后使用
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
import { Application, ChannelService } from 'pinus';
|
import { Application, ChannelService } from 'pinus';
|
||||||
import { resetPvpSeasonTime, setPvpDefResult, guildActivityStart, gateActivityEnd, cityActivityEnd, raceActivityEnd } from '../../../services/timeTaskService';
|
import { resetPvpSeasonTime, setPvpDefResult, guildActivityStart, gateActivityEnd, cityActivityEnd, raceActivityEnd, guildActivitySchedule, auctionSchedule } from '../../../services/timeTaskService';
|
||||||
import PvpDefenseType from '../../../db/PvpDefense';
|
import PvpDefenseType from '../../../db/PvpDefense';
|
||||||
import { DicGuildActivity } from '../../../pubUtils/dictionary/DicGuildActivity';
|
import { DicGuildActivity } from '../../../pubUtils/dictionary/DicGuildActivity';
|
||||||
import { reloadResources } from '../../../pubUtils/data';
|
import { reloadResources } from '../../../pubUtils/data';
|
||||||
import { setMarquee, cancelMarquee } from '../../../services/gmService';
|
import { setMarquee, cancelMarquee } from '../../../services/gmService';
|
||||||
|
import { setDicAuctionTime, setDicGuildActivity } from '../../../services/guildActivityService';
|
||||||
|
import { setWeek } from '../../../pubUtils/timeUtil';
|
||||||
|
|
||||||
export default function (app: Application) {
|
export default function (app: Application) {
|
||||||
return new SystimerRemote(app);
|
return new SystimerRemote(app);
|
||||||
@@ -59,4 +61,36 @@ export class SystimerRemote {
|
|||||||
public async cancelMarquee(code: string) {
|
public async cancelMarquee(code: string) {
|
||||||
return await cancelMarquee(code);
|
return await cancelMarquee(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 改变字典表中的军团活动开始时间&持续时间
|
||||||
|
* @param {number} aid 活动
|
||||||
|
* @param {number} startSeconds 从现在开始几秒后开启活动
|
||||||
|
* @param {number} endSeconds 从开始之后几秒后结束活动
|
||||||
|
*/
|
||||||
|
public async setDicGuildActivity(now: number, aid: number, startSeconds: number, endSeconds: number) {
|
||||||
|
setDicGuildActivity(now, aid, startSeconds, endSeconds);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 改变字典表中的拍卖行时间
|
||||||
|
*/
|
||||||
|
public async setDicAuctionTime(startTime: number, endActivity: number, startGuild: number, endGuild: number, startWorld: number, endWorld: number) {
|
||||||
|
setDicAuctionTime(startTime, endActivity, startGuild, endGuild, startWorld, endWorld);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async setGuildActivitySchedule() {
|
||||||
|
await guildActivitySchedule();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async setAuctionSchedule() {
|
||||||
|
auctionSchedule();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* !! 注意,这条函数会改变内存时间,影响甚大,请考虑清楚后使用
|
||||||
|
*/
|
||||||
|
async setDay(week: number) {
|
||||||
|
setWeek(week);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { LOT_CODE_LEN, AUCTION_STAGE, AUCTION_TIME, DIVIDEND_CODE_LEN, DIVIDEND_
|
|||||||
import { DividendRec, ItemReward } from "../domain/dbGeneral";
|
import { DividendRec, ItemReward } from "../domain/dbGeneral";
|
||||||
import { genCode } from '../pubUtils/util';
|
import { genCode } from '../pubUtils/util';
|
||||||
import { LotModel, LotParam } from '../db/Lot';
|
import { LotModel, LotParam } from '../db/Lot';
|
||||||
import { getTimeFunD } from '../pubUtils/timeUtil';
|
import { getCurDay, getTimeFunD, getTimeFunM } from '../pubUtils/timeUtil';
|
||||||
import { gameData, getGoodById } from '../pubUtils/data';
|
import { gameData, getGoodById } from '../pubUtils/data';
|
||||||
import { DividendParam, DividendType } from '../db/Dividend';
|
import { DividendParam, DividendType } from '../db/Dividend';
|
||||||
import { sendMailByContent } from './mailService';
|
import { sendMailByContent } from './mailService';
|
||||||
@@ -13,6 +13,7 @@ import { Member } from '../domain/battleField/guildActivity';
|
|||||||
import * as dicParam from '../pubUtils/dicParam';
|
import * as dicParam from '../pubUtils/dicParam';
|
||||||
import { RewardInter } from '../pubUtils/interface';
|
import { RewardInter } from '../pubUtils/interface';
|
||||||
import { errlogger } from '../util/logger';
|
import { errlogger } from '../util/logger';
|
||||||
|
import { pushCurrentTime } from './chatService';
|
||||||
|
|
||||||
// ! 获取底价,假数据
|
// ! 获取底价,假数据
|
||||||
export function getBasePrice(gid: number, count: number) {
|
export function getBasePrice(gid: number, count: number) {
|
||||||
@@ -228,6 +229,13 @@ export async function startGuildAuction() {
|
|||||||
const begin = todayGuildBegin();
|
const begin = todayGuildBegin();
|
||||||
await LotModel.updateLotsStageByBegin(begin, AUCTION_STAGE.GUILD);
|
await LotModel.updateLotsStageByBegin(begin, AUCTION_STAGE.GUILD);
|
||||||
await DividendModel.updateDividendsStatus(begin, DIVIDEND_STATUS.ING);
|
await DividendModel.updateDividendsStatus(begin, DIVIDEND_STATUS.ING);
|
||||||
|
|
||||||
|
if(dicParam.SERVER_DEBUG_MODE.CURRENT_TIME == 1) {
|
||||||
|
let day = getCurDay();
|
||||||
|
let time = <number>getTimeFunM().getTimeWithWeek(day, 20, 20, 0);
|
||||||
|
await pushCurrentTime(time);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('startGuildAuction err: ', e);
|
console.error('startGuildAuction err: ', e);
|
||||||
@@ -242,6 +250,12 @@ export async function startWorldAuction() {
|
|||||||
await LotModel.setLotSoldByBegin(begin);
|
await LotModel.setLotSoldByBegin(begin);
|
||||||
await LotModel.updateUnSoldLotsStageByBegin(begin, AUCTION_STAGE.WORLD);
|
await LotModel.updateUnSoldLotsStageByBegin(begin, AUCTION_STAGE.WORLD);
|
||||||
await DividendModel.updateDividendsStatus(begin, DIVIDEND_STATUS.END);
|
await DividendModel.updateDividendsStatus(begin, DIVIDEND_STATUS.END);
|
||||||
|
|
||||||
|
if(dicParam.SERVER_DEBUG_MODE.CURRENT_TIME == 1) {
|
||||||
|
let day = getCurDay();
|
||||||
|
let time = <number>getTimeFunM().getTimeWithWeek(day, 20, 40, 0);
|
||||||
|
await pushCurrentTime(time);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('startWorldAuction err: ', e);
|
console.error('startWorldAuction err: ', e);
|
||||||
@@ -255,6 +269,12 @@ export async function stopAuction() {
|
|||||||
const begin = todayGuildBegin();
|
const begin = todayGuildBegin();
|
||||||
await LotModel.setLotSoldByBegin(begin);
|
await LotModel.setLotSoldByBegin(begin);
|
||||||
await LotModel.updateLotsStageByBegin(begin, AUCTION_STAGE.END);
|
await LotModel.updateLotsStageByBegin(begin, AUCTION_STAGE.END);
|
||||||
|
|
||||||
|
if(dicParam.SERVER_DEBUG_MODE.CURRENT_TIME == 1) {
|
||||||
|
let day = getCurDay();
|
||||||
|
let time = <number>getTimeFunM().getTimeWithWeek(day, 22, 0, 0);
|
||||||
|
await pushCurrentTime(time);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('stopAuction err: ', e);
|
console.error('stopAuction err: ', e);
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import { GroupMessageParam, GroupMessageType } from '../db/GroupMessage';
|
|||||||
import { genCode, resResult } from '../pubUtils/util';
|
import { genCode, resResult } from '../pubUtils/util';
|
||||||
import { pinus } from 'pinus';
|
import { pinus } from 'pinus';
|
||||||
import { CHANNEL_PREFIX, MSG_CODE_LEN, MSG_STATUS, ON_PRIVATE_MSG_ROUTE, MSG_TYPE, MSG_SOURCE } from '../consts';
|
import { CHANNEL_PREFIX, MSG_CODE_LEN, MSG_STATUS, ON_PRIVATE_MSG_ROUTE, MSG_TYPE, MSG_SOURCE } from '../consts';
|
||||||
import { getRoleOnlineInfo } from './redisService';
|
import { getAllServers, getRoleOnlineInfo } from './redisService';
|
||||||
import { ChatInfoModel } from '../db/ChatInfo';
|
import { ChatInfoModel } from '../db/ChatInfo';
|
||||||
import { channelServer } from './chatChannelService';
|
import { channelServer } from './chatChannelService';
|
||||||
import { AccuseRecModel, AccueseParam } from '../db/AccuseRec';
|
import { AccuseRecModel, AccueseParam } from '../db/AccuseRec';
|
||||||
@@ -398,3 +398,12 @@ export async function checkFilterWords(word: string) {
|
|||||||
|
|
||||||
return hasBlock;
|
return hasBlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function pushCurrentTime(time: number) {
|
||||||
|
let serverlists = await getAllServers()
|
||||||
|
for(let serverId of serverlists) {
|
||||||
|
let roomId = groupRoomId(CHANNEL_PREFIX.WORLD, serverId);
|
||||||
|
const channelSid = await channelServer(roomId);
|
||||||
|
await pinus.app.rpc.chat.chatRemote.pushCurrentTime.toServer(channelSid, serverId, time);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@ import { reduceCe } from "../pubUtils/util";
|
|||||||
import { GUILDACTIVITY } from "../pubUtils/dicParam";
|
import { GUILDACTIVITY } from "../pubUtils/dicParam";
|
||||||
import { gameData, getGuildAuctionRewards, getCityActivityRewards } from "../pubUtils/data";
|
import { gameData, getGuildAuctionRewards, getCityActivityRewards } from "../pubUtils/data";
|
||||||
import { getCurDay, nowSeconds, getTimeFun } from "../pubUtils/timeUtil";
|
import { getCurDay, nowSeconds, getTimeFun } from "../pubUtils/timeUtil";
|
||||||
import { GUILD_ACTIVITY_STATUS, GET_POINT_WAYS, GUILD_ACTIVITY_TYPE, REDIS_KEY, AUCTION_SOURCE, MAIL_TYPE, CITY_STATUS, DEBUG_MAGIC_WORD, GUILD_POINT_WAYS, TASK_TYPE } from "../consts";
|
import { GUILD_ACTIVITY_STATUS, GET_POINT_WAYS, GUILD_ACTIVITY_TYPE, REDIS_KEY, AUCTION_SOURCE, MAIL_TYPE, CITY_STATUS, DEBUG_MAGIC_WORD, GUILD_POINT_WAYS, TASK_TYPE, AUCTION_TIME } from "../consts";
|
||||||
import { Record, UserGuildActivityRecModel } from "../db/UserGuildActivityRec";
|
import { Record, UserGuildActivityRecModel } from "../db/UserGuildActivityRec";
|
||||||
import { GateMembersRec, CityParam, Member, WoodenHorse } from "../domain/battleField/guildActivity";
|
import { GateMembersRec, CityParam, Member, WoodenHorse } from "../domain/battleField/guildActivity";
|
||||||
import { DicGuildActivity } from "../pubUtils/dictionary/DicGuildActivity";
|
import { DicGuildActivity } from "../pubUtils/dictionary/DicGuildActivity";
|
||||||
@@ -106,6 +106,7 @@ export function getAllGuildActivityStatus() {
|
|||||||
|
|
||||||
export function getGuildActivityByDic(dicGuildActivity: DicGuildActivity) {
|
export function getGuildActivityByDic(dicGuildActivity: DicGuildActivity) {
|
||||||
let t = getTimeFun();
|
let t = getTimeFun();
|
||||||
|
console.log('*********', dicGuildActivity.startTime, dicGuildActivity.startMinute, dicGuildActivity.startSeconds)
|
||||||
let startTime = <number>t.getTimeWithHour(dicGuildActivity.startTime, dicGuildActivity.startMinute, dicGuildActivity.startSeconds);
|
let startTime = <number>t.getTimeWithHour(dicGuildActivity.startTime, dicGuildActivity.startMinute, dicGuildActivity.startSeconds);
|
||||||
let countdownTime = <number>t.getTimeWithHour(dicGuildActivity.countDown);
|
let countdownTime = <number>t.getTimeWithHour(dicGuildActivity.countDown);
|
||||||
let { duringTime, openDay } = dicGuildActivity;
|
let { duringTime, openDay } = dicGuildActivity;
|
||||||
@@ -736,3 +737,49 @@ export async function sendPopUpActivityData(guildCode: string, serverId: number,
|
|||||||
let chatSid = await getGuildChannelSid(guildCode);
|
let chatSid = await getGuildChannelSid(guildCode);
|
||||||
pinus.app.rpc.chat.guildRemote.sendPopUpActivity.toServer(chatSid, guildCode, data);
|
pinus.app.rpc.chat.guildRemote.sendPopUpActivity.toServer(chatSid, guildCode, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* !! 注意,这条函数会改变内存中的字典表,仅用于测试中使用
|
||||||
|
* 改变字典表中的军团活动开始时间&持续时间
|
||||||
|
* @param {number} aid 活动
|
||||||
|
* @param {number} startSeconds 从现在开始几秒后开启活动
|
||||||
|
* @param {number} endSeconds 从开始之后几秒后结束活动
|
||||||
|
*/
|
||||||
|
export async function setDicGuildActivity(now: number, aid: number, startSeconds: number, endSeconds: number) {
|
||||||
|
let startTime = new Date(now + startSeconds * 1000);
|
||||||
|
if(aid != 0) {
|
||||||
|
let guildActivity = gameData.guildActivity;
|
||||||
|
let cur = guildActivity.get(aid);
|
||||||
|
|
||||||
|
cur.startMinute = startTime.getMinutes();
|
||||||
|
cur.startTime = startTime.getHours();
|
||||||
|
cur.startSeconds = startTime.getSeconds();
|
||||||
|
cur.duringTime = endSeconds;
|
||||||
|
}
|
||||||
|
return startTime.getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function setDicAuctionTime(startTime: number, endActivity: number, startGuild: number, endGuild: number, startWorld: number, endWorld: number) {
|
||||||
|
|
||||||
|
console.log('********* setDicAuctionTime', startTime, endActivity, startGuild, endGuild, startWorld, endWorld);
|
||||||
|
let startGuildDate = new Date(startTime + endActivity * 1000 + startGuild * 1000);
|
||||||
|
let endGuildDate = new Date(startGuildDate.getTime() + endGuild * 1000);
|
||||||
|
let startWorldDate = new Date(endGuildDate.getTime() + startWorld * 1000);
|
||||||
|
let endWorldDate = new Date(startWorldDate.getTime() + endWorld * 1000);
|
||||||
|
|
||||||
|
|
||||||
|
console.log('********* setDicAuctionTime', startGuildDate, endGuildDate, startWorldDate, endWorldDate);
|
||||||
|
|
||||||
|
gameData.auctionTime.set(AUCTION_TIME.GUILD_PREVIEW, formatTime(new Date(startTime)));
|
||||||
|
gameData.auctionTime.set(AUCTION_TIME.GUILD_OPEN, formatTime(startGuildDate));
|
||||||
|
gameData.auctionTime.set(AUCTION_TIME.GUILD_CLOSE, formatTime(endGuildDate));
|
||||||
|
gameData.auctionTime.set(AUCTION_TIME.WORLD_PREVIEW, formatTime(endGuildDate));
|
||||||
|
gameData.auctionTime.set(AUCTION_TIME.WORLD_OPEN, formatTime(startWorldDate));
|
||||||
|
gameData.auctionTime.set(AUCTION_TIME.WORLD_CLOSE, formatTime(endWorldDate));
|
||||||
|
|
||||||
|
console.log('*********** setDicAuctionTime', gameData.auctionTime)
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatTime(date: Date) {
|
||||||
|
return { hour: date.getHours(), minute: date.getMinutes(), seconds: date.getSeconds() }
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
import { scheduleJob, Job, } from 'node-schedule';
|
import { scheduleJob, Job, } from 'node-schedule';
|
||||||
import { PVPConfigModel } from '../db/SystemConfig';
|
import { PVPConfigModel } from '../db/SystemConfig';
|
||||||
import PvpDefenseType, { PvpDefenseModel } from '../db/PvpDefense';
|
import PvpDefenseType, { PvpDefenseModel } from '../db/PvpDefense';
|
||||||
import { PVP } from '../pubUtils/dicParam';
|
import { PVP, SERVER_DEBUG_MODE } from '../pubUtils/dicParam';
|
||||||
import { nowSeconds, getTimeFun } from '../pubUtils/timeUtil';
|
import { nowSeconds, getTimeFun } from '../pubUtils/timeUtil';
|
||||||
import { getPvpGkWarIds, getPvpRankRewards, getPvpHeroRewards, getResultMaxRank, getTodayGuildActivity, gameData } from '../pubUtils/data';
|
import { getPvpGkWarIds, getPvpRankRewards, getPvpHeroRewards, getResultMaxRank, getTodayGuildActivity, gameData } from '../pubUtils/data';
|
||||||
import { deepCopy, getRandSingleEelm } from '../pubUtils/util';
|
import { deepCopy, getRandSingleEelm } from '../pubUtils/util';
|
||||||
@@ -36,6 +36,7 @@ var seasonMakeRewardTimJobId: Job;
|
|||||||
var warJobId: Job;
|
var warJobId: Job;
|
||||||
var seasonRefreshTimeJobId: Job;
|
var seasonRefreshTimeJobId: Job;
|
||||||
let guildWeeklyJobId: Job;
|
let guildWeeklyJobId: Job;
|
||||||
|
let guildActStartJobId: Job; // 军团活动开启后每10(or 1)秒循环的定时任务,到结束活动清除
|
||||||
let guildActSecondsJobId: Job; // 军团活动开启后每10(or 1)秒循环的定时任务,到结束活动清除
|
let guildActSecondsJobId: Job; // 军团活动开启后每10(or 1)秒循环的定时任务,到结束活动清除
|
||||||
let guildActEndJobId: Job; // 军团活动开启后每10(or 1)秒循环的定时任务,到结束活动清除
|
let guildActEndJobId: Job; // 军团活动开启后每10(or 1)秒循环的定时任务,到结束活动清除
|
||||||
let pvpMakeRewardInterval = null;
|
let pvpMakeRewardInterval = null;
|
||||||
@@ -342,13 +343,18 @@ export async function reportOnlineSchedule() {
|
|||||||
/**
|
/**
|
||||||
* 军团活动,每晚8点开启
|
* 军团活动,每晚8点开启
|
||||||
*/
|
*/
|
||||||
async function guildActivitySchedule() {
|
export async function guildActivitySchedule() {
|
||||||
/***********guildActivitySchedule***********/
|
/***********guildActivitySchedule***********/
|
||||||
|
if (guildActStartJobId) {
|
||||||
|
guildActStartJobId.cancel();
|
||||||
|
}
|
||||||
|
|
||||||
let dicGuildActivity = getTodayGuildActivity();
|
let dicGuildActivity = getTodayGuildActivity();
|
||||||
await delGuildActivityRank(dicGuildActivity.id);
|
await delGuildActivityRank(dicGuildActivity.id);
|
||||||
|
|
||||||
scheduleJob('guildActivityStart', `${dicGuildActivity.startSeconds} ${dicGuildActivity.startMinute} ${dicGuildActivity.startTime} * * ?`, guildActivityStartSchedule);
|
console.log(dicGuildActivity)
|
||||||
|
|
||||||
|
guildActStartJobId = scheduleJob('guildActivityStart', `${dicGuildActivity.startSeconds} ${dicGuildActivity.startMinute} ${dicGuildActivity.startTime} * * ?`, guildActivityStartSchedule);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 军团晚间活动,每天8点开始
|
// 军团晚间活动,每天8点开始
|
||||||
@@ -365,6 +371,7 @@ export async function guildActivityStart(dicGuildActivity?: DicGuildActivity) {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log('********', dicGuildActivity.id, Date.now() + dicGuildActivity.duringTime * 1000)
|
||||||
let servers = await getAllServers(); // 玩家serverId列表
|
let servers = await getAllServers(); // 玩家serverId列表
|
||||||
if (dicGuildActivity.id == GUILD_ACTIVITY_TYPE.GATE_ACTIVITY) {
|
if (dicGuildActivity.id == GUILD_ACTIVITY_TYPE.GATE_ACTIVITY) {
|
||||||
guildActSecondsJobId = scheduleJob('guildActivitySeconds', '*/10 * * * * *', gateActivitySeconds);
|
guildActSecondsJobId = scheduleJob('guildActivitySeconds', '*/10 * * * * *', gateActivitySeconds);
|
||||||
@@ -458,8 +465,6 @@ export async function raceActivityEnd() {
|
|||||||
guildActSecondsJobId = undefined;
|
guildActSecondsJobId = undefined;
|
||||||
}
|
}
|
||||||
if (guildActEndJobId) {
|
if (guildActEndJobId) {
|
||||||
|
|
||||||
|
|
||||||
guildActEndJobId.cancel();
|
guildActEndJobId.cancel();
|
||||||
guildActEndJobId = undefined;
|
guildActEndJobId = undefined;
|
||||||
}
|
}
|
||||||
@@ -476,13 +481,42 @@ export async function raceActivitySeconds() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function auctionSchedule() {
|
let startGuildAuctionJobId: Job;
|
||||||
|
let startWorldAuctionJobId: Job;
|
||||||
|
let stopAuctionJobId: Job;
|
||||||
|
let sendUngotDividendJobId: Job;
|
||||||
|
|
||||||
|
export function auctionSchedule() {
|
||||||
|
clearAuctionSchedule();
|
||||||
let guildOpen = gameData.auctionTime.get(AUCTION_TIME.GUILD_OPEN);
|
let guildOpen = gameData.auctionTime.get(AUCTION_TIME.GUILD_OPEN);
|
||||||
let worldOpen = gameData.auctionTime.get(AUCTION_TIME.WORLD_OPEN);
|
let worldOpen = gameData.auctionTime.get(AUCTION_TIME.WORLD_OPEN);
|
||||||
let worldClose = gameData.auctionTime.get(AUCTION_TIME.WORLD_CLOSE);
|
let worldClose = gameData.auctionTime.get(AUCTION_TIME.WORLD_CLOSE);
|
||||||
|
|
||||||
scheduleJob('startGuildAuction', `0 0 ${guildOpen.hour} ${guildOpen.minute} * ?`, startGuildAuction);
|
console.log('***** auctionSchedule', guildOpen.hour, guildOpen.minute, guildOpen.seconds);
|
||||||
scheduleJob('startWorldAuction', `0 0 ${worldOpen.hour} ${worldOpen.minute} * ?`, startWorldAuction);
|
console.log('***** auctionSchedule', worldOpen.hour, worldOpen.minute, worldOpen.seconds);
|
||||||
scheduleJob('stopAuction', `0 0 ${worldClose.hour} ${worldClose.minute} * ?`, stopAuction);
|
console.log('***** auctionSchedule', worldClose.hour, worldClose.minute, worldClose.seconds);
|
||||||
scheduleJob('sendUngotDividendJob', '0 0 5 00 * ?', sendUngotDividendJob);
|
startGuildAuctionJobId = scheduleJob('startGuildAuction', `${guildOpen.seconds} ${guildOpen.minute} ${guildOpen.hour} * * ?`, startGuildAuction);
|
||||||
|
startWorldAuctionJobId = scheduleJob('startWorldAuction', `${worldOpen.seconds} ${worldOpen.minute} ${worldOpen.hour} * * ?`, startWorldAuction);
|
||||||
|
stopAuctionJobId = scheduleJob('stopAuction', `${worldClose.seconds} ${worldClose.minute} ${worldClose.hour} * * ?`, stopAuction);
|
||||||
|
sendUngotDividendJobId = scheduleJob('sendUngotDividendJob', '0 0 5 00 * ?', sendUngotDividendJob);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function clearAuctionSchedule() {
|
||||||
|
if (startGuildAuctionJobId) {
|
||||||
|
startGuildAuctionJobId.cancel();
|
||||||
|
startGuildAuctionJobId = undefined;
|
||||||
|
}
|
||||||
|
if (startWorldAuctionJobId) {
|
||||||
|
startWorldAuctionJobId.cancel();
|
||||||
|
startWorldAuctionJobId = undefined;
|
||||||
|
}
|
||||||
|
if (stopAuctionJobId) {
|
||||||
|
stopAuctionJobId.cancel();
|
||||||
|
stopAuctionJobId = undefined;
|
||||||
|
}
|
||||||
|
if (sendUngotDividendJobId) {
|
||||||
|
sendUngotDividendJobId.cancel();
|
||||||
|
sendUngotDividendJobId = undefined;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -9,7 +9,7 @@ export interface DicGuildActivity {
|
|||||||
// 开启日期 星期几
|
// 开启日期 星期几
|
||||||
readonly openDay: number[];
|
readonly openDay: number[];
|
||||||
// 持续时间 秒
|
// 持续时间 秒
|
||||||
readonly duringTime: number;
|
duringTime: number;
|
||||||
// 开启时间 几点
|
// 开启时间 几点
|
||||||
startTime: number;
|
startTime: number;
|
||||||
// 开启时间 几点
|
// 开启时间 几点
|
||||||
|
|||||||
Reference in New Issue
Block a user