From 68be5555215355ff0ad64c44f7635a422d67758d Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 20 十二月 2019 12:45:50 +0800
Subject: [PATCH] 8346 【恺英】【后端】协助系统(AssistAward数值2key改字符串)

---
 ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmPK.py |   42 +++++++++++++++++++++++++++++++++++++++---
 1 files changed, 39 insertions(+), 3 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmPK.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmPK.py
index aa6a7b2..57fd24b 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmPK.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmPK.py
@@ -968,6 +968,35 @@
         
     return
 
+def __DoTimeOutPlayerMatchRobot(matchTickSortList, matchPlayerIDList, tick):
+    ## 超时很久很久的玩家系统匹配机器人
+    if not matchPlayerIDList:
+        return
+    
+    matchRobotTimeoutInfo = IpyGameDataPY.GetFuncEvalCfg("CrossRealmPKRobot", 1)
+    if len(matchRobotTimeoutInfo) != 2:
+        return
+    matchRobotTick = random.randint(matchRobotTimeoutInfo[0], matchRobotTimeoutInfo[1]) * 1000 # 超时匹配机器人时间tick
+    
+    for i, matchPlayer in enumerate(matchTickSortList):
+        
+        playerID = matchPlayer.playerID
+        if playerID not in matchPlayerIDList:
+            continue
+        
+        if tick - matchPlayer.matchTick < matchRobotTick:
+            #GameWorld.DebugLog("    i=%s,玩家未满足超时匹配机器人时间条件!" % (i))
+            break
+        
+        matchPlayerIDList.remove(playerID) # 这个列表为分区对应匹配中的玩家列表 PyGameData.g_crossPKZoneMatchPlayerDict[pkZoneID]
+        
+        PyGameData.g_crossPKZoneMatchRobotPlayerDict[playerID] = matchPlayer
+        matchPlayer.notifyMatchRobotTick = -1
+        serverGroupID = matchPlayer.serverGroupID
+        GameWorld.DebugLog("直接通知超时玩家匹配到机器人: serverGroupID=%s" % (serverGroupID), playerID)
+        CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_PKMatchReqRet, [playerID, 2], [serverGroupID])
+    return
+
 def ClientServerMsg_PKCancel(playerInfoDict, tick):
     ## 取消匹配
     
@@ -1180,10 +1209,13 @@
     
     # 每个赛区单独匹配
     for pkZoneID, matchPlayerIDList in PyGameData.g_crossPKZoneMatchPlayerDict.items():
-        matchPlayerCount = len(matchPlayerIDList)
-        if matchPlayerCount < 2:
-            #GameWorld.Log("匹配PK人数不足,不处理!pkZoneID=%s, 总人数:%s" % (pkZoneID, matchPlayerCount))
+        if not matchPlayerIDList:
+            #GameWorld.Log("没有玩家匹配PK,不处理!pkZoneID=%s" % (pkZoneID))
             continue
+        matchPlayerCount = len(matchPlayerIDList)
+#        if matchPlayerCount < 2:
+#            #GameWorld.Log("匹配PK人数不足,不处理!pkZoneID=%s, 总人数:%s" % (pkZoneID, matchPlayerCount))
+#            continue
         
         GameWorld.DebugLog("★★★★★★★★★★开始跨服PK匹配(pkZoneID=%s, 总人数:%s)★★★★★★★★★★" % (pkZoneID, matchPlayerCount))
         
@@ -1211,6 +1243,8 @@
         GameWorld.DebugLog("==========匹配结束(总匹配队伍:%s)==========" % len(matchPlayerVSList))
         #GameWorld.DebugLog("crossPlayerIDList=%s" % PyGameData.g_crossPKPlayerDict.keys())
         #GameWorld.DebugLog("matchPlayerIDList=%s" % PyGameData.g_crossPKZoneMatchPlayerDict[pkZoneID])
+        
+        __DoTimeOutPlayerMatchRobot(matchTickSortList, matchPlayerIDList, tick)
     return
 
 
@@ -1701,6 +1735,8 @@
         GameWorld.DebugLog("玩家没有匹配到机器人,无法结算PK机器人奖励!", playerID)
         return
     pkPlayer = PyGameData.g_crossPKZoneMatchRobotPlayerDict.pop(playerID)
+    if playerID in PyGameData.g_crossPKPlayerDict:
+        PyGameData.g_crossPKPlayerDict.pop(playerID)
     zoneID = pkPlayer.pkZoneID
     seasonID = pkPlayer.seasonID
     

--
Gitblit v1.8.0