军团活动:粮草先行debug

This commit is contained in:
luying
2022-09-13 15:57:33 +08:00
parent 3def913f74
commit 576098cb2e
5 changed files with 63 additions and 20 deletions

View File

@@ -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);
}

View File

@@ -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}`);
}
}
}

View File

@@ -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);
}
}

View File

@@ -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]);

View File

@@ -19,11 +19,12 @@ export interface DicRaceActivity {
readonly continueDistance: number;
// 生效时间
readonly effectTime: number;
// 可使用数量
readonly useCount: number[];
}
type KeysEnum<T> = { [P in keyof Required<T>]: true };
const DicRaceKeys: KeysEnum<DicRaceActivity> = {id: true, type: true, effectType: true, effect: true, continueTime: true, continueDistance: true, effectTime: true};
const DicRaceKeys: KeysEnum<DicRaceActivity> = {id: true, type: true, effectType: true, effect: true, continueTime: true, continueDistance: true, effectTime: true, useCount: true};
export const dicRaceActivity = new Map<number, DicRaceActivity>();
export const dicRaceTypes = new Map<number, Map<number, number[]>>();
@@ -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<number, number[]>());