From 2638c8b67d1dcac1c774f942ac144579c6f82ec1 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 11 九月 2018 21:41:11 +0800
Subject: [PATCH] 3479 【后端】【主干】【1.0.15】助战发送喊话时新增逻辑(自动加入匹配中的队伍);
---
ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py | 6 +++
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py | 72 ++++++++++++++++++++++++++++++++++++
2 files changed, 78 insertions(+), 0 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py b/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py
index 49d2bb0..5f1322b 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py
@@ -709,6 +709,12 @@
Def_FBMapID_XMZZ = 31010
#仙盟boss副本
Def_FBMapID_FamilyBossMap = 31210
+#宗门试炼
+Def_FBMapID_MunekadoTrial = 60010
+#混乱妖域
+Def_FBMapID_ChaosDemon = 31180
+#娲皇遗迹
+Def_FBMapID_QueenRelics = 51010
#同系职业枚举
JOB_TYPY_COUNT = 5
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py
index 0d135e1..817fd01 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py
@@ -2028,6 +2028,11 @@
curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
packTagMapID = clientData.TagMapID
+ # 发2时代表助战匹配
+ if packTagMapID == 2:
+ __DoMatchHelpFightTeam(curPlayer, tick)
+ return
+
tagMapEx = clientData.TagMapEx
tagMapID = packTagMapID
curMapID = curPlayer.GetMapID()
@@ -2240,6 +2245,73 @@
PlayerControl.NotifyCode(curPlayer, "TeamMatchingSucceed")
return
+def __DoMatchHelpFightTeam(curPlayer, tick):
+ ''' 一次性匹配需要助战的队伍,满足队伍条件自动加入匹配队伍
+ 按以下优先级加入:
+ 大境界渡劫 > 所有宗门试炼 > 所有娲皇遗迹 > 混乱妖域
+ 自己有队伍时发送助战喊话不执行此逻辑
+ '''
+ curTeam = curPlayer.GetTeam()
+ if curTeam:
+ return
+
+ matchingTeamDict = PyGameData.g_matchingTeamDict
+ GameWorld.DebugLog("__DoMatchHelpFightTeam matchingTeamDict=%s" % (matchingTeamDict), curPlayer.GetPlayerID())
+ if not matchingTeamDict:
+ return
+
+ playerLV = curPlayer.GetLV()
+ matchMapIDList = [ChConfig.Def_FBMapID_DuJie, ChConfig.Def_FBMapID_MunekadoTrial, ChConfig.Def_FBMapID_QueenRelics, ChConfig.Def_FBMapID_ChaosDemon]
+
+ teamMgr = GameWorld.GetTeamManager()
+ for matchMapID in matchMapIDList:
+ matchTeamInfoList = []
+ for key, teamIDList in matchingTeamDict.items():
+ tagMapID, tagMapEx = key
+ if tagMapID != matchMapID:
+ continue
+
+ for teamID in teamIDList:
+ team = teamMgr.FindTeam(teamID)
+ if not team:
+ continue
+
+ reqMinLV = team.GetReqMinLV()
+ reqMaxLV = team.GetReqMaxLV()
+
+ if not (reqMinLV <= playerLV <= reqMaxLV):
+ continue
+
+ onLineCount = CheckTeamOnLineCount(team)
+ # 优先级: 人数多的 > 线路简单的 > 队伍人数多的 ...
+ matchTeamInfoList.append([onLineCount, 999999 - tagMapEx, team.GetTeamPlayerCount(), teamID, team])
+
+ if not matchTeamInfoList:
+ GameWorld.DebugLog(" 没有满足助战等级条件匹配中的队伍: matchMapID=%s" % (matchMapID))
+ continue
+
+ matchTeamInfoList.sort(reverse=True) # 倒序排
+ GameWorld.DebugLog(" 匹配队伍顺序: matchMapID=%s,%s" % (matchMapID, matchTeamInfoList))
+
+ joinTeamID = 0
+ for teamInfo in matchTeamInfoList:
+ team = teamInfo[-1]
+ if not team:
+ continue
+
+ leader = GetTeamLeader(team)
+ if not leader:
+ continue
+
+ if DoPlayerJoinTeam(curPlayer, leader, team, tick, isAutoMatchJoin=False):
+ joinTeamID = team.GetTeamID()
+ break
+
+ GameWorld.DebugLog(" joinTeamID=%s" % joinTeamID)
+ if joinTeamID:
+ break
+
+ return
#// B9 08 取消匹配队伍或玩家 #tagCGCancelMatchTeam
#
--
Gitblit v1.8.0