fix 获取对手详情错误&刷新重复
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import {Application, BackendSession, pinus} from 'pinus';
|
import {Application, BackendSession, pinus} from 'pinus';
|
||||||
import { uniq, findWhere, findIndex } from 'underscore';
|
import { uniq, findWhere, findIndex } from 'underscore';
|
||||||
import { gameData, getPvpBoxs, getPLvByScore } from '../../../pubUtils/data';
|
import { gameData, getPvpBoxs, getPLvByScore } from '../../../pubUtils/data';
|
||||||
import { refreshEnemies, getEnemies, getLvByScore, defaultHeroes, comsumeChallengeCnt, refresh, findPvpDefByRoleId, checkRoleIsRobot, getRefOppCnt, findPvpDefAllByRoleId, generPVPOppRecInfo, generMyRecInfo } from '../../../services/pvpService';
|
import { refreshEnemies, getEnemies, getLvByScore, defaultHeroes, comsumeChallengeCnt, refresh, findPvpDefByRoleId, checkRoleIsRobot, getRefOppCnt, findPvpDefAllByRoleId, generPVPOppRecInfo, generMyRecInfo, robotIdComBack } from '../../../services/pvpService';
|
||||||
import { RoleModel, RoleType } from '../../../db/Role';
|
import { RoleModel, RoleType } from '../../../db/Role';
|
||||||
import { STATUS } from '../../../consts/statusCode';
|
import { STATUS } from '../../../consts/statusCode';
|
||||||
import { resResult, genCode } from '../../../pubUtils/util';
|
import { resResult, genCode } from '../../../pubUtils/util';
|
||||||
@@ -256,7 +256,7 @@ export class PvpHandler {
|
|||||||
const defenseInfo = await generPVPOppRecInfo(isSuccess, curOpp, oppHeroes, role.lv);
|
const defenseInfo = await generPVPOppRecInfo(isSuccess, curOpp, oppHeroes, role.lv);
|
||||||
|
|
||||||
// 战报记录
|
// 战报记录
|
||||||
await PvpRecordModel.createRec({roleId1: roleId, roleId2: oppRoleId, warId: BattleRecord.battleId, attackInfo, defenseInfo, createTime: nowSeconds()});
|
await PvpRecordModel.createRec({roleId1: roleId, roleId2: robotIdComBack(oppRoleId), warId: BattleRecord.battleId, attackInfo, defenseInfo, createTime: nowSeconds()});
|
||||||
|
|
||||||
// 刷新对手
|
// 刷新对手
|
||||||
let newOppPlayers: Array<OppPlayers> = await refreshEnemies(role, score, pLv);
|
let newOppPlayers: Array<OppPlayers> = await refreshEnemies(role, score, pLv);
|
||||||
@@ -405,7 +405,7 @@ export class PvpHandler {
|
|||||||
}
|
}
|
||||||
heroes.sort((a, b) => b.score - a.score);
|
heroes.sort((a, b) => b.score - a.score);
|
||||||
let rank = await getMyRank(REDIS_KEY.PVP_RANK, 0, roleId);//去redis中获取排名
|
let rank = await getMyRank(REDIS_KEY.PVP_RANK, 0, roleId);//去redis中获取排名
|
||||||
result = new PlayerDetail({...role, heroes, rank});
|
result = new PlayerDetail({...role, ...pvpDefense, heroes, rank});
|
||||||
}
|
}
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS, result);
|
return resResult(STATUS.SUCCESS, result);
|
||||||
|
|||||||
@@ -73,14 +73,19 @@ export async function getEnemies(oppPlayers: OppPlayers[], winStreakNum: number)
|
|||||||
roleId: oppDef.oppRoleId,
|
roleId: oppDef.oppRoleId,
|
||||||
defCe: reduceCe(oppDef.defCe),
|
defCe: reduceCe(oppDef.defCe),
|
||||||
addScore: dicOpponent.score,
|
addScore: dicOpponent.score,
|
||||||
rankLv: 0,
|
rankLv: oppDef.rankLv,
|
||||||
plusScore: getPlusScore(winStreakNum)
|
plusScore: getPlusScore(winStreakNum)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
// 刷新对手
|
/**
|
||||||
|
* @description 刷新对手三个人
|
||||||
|
* @param role 数据库里我的role
|
||||||
|
* @param score 我的军功
|
||||||
|
* @param pLv 我的排名
|
||||||
|
*/
|
||||||
export async function refreshEnemies(role: RoleType, score: number, pLv: number) {
|
export async function refreshEnemies(role: RoleType, score: number, pLv: number) {
|
||||||
let system = await SystemConfigModel.findSystemConfig();
|
let system = await SystemConfigModel.findSystemConfig();
|
||||||
let mapWarJson = gameData.warJson.get(system.warId);
|
let mapWarJson = gameData.warJson.get(system.warId);
|
||||||
@@ -104,6 +109,7 @@ export async function refreshEnemies(role: RoleType, score: number, pLv: number)
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function matchPlayerByRank(oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], roleId: string, pos: number) {
|
export async function matchPlayerByRank(oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], roleId: string, pos: number) {
|
||||||
|
console.log('matchPlayerByRank', JSON.stringify(oppPlayers))
|
||||||
let ridRanks = new Array<number>(); // 已经被使用了的排名
|
let ridRanks = new Array<number>(); // 已经被使用了的排名
|
||||||
for(let { roleId: curRoleId } of oppPlayers) {
|
for(let { roleId: curRoleId } of oppPlayers) {
|
||||||
let rankLv = await getMyRank(REDIS_KEY.PVP_RANK, 0, curRoleId);
|
let rankLv = await getMyRank(REDIS_KEY.PVP_RANK, 0, curRoleId);
|
||||||
@@ -142,7 +148,7 @@ export async function matchPlayerByRank(oppPlayers: OppPlayers[], mapWarJson: Di
|
|||||||
let pvpHistoryOpp = await generPlayerOppHis(pvpdefense, mapWarJson, roleId, pos);
|
let pvpHistoryOpp = await generPlayerOppHis(pvpdefense, mapWarJson, roleId, pos);
|
||||||
|
|
||||||
oppPlayers.push({
|
oppPlayers.push({
|
||||||
roleId: pvpdefense.roleId,
|
roleId: pvpHistoryOpp.oppRoleId,
|
||||||
oppDef: pvpHistoryOpp._id,
|
oppDef: pvpHistoryOpp._id,
|
||||||
pos,
|
pos,
|
||||||
isRobot: false,
|
isRobot: false,
|
||||||
@@ -151,10 +157,12 @@ export async function matchPlayerByRank(oppPlayers: OppPlayers[], mapWarJson: Di
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function matchPlayer(oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], roleId: string, pLv: number, dicOpp: DicPvpOpponent ) {
|
async function matchPlayer(oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], roleId: string, pLv: number, dicOpp: DicPvpOpponent ) {
|
||||||
|
console.log('matchPlayer', JSON.stringify(oppPlayers))
|
||||||
|
|
||||||
let { id: pos, minLv, maxLv } = dicOpp
|
let { id: pos, minLv, maxLv } = dicOpp
|
||||||
let range = await PvpDefenseModel.findByTeamLv(pLv + minLv, pLv + maxLv);
|
let range = await PvpDefenseModel.findByTeamLv(pLv + minLv, pLv + maxLv);
|
||||||
range = range.filter(cur => {
|
range = range.filter(cur => {
|
||||||
return oppPlayers.findIndex(ccur => ccur.roleId == cur.roleId) != -1;
|
return oppPlayers.findIndex(ccur => ccur.roleId == makeRobotId(cur.roleId)) == -1;
|
||||||
});
|
});
|
||||||
if(range.length <= 0) return false;
|
if(range.length <= 0) return false;
|
||||||
|
|
||||||
@@ -169,7 +177,7 @@ async function matchPlayer(oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], r
|
|||||||
}
|
}
|
||||||
let pvpHistoryOpp = await generPlayerOppHis(result, mapWarJson, roleId, pos);
|
let pvpHistoryOpp = await generPlayerOppHis(result, mapWarJson, roleId, pos);
|
||||||
oppPlayers.push({
|
oppPlayers.push({
|
||||||
roleId: result.roleId,
|
roleId: pvpHistoryOpp.oppRoleId,
|
||||||
oppDef: pvpHistoryOpp._id,
|
oppDef: pvpHistoryOpp._id,
|
||||||
pos,
|
pos,
|
||||||
isRobot: false,
|
isRobot: false,
|
||||||
@@ -205,12 +213,14 @@ async function generPlayerOppHis(result: PvpDefenseType, mapWarJson: DicWarJson[
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
let pvpHistoryOpp = await PvpHistoryOppModel.createPvpOpp({
|
let pvpHistoryOpp = await PvpHistoryOppModel.createPvpOpp({
|
||||||
...result, ...role, pos, rankLv, heroes, roleId, oppRoleId: result.roleId
|
...result, ...role, pos, rankLv, heroes, roleId, oppRoleId: makeRobotId(result.roleId)
|
||||||
});
|
});
|
||||||
return pvpHistoryOpp;
|
return pvpHistoryOpp;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function matchRobot(oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], role: RoleType, pLv: number, dicOpp: DicPvpOpponent) {
|
async function matchRobot(oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], role: RoleType, pLv: number, dicOpp: DicPvpOpponent) {
|
||||||
|
console.log('matchRobot', JSON.stringify(oppPlayers))
|
||||||
|
|
||||||
let { lv: myLv, topFiveCe: myCe, roleId } = role;
|
let { lv: myLv, topFiveCe: myCe, roleId } = role;
|
||||||
let { id: pos, minLv, maxLv, ratio } = dicOpp;
|
let { id: pos, minLv, maxLv, ratio } = dicOpp;
|
||||||
let range = gameData.pvpWar;
|
let range = gameData.pvpWar;
|
||||||
@@ -269,6 +279,16 @@ export function checkRoleIsRobot(roleId: string) {
|
|||||||
return !!roleId.match(/_r/);
|
return !!roleId.match(/_r/);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 将一般的roleId转为带_r的
|
||||||
|
export function makeRobotId(roleId: string) {
|
||||||
|
return `${roleId}_r`;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将一般的roleId去掉_r
|
||||||
|
export function robotIdComBack(robotRoleId: string) {
|
||||||
|
return robotRoleId.replace(/_r/, '')
|
||||||
|
}
|
||||||
|
|
||||||
// 根据连胜次数,获得加成的积分
|
// 根据连胜次数,获得加成的积分
|
||||||
export function getPlusScore(win: number) {
|
export function getPlusScore(win: number) {
|
||||||
let result = win - 1;
|
let result = win - 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user