| | |
| | | import CrossChampionship
|
| | | import PlayerDBGSEvent
|
| | | import ShareDefine
|
| | | import time
|
| | |
|
| | |
|
| | | #逻辑实现
|
| | |
| | | GameWorld.DebugAnswer(curPlayer, "如果没有指定ID则该组重新随机匹配")
|
| | | GameWorld.DebugAnswer(curPlayer, "命令需在对应的阶段设置才有效;")
|
| | | GameWorld.DebugAnswer(curPlayer, "重置活动数据需在非活动时间重置,不然可能导致活动状态异常")
|
| | | GameWorld.DebugAnswer(curPlayer, "虚拟结算排名: Championship 8 分区 第1名ID ...")
|
| | | GameWorld.DebugAnswer(curPlayer, "虚拟结算执行: Championship over")
|
| | | GameWorld.DebugAnswer(curPlayer, "注:虚拟结算的命令主要用于快速测试结算用,玩家ID不足则假人代替")
|
| | |
|
| | | else:
|
| | | value1 = gmList[0]
|
| | |
| | | CrossChampionship.Send_CrossServerMsg_ChampionshipGroup(groupMark)
|
| | | return
|
| | |
|
| | | if value1 == 8:
|
| | | __FackOverData(playerID, serverGroupID, gmList)
|
| | | return
|
| | | if value1 == "over":
|
| | | GameWorld.DebugAnswerCross(playerID, serverGroupID, "虚拟结算执行")
|
| | | CrossChampionship.DoCrossChampionshipFinalOver()
|
| | | return
|
| | | GameWorld.DebugAnswerCross(playerID, serverGroupID, "命令参数错误,详见命令说明")
|
| | | return
|
| | |
|
| | | def __FackOverData(playerID, serverGroupID, gmList):
|
| | | ## 虚拟结算数据
|
| | | zoneID = gmList[1] if len(gmList) > 1 else 0
|
| | | rankPlayerIDList = gmList[2:]
|
| | | batPlayerCount = CrossChampionship.Def_CrossChampionshipPlayerWFCount
|
| | | # 先设置参赛玩家
|
| | | champMgr = CrossChampionship.GetChampionshipMgr()
|
| | | pkZoneMgr = champMgr.GetChampPKZoneMgr(zoneID, True)
|
| | | if len(rankPlayerIDList) < batPlayerCount:
|
| | | # 不足的机器人补足
|
| | | zonePlayerIDStar = zoneID * 100 + 1 # 确保每个分区的假人不重复
|
| | | rankPlayerIDList += range(zonePlayerIDStar, zonePlayerIDStar + (batPlayerCount - len(rankPlayerIDList)))
|
| | | pkZoneMgr.playerDict = {} # 清空玩家,重新设置
|
| | | CrossChampionship.Send_CrossServerMsg_ChampionshipPlayer(isSync=True, clearPlayer=True)
|
| | | for pID in rankPlayerIDList:
|
| | | batPlayer = CrossChampionship.ChampionshipBatPlayer()
|
| | | batPlayer.zoneID = zoneID
|
| | | batPlayer.playerID = pID
|
| | | pkZoneMgr.playerDict[pID] = batPlayer
|
| | | CrossChampionship.Send_CrossServerMsg_ChampionshipPlayer(isSync=True)
|
| | | |
| | | # 虚拟战斗场次
|
| | | overTime = int(time.time())
|
| | | pkZoneMgr.battleInfo = {} # 清空对战记录
|
| | | battleIndexDict = {8:[[1, 5], [3, 7], [2, 6], [4, 8]], 4:[[1, 3], [5, 7], [2, 4], [6, 8]], 2:[[1, 2], [3, 4], [5, 6], [7, 8]]}
|
| | | for groupMark in [8, 4, 2]:
|
| | | battleList = battleIndexDict[groupMark]
|
| | | for battleNum in range(1, 1 + len(battleList)):
|
| | | battleRankInfo = battleList[battleNum - 1]
|
| | | battle = CrossChampionship.ChampionshipBattle()
|
| | | battle.overTime = overTime
|
| | | battle.zoneID = zoneID
|
| | | battle.groupMark = groupMark
|
| | | battle.battleNum = battleNum
|
| | | battle.playerIDA = rankPlayerIDList[battleRankInfo[0] - 1]
|
| | | battle.playerIDB = rankPlayerIDList[battleRankInfo[1] - 1]
|
| | | battle.winPlayerID = battle.playerIDA
|
| | | pkZoneMgr.AddBattle(groupMark, battleNum, battle)
|
| | | CrossChampionship.Send_CrossServerMsg_ChampionshipGroup(groupMark)
|
| | | |
| | | GameWorld.DebugAnswerCross(playerID, serverGroupID, "虚拟结算排名:分区%s,%s" % (zoneID, rankPlayerIDList))
|
| | | return
|
| | |
|
| | | def __PrintChampionshipInfo():
|
| | | GameWorld.Log("================ 跨服排位当前信息 ==================")
|
| | | ID = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_CrossChampionshipID)
|