| | |
| | | playerInfoList = []
|
| | | for playerID in [playerIDA, playerIDB]:
|
| | | player = copyMapPlayerManager.FindPlayerByID(playerID)
|
| | | # 还是离线时间的,走掉线逻辑,越晚掉线的赢;需要加这个逻辑主要是因为当玩家没有触发完整登录流程导致玩家在线但是没有触发DoEnter
|
| | | playerLeaveTick = gameFB.GetGameFBDictByKey(GameFBDict_PlayerLeaveTick % playerID)
|
| | | if playerLeaveTick:
|
| | | pvpDamage, sortTick, curHP, curMaxHP = 0, 0, 0, 0
|
| | | playerInfoList.append([pvpDamage, sortTick, curHP, curMaxHP, playerLeaveTick, playerID, player])
|
| | | GameWorld.Log("PK超时: playerLeaveTick=%s" % (playerLeaveTick), playerID)
|
| | | continue
|
| | | pvpDamage = gameFB.GetPlayerGameFBDictByKey(playerID, FBPDict_PVPDamage)
|
| | | pvpDamTick = gameFB.GetPlayerGameFBDictByKey(playerID, FBPDict_PVPDamUpdTick)
|
| | | sortTick = tick - pvpDamTick
|
| | | curHP = 0 if not player else player.GetHP()
|
| | | curMaxHP = 0 if not player else player.GetMaxHP()
|
| | | playerInfoList.append([pvpDamage, sortTick, curHP, curMaxHP, playerID, player])
|
| | | GameWorld.Log("PK超时: pvpDamge=%s,pvpDamTick=%s,tick=%s,sortTick=%s,HP=%s/%s" |
| | | % (pvpDamage, pvpDamTick, tick, sortTick, curHP, curMaxHP), playerID)
|
| | | playerInfoList.append([pvpDamage, sortTick, curHP, curMaxHP, playerLeaveTick, playerID, player])
|
| | | GameWorld.Log("PK超时: pvpDamge=%s,pvpDamTick=%s,tick=%s,sortTick=%s,HP=%s/%s,playerLeaveTick=%s" |
| | | % (pvpDamage, pvpDamTick, tick, sortTick, curHP, curMaxHP, playerLeaveTick), playerID)
|
| | |
|
| | | playerInfoList.sort(reverse=True)
|
| | | GameWorld.Log("PK超时, 进入结算!playerInfoList=%s" % str(playerInfoList))
|
| | |
| | | prepareTime = fbTimeList[Def_Time_MapPrepare] * 1000
|
| | | helpDict["prepareTime"] = prepareTime
|
| | |
|
| | | roundNum = gameFB.GetGameFBDictByKey(FB_RoundNum)
|
| | | winnerID = gameFB.GetGameFBDictByKey(FB_RoundWinPlayerID % roundNum)
|
| | | |
| | | nextRoundNum = gameFB.GetGameFBDictByKey(FB_RoundNum) + 1
|
| | | gameFB.SetGameFBDict(FB_RoundNum, nextRoundNum)
|
| | |
|
| | |
| | | GameWorld.DebugLog("复活玩家...", player.GetPlayerID())
|
| | | ChPlayer.PlayerRebornByType(player, ChConfig.rebornType_System, tick, isAddSuperBuff=False)
|
| | | __ResetPlayerState(gameFB, player, playerID)
|
| | | elif winnerID and playerID != winnerID:
|
| | | GameWorld.DebugLog("平局,输的玩家回满血!", playerID)
|
| | | __ResetPlayerState(gameFB, player, playerID) |
| | | else:
|
| | | __ResetPlayerState(gameFB, player, playerID, False)
|
| | |
|