| | |
| | |
|
| | | 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):
|
| | | ## 取消匹配
|
| | |
|
| | |
| | |
|
| | | # 每个赛区单独匹配
|
| | | 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))
|
| | |
|
| | |
| | | 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
|
| | |
|
| | |
|
| | |
| | | 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
|
| | |
|