pvp: 修复重复对手bug
This commit is contained in:
@@ -100,8 +100,8 @@ export async function refreshEnemies(role: RoleType, score: number, pLv: number)
|
||||
for(let dicOpp of opp) {
|
||||
let flag = false; // 是否筛选成功
|
||||
if(score >= PVP_CONST.SCORE_LINE) { // 将这个放到const
|
||||
flag = await matchPlayer(oppPlayers, mapWarJson, roleId, pLv, dicOpp); // 按照等级匹配对手
|
||||
if(!flag) flag = await matchPlayerByRank(oppPlayers, mapWarJson, roleId, dicOpp.id); // 当前后分数段没有时,返回前一名的玩家
|
||||
flag = await matchPlayer(system.seasonNum, oppPlayers, mapWarJson, roleId, pLv, dicOpp); // 按照等级匹配对手
|
||||
if(!flag) flag = await matchPlayerByRank(system.seasonNum, oppPlayers, mapWarJson, roleId, dicOpp.id); // 当前后分数段没有时,返回前一名的玩家
|
||||
if(!flag) flag = await matchRobot(oppPlayers, mapWarJson, role, pLv, dicOpp);
|
||||
} else {
|
||||
flag = await matchRobot(oppPlayers, mapWarJson, role, pLv, dicOpp);
|
||||
@@ -112,24 +112,33 @@ export async function refreshEnemies(role: RoleType, score: number, pLv: number)
|
||||
return oppPlayers;
|
||||
}
|
||||
|
||||
export async function matchPlayerByRank(oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], roleId: string, pos: number) {
|
||||
export async function matchPlayerByRank(seasonNum: number, oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], roleId: string, pos: number) {
|
||||
console.log('matchPlayerByRank', JSON.stringify(oppPlayers))
|
||||
let ridRanks = new Array<number>(); // 已经被使用了的排名
|
||||
for(let { roleId: curRoleId } of oppPlayers) {
|
||||
let rankLv = await getMyRank(REDIS_KEY.PVP_RANK, 0, robotIdComBack(curRoleId));
|
||||
ridRanks.push(rankLv);
|
||||
}
|
||||
console.log('ridRanks', pos, JSON.stringify(ridRanks));
|
||||
let myRank = await getMyRank(REDIS_KEY.PVP_RANK, 0, roleId);
|
||||
ridRanks.push(myRank);
|
||||
let oppRoleId = '';
|
||||
let oppRank = 0;
|
||||
if(myRank == 1) { // 第一名
|
||||
if(pos == 1) {
|
||||
oppRank = 2;
|
||||
while(ridRanks.includes(oppRank)) {
|
||||
oppRank --;
|
||||
}
|
||||
} else if(pos == 2) {
|
||||
oppRank = 3;
|
||||
while(ridRanks.includes(oppRank)) {
|
||||
oppRank --;
|
||||
}
|
||||
} else {
|
||||
oppRank = 4;
|
||||
while(ridRanks.includes(oppRank)) {
|
||||
oppRank ++;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(pos == 1 || pos == 2) { // 刷新我前一名
|
||||
@@ -149,7 +158,7 @@ export async function matchPlayerByRank(oppPlayers: OppPlayers[], mapWarJson: Di
|
||||
oppRoleId = result[0];
|
||||
|
||||
let pvpdefense = await PvpDefenseModel.findByRoleIdIncludeAll(oppRoleId);
|
||||
if(!pvpdefense) return false;
|
||||
if(!pvpdefense || pvpdefense.seasonNum != seasonNum) return false;
|
||||
let pvpHistoryOpp = await generPlayerOppHis(pvpdefense, mapWarJson, roleId, pos);
|
||||
if(!pvpHistoryOpp) return false;
|
||||
|
||||
@@ -162,11 +171,11 @@ export async function matchPlayerByRank(oppPlayers: OppPlayers[], mapWarJson: Di
|
||||
return true
|
||||
}
|
||||
|
||||
async function matchPlayer(oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], roleId: string, pLv: number, dicOpp: DicPvpOpponent ) {
|
||||
async function matchPlayer(seasonNum: number, oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], roleId: string, pLv: number, dicOpp: DicPvpOpponent ) {
|
||||
console.log('matchPlayer', JSON.stringify(oppPlayers))
|
||||
|
||||
let { id: pos, minLv, maxLv } = dicOpp
|
||||
let range = await PvpDefenseModel.findByTeamLv(pLv + minLv, pLv + maxLv);
|
||||
let range = await PvpDefenseModel.findByTeamLv(seasonNum, pLv + minLv, pLv + maxLv);
|
||||
range = range.filter(cur => {
|
||||
return oppPlayers.findIndex(ccur => ccur.roleId == makeRobotId(cur.roleId)) == -1;
|
||||
});
|
||||
@@ -273,7 +282,7 @@ async function matchRobot(oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], ro
|
||||
if(hisPLv < 1) hisPLv = 1
|
||||
|
||||
let pvpHistoryOpp = await PvpHistoryOppModel.createPvpOpp({
|
||||
roleId, oppRoleId, roleName, pos, defCe, pLv: hisPLv, lv: myLv, heroes
|
||||
roleId, oppRoleId, roleName, pos, defCe, pLv: hisPLv, lv: myLv, heroes, rankLv: 0
|
||||
});
|
||||
|
||||
oppPlayers.push({
|
||||
|
||||
Reference in New Issue
Block a user