From 576098cb2ec2d1f274b1e3d8c8d554381fc06f19 Mon Sep 17 00:00:00 2001 From: luying Date: Tue, 13 Sep 2022 15:57:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=9B=E5=9B=A2=E6=B4=BB=E5=8A=A8=EF=BC=9A?= =?UTF-8?q?=E7=B2=AE=E8=8D=89=E5=85=88=E8=A1=8Cdebug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../guild/handler/raceActivityHandler.ts | 25 +++++++------- .../guild/remote/guildActivityRemote.ts | 10 +++++- .../guildActivity/guildActivityService.ts | 34 ++++++++++++++++++- .../services/guildActivity/raceActivityObj.ts | 8 +++-- shared/pubUtils/dictionary/DicRaceActivity.ts | 6 ++-- 5 files changed, 63 insertions(+), 20 deletions(-) diff --git a/game-server/app/servers/guild/handler/raceActivityHandler.ts b/game-server/app/servers/guild/handler/raceActivityHandler.ts index f874df389..d1e278446 100644 --- a/game-server/app/servers/guild/handler/raceActivityHandler.ts +++ b/game-server/app/servers/guild/handler/raceActivityHandler.ts @@ -1,21 +1,17 @@ import { Application, ChannelService, BackendSession, HandlerService, pinus, } from "pinus"; -import { GUILD_ACTIVITY_TYPE, STATUS, GUILD_ACTIVITY_STATUS, GUILD_POINT_WAYS, REDIS_KEY, TASK_TYPE, PUSH_ROUTE, RACE_ACTIVITY_STATUS, DEBUG_MAGIC_WORD } from "../../../consts"; +import { GUILD_ACTIVITY_TYPE, STATUS, GUILD_ACTIVITY_STATUS, REDIS_KEY, TASK_TYPE, PUSH_ROUTE, DEBUG_MAGIC_WORD } from "../../../consts"; import { genCode, resResult } from "../../../pubUtils/util"; import { getGuildActivityStatus, getRaceActivityObj, getWoodenHorseList, getGAIndexInPinus, getJoinIndex } from "../../../services/guildActivity/guildActivityService"; import { UserGuildModel } from "../../../db/UserGuild"; import { GuildActivityRecordModel } from "../../../db/GuildActivityRec"; import { UserGuildActivityRecModel } from "../../../db/UserGuildActivityRec"; -import { addActive } from "../../../services/guildService"; import { Rank } from "../../../services/rankService"; import { checkTask } from "../../../services/task/taskService"; -import { guildInter } from "../../../pubUtils/interface"; -import { getGuildChannelSid } from "../../../services/chatService"; import { ServerRecordModel } from "../../../db/ServerRecords"; import { sendMessageToGuildWithSuc } from "../../../services/pushService"; import { RaceActivityRankParam } from "../../../domain/battleField/guildActivity"; import { GuildRankInfo } from "../../../domain/rank"; import { ServerlistModel } from "../../../db/Serverlist"; -import { RoleModel } from "../../../db/Role"; import { dispatch } from "../../../pubUtils/dispatcher"; export default function (app: Application) { @@ -232,23 +228,26 @@ export class RaceActivityHandler { } // 加入木马 - async debugAddHorse(msg: { magicWord: string, memberCnt: number }, session: BackendSession) { - const { magicWord, memberCnt } = msg; + async debugAddHorse(msg: { magicWord: string, isMyGuild: number, memberCnt: number, itemInterval: number }, session: BackendSession) { + const { magicWord, isMyGuild, memberCnt, itemInterval } = msg; if (magicWord !== DEBUG_MAGIC_WORD) { return resResult(STATUS.TOKEN_ERR); } const serverId = session.get('serverId'); + let guildCode = session.get('guildCode'); + if(!isMyGuild) { + guildCode = genCode(8); + } let statusResult = getGuildActivityStatus(this.aid); if (!statusResult) return resResult(STATUS.DIC_DATA_NOT_FOUND); + if(!statusResult.isOpen) return resResult(STATUS.GUILD_ACTIVITY_NOT_OPEN); + if(statusResult.status != GUILD_ACTIVITY_STATUS.START) return resResult(STATUS.GUILD_ACTIVITY_NOT_OPEN); - let obj = getRaceActivityObj(); - let guildCode = genCode(8); - - for(let i = 0; i < memberCnt; i++) { - await obj.joinWoodenHorse(guildCode, `roleId${i}`, 'roleName', serverId, null, 6, 'code', true); - } + let guild = pinus.app.getServersByType('guild'); + let sid = dispatch(`${serverId}`, guild); + pinus.app.rpc.guild.guildActivityRemote.debugAddHorse.toServer(sid.id, serverId, guildCode, memberCnt, itemInterval) return resResult(STATUS.SUCCESS); } diff --git a/game-server/app/servers/guild/remote/guildActivityRemote.ts b/game-server/app/servers/guild/remote/guildActivityRemote.ts index afa920e81..d42ff6733 100644 --- a/game-server/app/servers/guild/remote/guildActivityRemote.ts +++ b/game-server/app/servers/guild/remote/guildActivityRemote.ts @@ -1,5 +1,5 @@ import { Application, ChannelService, HandlerService, } from 'pinus'; -import { sendAllGuildRanks, calWoodenHorseAndSend, sendRaceStartMsg, setDicGuildActivity, setDicAuctionTime, settleGuildActivityReward, clearActivityObj, getGAPinusName, getCurGuildActivityIndexByDb, initGuildActivityIndexInPinus, setGuildActivityIndexInPinus, guildActivityStart, debugResetJoin, debugSendGateHp } from '../../../services/guildActivity/guildActivityService'; +import { sendAllGuildRanks, calWoodenHorseAndSend, sendRaceStartMsg, setDicGuildActivity, setDicAuctionTime, settleGuildActivityReward, clearActivityObj, getGAPinusName, getCurGuildActivityIndexByDb, initGuildActivityIndexInPinus, setGuildActivityIndexInPinus, guildActivityStart, debugResetJoin, debugSendGateHp, debugAddHorse } from '../../../services/guildActivity/guildActivityService'; import { gameData } from '../../../pubUtils/data'; import { setWeek } from '../../../pubUtils/timeUtil'; import { sendUngotDividend } from '../../../services/auctionService'; @@ -205,4 +205,12 @@ export class GuildActivityRemote { errlogger.error(`remote ${__filename} \n ${e.stack}`); } } + + public async debugAddHorse(serverId: number, guildCode: string, memberCnt: number, itemInterval: number) { + try { + await debugAddHorse(serverId, guildCode, memberCnt, itemInterval); + } catch(e) { + errlogger.error(`remote ${__filename} \n ${e.stack}`); + } + } } \ No newline at end of file diff --git a/game-server/app/services/guildActivity/guildActivityService.ts b/game-server/app/services/guildActivity/guildActivityService.ts index a77f1e9b0..aa6157e44 100644 --- a/game-server/app/services/guildActivity/guildActivityService.ts +++ b/game-server/app/services/guildActivity/guildActivityService.ts @@ -3,7 +3,7 @@ import { RoleModel } from "../../db/Role"; import { GUILDACTIVITY } from "../../pubUtils/dicParam"; import { gameData, getGuildAuctionRewards, getCityActivityRewards, getGuildAuctionBasicNum } from "../../pubUtils/data"; import { getCurDay, nowSeconds, getTimeFun, getZeroPoint } 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, AUCTION_TIME, CITY_ACTIVITY_DOOR, ABI_TYPE, PUSH_ROUTE, RACE_ACTIVITY_STATUS, SHOP_REFRESH_TYPE, COUNTER } 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, CITY_ACTIVITY_DOOR, ABI_TYPE, PUSH_ROUTE, RACE_ACTIVITY_STATUS, SHOP_REFRESH_TYPE, COUNTER, RACE_EVENT_TYPE } from "../../consts"; import { Record, UserGuildActivityRecModel } from "../../db/UserGuildActivityRec"; import { GateMembersRec, CityParam, WoodenHorse, RaceActivityRankParam } from "../../domain/battleField/guildActivity"; import { DicGuildActivity } from "../../pubUtils/dictionary/DicGuildActivity"; @@ -30,6 +30,8 @@ import { saveGuildGateHpLog } from "../../pubUtils/logUtil"; import { GuildActivityCityDeclareModel } from "../../db/GuildActivityCityDeclare"; import { getRandSingleEelm } from "../../pubUtils/util"; import { CounterModel } from "../../db/Counter"; +import { setInterval } from "timers"; +import { DicRaceActivity } from "../../pubUtils/dictionary/DicRaceActivity"; let gateActivityObj: GateActivityObject; let cityActivityObj: CityActivityObject; @@ -906,5 +908,35 @@ export async function debugSendGateHp(serverId: number, cityId: number) { let obj = getCityActivityObj(); let { gateHp, maxHp } = await obj.getGateHpAndInc(serverId, cityId); await sendMessageToCityWithSuc(cityId, PUSH_ROUTE.GUILD_CITY_ACT_HP, { cityId, gateHp: gateHp + 1000, maxHp }); +} +export async function debugAddHorse(serverId: number, guildCode: string, memberCnt: number, itemInterval: number) { + + let obj = getRaceActivityObj(); + + let dicItem = gameData.raceTypes.get(RACE_EVENT_TYPE.DEFAULT); + let items: number[] = []; + for(let [_, arr] of dicItem) { + items.push(...arr); + }; + + for(let i = 0; i < memberCnt; i++) { + let roleId = `roleId${i}`; + await obj.joinWoodenHorse(guildCode, roleId, 'roleName', serverId, null, 6, 'code', true); + + } + + if(itemInterval >= 100) { + let members = obj.getMembersOfGuild(guildCode); + let timer = setInterval(async () => { + await obj.useItem(serverId, members[0]?.roleId, '', guildCode, guildCode, getRandSingleEelm(items), 1, true); + let woodenHorse = await obj.getWoodenHorse(guildCode, serverId, true); + if(woodenHorse.status == RACE_ACTIVITY_STATUS.END) { + clearInterval(timer); + } + }, itemInterval); + setTimeout(() => { + clearInterval(timer); + }, 10 * 60 * 1000); + } } \ No newline at end of file diff --git a/game-server/app/services/guildActivity/raceActivityObj.ts b/game-server/app/services/guildActivity/raceActivityObj.ts index 75c549489..e1e4a18a4 100644 --- a/game-server/app/services/guildActivity/raceActivityObj.ts +++ b/game-server/app/services/guildActivity/raceActivityObj.ts @@ -129,9 +129,11 @@ export class RaceActivityObject { return woodenHorse; } - public async useItem(serverId: number, fromRoleId: string, sid: string, fromGuild: string, toGuild: string, id: number, count: number) { - let rec = this.handleItems(fromRoleId, sid, [{id, count: -1 * count}]); - if(!rec) return false; + public async useItem(serverId: number, fromRoleId: string, sid: string, fromGuild: string, toGuild: string, id: number, count: number, debug = false) { + if(!debug) { + let rec = this.handleItems(fromRoleId, sid, [{id, count: -1 * count}]); + if(!rec) return false; + } let event = new Event(id, fromGuild, toGuild, count); if(!this.events.has(toGuild)) { this.events.set(toGuild, [event]); diff --git a/shared/pubUtils/dictionary/DicRaceActivity.ts b/shared/pubUtils/dictionary/DicRaceActivity.ts index de8b24533..c2a0d24b9 100644 --- a/shared/pubUtils/dictionary/DicRaceActivity.ts +++ b/shared/pubUtils/dictionary/DicRaceActivity.ts @@ -19,11 +19,12 @@ export interface DicRaceActivity { readonly continueDistance: number; // 生效时间 readonly effectTime: number; - + // 可使用数量 + readonly useCount: number[]; } type KeysEnum = { [P in keyof Required]: true }; -const DicRaceKeys: KeysEnum = {id: true, type: true, effectType: true, effect: true, continueTime: true, continueDistance: true, effectTime: true}; +const DicRaceKeys: KeysEnum = {id: true, type: true, effectType: true, effect: true, continueTime: true, continueDistance: true, effectTime: true, useCount: true}; export const dicRaceActivity = new Map(); export const dicRaceTypes = new Map>(); @@ -36,6 +37,7 @@ export function loadRaceActivity() { arr.forEach(o => { o.effectTime = o.effecttime; o.effect = parseNumberList(o.effect); + o.useCount = parseNumberList(o.useCount); dicRaceActivity.set(o.id, _.pick(o, Object.keys(DicRaceKeys))); if(!dicRaceTypes.has(o.type)) { dicRaceTypes.set(o.type, new Map());