From 474eee3501d53394a17c75dd8d890121a6efbf37 Mon Sep 17 00:00:00 2001 From: luying Date: Fri, 5 Feb 2021 13:34:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=AF=BB=E5=AE=9D=E5=A5=BD=E5=8F=8B?= =?UTF-8?q?=E5=8A=A0=E6=88=90=E6=94=B9=E4=B8=BA=E5=9C=A8=E5=BC=80=E5=A7=8B?= =?UTF-8?q?=E6=88=98=E6=96=97=E6=97=B6=E5=8A=A0=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../battle/handler/comBattleHandler.ts | 6 ++--- game-server/app/services/comBattleService.ts | 27 ++++++++++++------- shared/consts/constModules/selectConst.ts | 2 +- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/game-server/app/servers/battle/handler/comBattleHandler.ts b/game-server/app/servers/battle/handler/comBattleHandler.ts index 29c041333..39159645e 100644 --- a/game-server/app/servers/battle/handler/comBattleHandler.ts +++ b/game-server/app/servers/battle/handler/comBattleHandler.ts @@ -142,7 +142,6 @@ export class ComBattleHandler { let isFrd = await getFrd(roleId, goodData.quality); const st = new RoleStatus(roleId, roleName, false, isFrd, headHid, sHid, topFiveCe, lv); - await getComBattleFriendAdd(st, roleStatus); roleStatus.push(st); roleIds.push(roleInfo.roleId); @@ -359,9 +358,6 @@ export class ComBattleHandler { teamStatus.roleIds.push(roleId); teamStatus.roleStatus.push(roleStatus); - // 好友加成 - await getComBattleFriendAdd(roleStatus, teamStatus.roleStatus); - let users = channel.getMembers(); if (users.indexOf(roleId) === -1) { channel.add(roleId, sid); @@ -574,6 +570,8 @@ export class ComBattleHandler { clearComBtlTimer(teamCode, this.teamDisTimer); // 战斗开始停止解散计时 let channelService = this.app.get('channelService'); let channel = channelService.getChannel(teamCode, false); + + await getComBattleFriendAdd(teamStatus.roleStatus); channel.pushMessage('onComBtlStart', resResult(STATUS.SUCCESS, {teamCode, roleStatus: teamStatus.roleStatus})); // 每场倒计时结算 let thiz = this; diff --git a/game-server/app/services/comBattleService.ts b/game-server/app/services/comBattleService.ts index 97af60a9f..5bce01f10 100644 --- a/game-server/app/services/comBattleService.ts +++ b/game-server/app/services/comBattleService.ts @@ -11,6 +11,7 @@ import { Channel } from 'pinus'; import { TREASURE } from '../pubUtils/dicParam'; import { decreaseItems } from './rewardService'; import { getFriendLvAdd } from './friendService'; +import { getRoleIds } from '../pubUtils/friendUtil'; /** * 在给定的品质列表中随机返回一定数量的藏宝图Id @@ -427,17 +428,23 @@ export function randEquipPrintId(warInfo) { /** * 按照好友关系,新增加成 * - * @param {RoleStatus} myRoleStatus 新增的队友 * @param {RoleStatus[]} roleStatus 队伍内的所有队友 */ -export async function getComBattleFriendAdd(myRoleStatus: RoleStatus, roleStatus: RoleStatus[]) { - let myAdd = 0; // 多好友,加成直接叠加 - for(let rs of roleStatus) { - if(myRoleStatus.roleId == rs.roleId) continue; - if(myRoleStatus.isRobot || rs.isRobot) continue; - let add = await getFriendLvAdd(myRoleStatus.roleId, rs.roleId); - rs.addFrdRatio(add); - myAdd += add; +export async function getComBattleFriendAdd(roleStatus: RoleStatus[]) { + let hasAdd = new Array(); //roleIds + for(let myRoleStatus of roleStatus) { + for(let rs of roleStatus) { + if(myRoleStatus.roleId == rs.roleId) continue; + if(myRoleStatus.isRobot || rs.isRobot) continue; + + let {roleIds} = getRoleIds([myRoleStatus.roleId, rs.roleId]); + if(hasAdd.includes(roleIds)) continue; + + let add = await getFriendLvAdd(myRoleStatus.roleId, rs.roleId); + rs.addFrdRatio(add); + myRoleStatus.addFrdRatio(add); + + hasAdd.push(roleIds); + } } - myRoleStatus.addFrdRatio(myAdd); } \ No newline at end of file diff --git a/shared/consts/constModules/selectConst.ts b/shared/consts/constModules/selectConst.ts index e6b2c0500..cdf42f234 100644 --- a/shared/consts/constModules/selectConst.ts +++ b/shared/consts/constModules/selectConst.ts @@ -1,7 +1,7 @@ export enum ROLE_SELECT { // 初始登录数据 - ENTRY = 'serverId userInfo.uid userInfo.tel userInfo.serverType ce topFiveCe teraphs roleId roleName tili lv exp gold coin vLv title hasGuild', + ENTRY = 'serverId userInfo.uid userInfo.tel userInfo.serverType ce topFiveCe teraphs roleId roleName tili lv exp gold coin vLv title hasGuild funcs', // 玩家列表显示基础数据 SHOW_SIMPLE = 'roleId roleName ce headHid sHid lv title job quitTime vLv guildName serverId userInfo.serverType', // 显示申请需要的信息