🐞 fix(gvg): 调整spine下发数量开关
This commit is contained in:
@@ -7,7 +7,7 @@ import { Application, BackendSession, ChannelService, HandlerService, pinus } fr
|
|||||||
import { resResult, genCode, getRandSingleEelm } from "../../../pubUtils/util";
|
import { resResult, genCode, getRandSingleEelm } from "../../../pubUtils/util";
|
||||||
import { GVGLeagueModel } from '../../../db/GVGLeague';
|
import { GVGLeagueModel } from '../../../db/GVGLeague';
|
||||||
import { getGroupKey, getGVGConfig, getGVGPeriodData, getGVGServerType } from '../../../services/gvg/gvgService';
|
import { getGroupKey, getGVGConfig, getGVGPeriodData, getGVGServerType } from '../../../services/gvg/gvgService';
|
||||||
import { redisAddBattleScore, battleEndSendMessage, calBattleScoreByCe, checkAreaIsInCity, checkGVGBattleStart, checkMoveStatus, getBattleRanksByCity, getBirthAreaOfCity, getGVGWarId, getOppHeroes, getTechKnifeHurt, getTechReviveMinus, initRobots, pushTeamMoveMessage, getGVGCitiesInfo, leaveCity, refreshTeams, checkEnterCityTime, generNewLineup, getBattleRank, checkSettleStatus } from '../../../services/gvg/gvgBattleService';
|
import { redisAddBattleScore, battleEndSendMessage, calBattleScoreByCe, checkAreaIsInCity, checkGVGBattleStart, checkMoveStatus, getBattleRanksByCity, getBirthAreaOfCity, getGVGWarId, getOppHeroes, getTechKnifeHurt, getTechReviveMinus, initRobots, pushTeamMoveMessage, getGVGCitiesInfo, leaveCity, refreshTeams, checkEnterCityTime, generNewLineup, getBattleRank, checkSettleStatus, getSpineCnt } from '../../../services/gvg/gvgBattleService';
|
||||||
import { getGVGBattleData } from '../../../services/gvg/gvgBattleMemory';
|
import { getGVGBattleData } from '../../../services/gvg/gvgBattleMemory';
|
||||||
import { GVGBattleRecModel } from '../../../db/GVGBattleRec';
|
import { GVGBattleRecModel } from '../../../db/GVGBattleRec';
|
||||||
import { getFightTimeByPeriod } from '../../../services/gvg/gvgFightService';
|
import { getFightTimeByPeriod } from '../../../services/gvg/gvgFightService';
|
||||||
@@ -269,8 +269,9 @@ export class GVGBattleHandler {
|
|||||||
|
|
||||||
let teamObj = getGVGBattleData(groupKey);
|
let teamObj = getGVGBattleData(groupKey);
|
||||||
let result: GVGTeamSpineInMap[] = [];
|
let result: GVGTeamSpineInMap[] = [];
|
||||||
|
let spineCnt = await getSpineCnt();
|
||||||
for(let areaId of areaIds) {
|
for(let areaId of areaIds) {
|
||||||
let teams = teamObj.findTeamsByArea(areaId);
|
let teams = teamObj.findTeamsByArea(areaId, spineCnt);
|
||||||
for(let team of teams) {
|
for(let team of teams) {
|
||||||
result.push(new GVGTeamSpineInMap(team, serverNames))
|
result.push(new GVGTeamSpineInMap(team, serverNames))
|
||||||
}
|
}
|
||||||
@@ -756,7 +757,7 @@ export class GVGBattleHandler {
|
|||||||
// 更新内存数据
|
// 更新内存数据
|
||||||
let teamObj = getGVGBattleData(groupKey);
|
let teamObj = getGVGBattleData(groupKey);
|
||||||
teamObj.move(teamMem.teamCode, toAreaId, team.fromAreaId, team.startMoveTime, team.stopMoveTime);
|
teamObj.move(teamMem.teamCode, toAreaId, team.fromAreaId, team.startMoveTime, team.stopMoveTime);
|
||||||
await pushTeamMoveMessage(team);
|
// await pushTeamMoveMessage(team);
|
||||||
}, i * 100);
|
}, i * 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -780,10 +781,10 @@ export class GVGBattleHandler {
|
|||||||
if(this.attackInterval) {
|
if(this.attackInterval) {
|
||||||
clearInterval(this.attackInterval);
|
clearInterval(this.attackInterval);
|
||||||
}
|
}
|
||||||
|
let spineCnt = await getSpineCnt();
|
||||||
let fun = async () => {
|
let fun = async () => {
|
||||||
for(let areaId of teamObj.findAreas()) {
|
for(let areaId of teamObj.findAreas()) {
|
||||||
let teams = teamObj.findTeamsByArea(areaId);
|
let teams = teamObj.findTeamsByArea(areaId, spineCnt);
|
||||||
let areaTeams = teams.map(team => new GVGTeamInList(team as any));
|
let areaTeams = teams.map(team => new GVGTeamInList(team as any));
|
||||||
await sendMessageToGVGAreaByTeamWithSuc(teamObj.groupKey, areaId, PUSH_ROUTE.GVG_TEAM_ATTACKED, {
|
await sendMessageToGVGAreaByTeamWithSuc(teamObj.groupKey, areaId, PUSH_ROUTE.GVG_TEAM_ATTACKED, {
|
||||||
cityId, areaId, attackType: GVG_ATTACK_TYPE.PLAYER, teams: areaTeams
|
cityId, areaId, attackType: GVG_ATTACK_TYPE.PLAYER, teams: areaTeams
|
||||||
|
|||||||
@@ -24,14 +24,19 @@ class GVGBattleData {
|
|||||||
this.groupKey = groupKey;
|
this.groupKey = groupKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
public findTeamsByArea(areaId: number) {
|
public findTeamsByArea(areaId: number, count: number) {
|
||||||
let teamCodes = this.areaToTeams.get(areaId)||new Set();
|
let teamCodes = this.areaToTeams.get(areaId)||new Set();
|
||||||
let teams: GVGTeamMem[] = [];
|
let otherTeams: GVGTeamMem[] = [], robots: GVGTeamMem[] = [], points: GVGTeamMem[] = [];
|
||||||
for(let teamCode of teamCodes) {
|
for(let teamCode of teamCodes) {
|
||||||
let team = this.teams.get(teamCode);
|
let team = this.teams.get(teamCode);
|
||||||
if(team && !team.isBroken) teams.push(team);
|
if(team && !team.isBroken) {
|
||||||
|
if(team.pointId > 0) { points.push(team); continue; }
|
||||||
|
if(team.isRobot) { robots.push(team); continue; }
|
||||||
|
otherTeams.push(team);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return teams.slice(0, 20);
|
let teams = [...points, ...robots, ...otherTeams];
|
||||||
|
return teams.slice(0, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
public findCatapultAttackTeam(areaId: number, leagueCode: string) {
|
public findCatapultAttackTeam(areaId: number, leagueCode: string) {
|
||||||
|
|||||||
@@ -451,6 +451,11 @@ export async function redisAddSettleScore(gvgTeam: GVGTeamType, incScore: number
|
|||||||
await r2.setRankWithLeagueInfo(leagueCode, incScore, Date.now(), null, true);
|
await r2.setRankWithLeagueInfo(leagueCode, incScore, Date.now(), null, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getSpineCnt() {
|
||||||
|
let cnt = await redisClient().getAsync(REDIS_KEY.GVG_SPINE_CNT);
|
||||||
|
return cnt? parseInt(cnt): 20;
|
||||||
|
}
|
||||||
|
|
||||||
// 获取排行榜
|
// 获取排行榜
|
||||||
export async function getBattleRanksByCity(configId: number, groupKey: string, cityId: number, myLeague?: GVGLeagueType) {
|
export async function getBattleRanksByCity(configId: number, groupKey: string, cityId: number, myLeague?: GVGLeagueType) {
|
||||||
let teamObj = getGVGBattleData(groupKey);
|
let teamObj = getGVGBattleData(groupKey);
|
||||||
@@ -478,6 +483,8 @@ export async function gvgBattleSeconds() {
|
|||||||
const { configId, period } = getGVGPeriodData();
|
const { configId, period } = getGVGPeriodData();
|
||||||
let { startFightTime, endFightTime } = getFightTimeByPeriod(period);
|
let { startFightTime, endFightTime } = getFightTimeByPeriod(period);
|
||||||
const serverNames = await getAllServerName();
|
const serverNames = await getAllServerName();
|
||||||
|
|
||||||
|
let spineCnt = await getSpineCnt();
|
||||||
let keys: { groupKey: string, cityId: number }[] = []
|
let keys: { groupKey: string, cityId: number }[] = []
|
||||||
for(let [_key, teamObj] of getGVGBattleMap()) {
|
for(let [_key, teamObj] of getGVGBattleMap()) {
|
||||||
// console.log('#### gvgBattleSeconds groupKey: ', _key, 'areas', teamObj.findAreas(), 'appid', pinus.app.getServerId());
|
// console.log('#### gvgBattleSeconds groupKey: ', _key, 'areas', teamObj.findAreas(), 'appid', pinus.app.getServerId());
|
||||||
@@ -495,7 +502,7 @@ export async function gvgBattleSeconds() {
|
|||||||
let spinesByCity = new Map<number, GVGTeamSpineInMap[]>();
|
let spinesByCity = new Map<number, GVGTeamSpineInMap[]>();
|
||||||
for(let areaId of teamObj.findAreas()) {
|
for(let areaId of teamObj.findAreas()) {
|
||||||
let dicArea = gameData.gvgArea.get(areaId);
|
let dicArea = gameData.gvgArea.get(areaId);
|
||||||
let teams = teamObj.findTeamsByArea(areaId);
|
let teams = teamObj.findTeamsByArea(areaId, spineCnt);
|
||||||
let spines = teams.map(team => new GVGTeamSpineInMap(team, serverNames));
|
let spines = teams.map(team => new GVGTeamSpineInMap(team, serverNames));
|
||||||
if(!spinesByCity.has(dicArea.cityId)) spinesByCity.set(dicArea.cityId, []);
|
if(!spinesByCity.has(dicArea.cityId)) spinesByCity.set(dicArea.cityId, []);
|
||||||
spinesByCity.get(dicArea.cityId).push(...spines);
|
spinesByCity.get(dicArea.cityId).push(...spines);
|
||||||
|
|||||||
@@ -266,6 +266,7 @@ export enum REDIS_KEY {
|
|||||||
GVG_HISTORY_AREA_TEAM ='gvgHisAreaTeam', // gvg激战期玩家加入的区域
|
GVG_HISTORY_AREA_TEAM ='gvgHisAreaTeam', // gvg激战期玩家加入的区域
|
||||||
GVG_HISTORY_CITY ='gvgHisCity', // gvg激战期玩家进入的城池
|
GVG_HISTORY_CITY ='gvgHisCity', // gvg激战期玩家进入的城池
|
||||||
GVG_SEND_REWARD ='gvgSendReward', // gvg发放奖励
|
GVG_SEND_REWARD ='gvgSendReward', // gvg发放奖励
|
||||||
|
GVG_SPINE_CNT ='gvgSpineCnt', // gvg spine的下发数量
|
||||||
}
|
}
|
||||||
|
|
||||||
// 各排行榜对应hash的key
|
// 各排行榜对应hash的key
|
||||||
|
|||||||
Reference in New Issue
Block a user