军团活动:粮草先行debug
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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]);
|
||||
|
||||
@@ -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[]>());
|
||||
|
||||
Reference in New Issue
Block a user