军团活动:粮草先行debug
This commit is contained in:
@@ -1,21 +1,17 @@
|
|||||||
import { Application, ChannelService, BackendSession, HandlerService, pinus, } from "pinus";
|
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 { genCode, resResult } from "../../../pubUtils/util";
|
||||||
import { getGuildActivityStatus, getRaceActivityObj, getWoodenHorseList, getGAIndexInPinus, getJoinIndex } from "../../../services/guildActivity/guildActivityService";
|
import { getGuildActivityStatus, getRaceActivityObj, getWoodenHorseList, getGAIndexInPinus, getJoinIndex } from "../../../services/guildActivity/guildActivityService";
|
||||||
import { UserGuildModel } from "../../../db/UserGuild";
|
import { UserGuildModel } from "../../../db/UserGuild";
|
||||||
import { GuildActivityRecordModel } from "../../../db/GuildActivityRec";
|
import { GuildActivityRecordModel } from "../../../db/GuildActivityRec";
|
||||||
import { UserGuildActivityRecModel } from "../../../db/UserGuildActivityRec";
|
import { UserGuildActivityRecModel } from "../../../db/UserGuildActivityRec";
|
||||||
import { addActive } from "../../../services/guildService";
|
|
||||||
import { Rank } from "../../../services/rankService";
|
import { Rank } from "../../../services/rankService";
|
||||||
import { checkTask } from "../../../services/task/taskService";
|
import { checkTask } from "../../../services/task/taskService";
|
||||||
import { guildInter } from "../../../pubUtils/interface";
|
|
||||||
import { getGuildChannelSid } from "../../../services/chatService";
|
|
||||||
import { ServerRecordModel } from "../../../db/ServerRecords";
|
import { ServerRecordModel } from "../../../db/ServerRecords";
|
||||||
import { sendMessageToGuildWithSuc } from "../../../services/pushService";
|
import { sendMessageToGuildWithSuc } from "../../../services/pushService";
|
||||||
import { RaceActivityRankParam } from "../../../domain/battleField/guildActivity";
|
import { RaceActivityRankParam } from "../../../domain/battleField/guildActivity";
|
||||||
import { GuildRankInfo } from "../../../domain/rank";
|
import { GuildRankInfo } from "../../../domain/rank";
|
||||||
import { ServerlistModel } from "../../../db/Serverlist";
|
import { ServerlistModel } from "../../../db/Serverlist";
|
||||||
import { RoleModel } from "../../../db/Role";
|
|
||||||
import { dispatch } from "../../../pubUtils/dispatcher";
|
import { dispatch } from "../../../pubUtils/dispatcher";
|
||||||
|
|
||||||
export default function (app: Application) {
|
export default function (app: Application) {
|
||||||
@@ -232,23 +228,26 @@ export class RaceActivityHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 加入木马
|
// 加入木马
|
||||||
async debugAddHorse(msg: { magicWord: string, memberCnt: number }, session: BackendSession) {
|
async debugAddHorse(msg: { magicWord: string, isMyGuild: number, memberCnt: number, itemInterval: number }, session: BackendSession) {
|
||||||
const { magicWord, memberCnt } = msg;
|
const { magicWord, isMyGuild, memberCnt, itemInterval } = msg;
|
||||||
if (magicWord !== DEBUG_MAGIC_WORD) {
|
if (magicWord !== DEBUG_MAGIC_WORD) {
|
||||||
return resResult(STATUS.TOKEN_ERR);
|
return resResult(STATUS.TOKEN_ERR);
|
||||||
}
|
}
|
||||||
|
|
||||||
const serverId = session.get('serverId');
|
const serverId = session.get('serverId');
|
||||||
|
let guildCode = session.get('guildCode');
|
||||||
|
if(!isMyGuild) {
|
||||||
|
guildCode = genCode(8);
|
||||||
|
}
|
||||||
|
|
||||||
let statusResult = getGuildActivityStatus(this.aid);
|
let statusResult = getGuildActivityStatus(this.aid);
|
||||||
if (!statusResult) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
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 guild = pinus.app.getServersByType('guild');
|
||||||
let guildCode = genCode(8);
|
let sid = dispatch(`${serverId}`, guild);
|
||||||
|
pinus.app.rpc.guild.guildActivityRemote.debugAddHorse.toServer(sid.id, serverId, guildCode, memberCnt, itemInterval)
|
||||||
for(let i = 0; i < memberCnt; i++) {
|
|
||||||
await obj.joinWoodenHorse(guildCode, `roleId${i}`, 'roleName', serverId, null, 6, 'code', true);
|
|
||||||
}
|
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS);
|
return resResult(STATUS.SUCCESS);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Application, ChannelService, HandlerService, } from 'pinus';
|
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 { gameData } from '../../../pubUtils/data';
|
||||||
import { setWeek } from '../../../pubUtils/timeUtil';
|
import { setWeek } from '../../../pubUtils/timeUtil';
|
||||||
import { sendUngotDividend } from '../../../services/auctionService';
|
import { sendUngotDividend } from '../../../services/auctionService';
|
||||||
@@ -205,4 +205,12 @@ export class GuildActivityRemote {
|
|||||||
errlogger.error(`remote ${__filename} \n ${e.stack}`);
|
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 { GUILDACTIVITY } from "../../pubUtils/dicParam";
|
||||||
import { gameData, getGuildAuctionRewards, getCityActivityRewards, getGuildAuctionBasicNum } from "../../pubUtils/data";
|
import { gameData, getGuildAuctionRewards, getCityActivityRewards, getGuildAuctionBasicNum } from "../../pubUtils/data";
|
||||||
import { getCurDay, nowSeconds, getTimeFun, getZeroPoint } from "../../pubUtils/timeUtil";
|
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 { Record, UserGuildActivityRecModel } from "../../db/UserGuildActivityRec";
|
||||||
import { GateMembersRec, CityParam, WoodenHorse, RaceActivityRankParam } from "../../domain/battleField/guildActivity";
|
import { GateMembersRec, CityParam, WoodenHorse, RaceActivityRankParam } from "../../domain/battleField/guildActivity";
|
||||||
import { DicGuildActivity } from "../../pubUtils/dictionary/DicGuildActivity";
|
import { DicGuildActivity } from "../../pubUtils/dictionary/DicGuildActivity";
|
||||||
@@ -30,6 +30,8 @@ import { saveGuildGateHpLog } from "../../pubUtils/logUtil";
|
|||||||
import { GuildActivityCityDeclareModel } from "../../db/GuildActivityCityDeclare";
|
import { GuildActivityCityDeclareModel } from "../../db/GuildActivityCityDeclare";
|
||||||
import { getRandSingleEelm } from "../../pubUtils/util";
|
import { getRandSingleEelm } from "../../pubUtils/util";
|
||||||
import { CounterModel } from "../../db/Counter";
|
import { CounterModel } from "../../db/Counter";
|
||||||
|
import { setInterval } from "timers";
|
||||||
|
import { DicRaceActivity } from "../../pubUtils/dictionary/DicRaceActivity";
|
||||||
|
|
||||||
let gateActivityObj: GateActivityObject;
|
let gateActivityObj: GateActivityObject;
|
||||||
let cityActivityObj: CityActivityObject;
|
let cityActivityObj: CityActivityObject;
|
||||||
@@ -906,5 +908,35 @@ export async function debugSendGateHp(serverId: number, cityId: number) {
|
|||||||
let obj = getCityActivityObj();
|
let obj = getCityActivityObj();
|
||||||
let { gateHp, maxHp } = await obj.getGateHpAndInc(serverId, cityId);
|
let { gateHp, maxHp } = await obj.getGateHpAndInc(serverId, cityId);
|
||||||
await sendMessageToCityWithSuc(cityId, PUSH_ROUTE.GUILD_CITY_ACT_HP, { cityId, gateHp: gateHp + 1000, maxHp });
|
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;
|
return woodenHorse;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async useItem(serverId: number, fromRoleId: string, sid: string, fromGuild: string, toGuild: string, id: number, count: number) {
|
public async useItem(serverId: number, fromRoleId: string, sid: string, fromGuild: string, toGuild: string, id: number, count: number, debug = false) {
|
||||||
let rec = this.handleItems(fromRoleId, sid, [{id, count: -1 * count}]);
|
if(!debug) {
|
||||||
if(!rec) return false;
|
let rec = this.handleItems(fromRoleId, sid, [{id, count: -1 * count}]);
|
||||||
|
if(!rec) return false;
|
||||||
|
}
|
||||||
let event = new Event(id, fromGuild, toGuild, count);
|
let event = new Event(id, fromGuild, toGuild, count);
|
||||||
if(!this.events.has(toGuild)) {
|
if(!this.events.has(toGuild)) {
|
||||||
this.events.set(toGuild, [event]);
|
this.events.set(toGuild, [event]);
|
||||||
|
|||||||
@@ -19,11 +19,12 @@ export interface DicRaceActivity {
|
|||||||
readonly continueDistance: number;
|
readonly continueDistance: number;
|
||||||
// 生效时间
|
// 生效时间
|
||||||
readonly effectTime: number;
|
readonly effectTime: number;
|
||||||
|
// 可使用数量
|
||||||
|
readonly useCount: number[];
|
||||||
}
|
}
|
||||||
|
|
||||||
type KeysEnum<T> = { [P in keyof Required<T>]: true };
|
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 dicRaceActivity = new Map<number, DicRaceActivity>();
|
||||||
export const dicRaceTypes = new Map<number, Map<number, number[]>>();
|
export const dicRaceTypes = new Map<number, Map<number, number[]>>();
|
||||||
@@ -36,6 +37,7 @@ export function loadRaceActivity() {
|
|||||||
arr.forEach(o => {
|
arr.forEach(o => {
|
||||||
o.effectTime = o.effecttime;
|
o.effectTime = o.effecttime;
|
||||||
o.effect = parseNumberList(o.effect);
|
o.effect = parseNumberList(o.effect);
|
||||||
|
o.useCount = parseNumberList(o.useCount);
|
||||||
dicRaceActivity.set(o.id, _.pick(o, Object.keys(DicRaceKeys)));
|
dicRaceActivity.set(o.id, _.pick(o, Object.keys(DicRaceKeys)));
|
||||||
if(!dicRaceTypes.has(o.type)) {
|
if(!dicRaceTypes.has(o.type)) {
|
||||||
dicRaceTypes.set(o.type, new Map<number, number[]>());
|
dicRaceTypes.set(o.type, new Map<number, number[]>());
|
||||||
|
|||||||
Reference in New Issue
Block a user