From 7e1d01ee65f55ebbe87f7bd50f576c8735abfb4e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 08 一月 2025 11:52:31 +0800
Subject: [PATCH] 10334 【越南】【英语】【BT】【砍树】境界修改-服务端(境界功能未开启时任务不计数)

---
 ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/Championship.py |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 54 insertions(+), 0 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/Championship.py b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/Championship.py
index 70f1838..2666ce2 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/Championship.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/Championship.py
@@ -19,6 +19,7 @@
 import CrossChampionship
 import PlayerDBGSEvent
 import ShareDefine
+import time
 
 
 #逻辑实现
@@ -44,6 +45,9 @@
         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]
@@ -207,9 +211,59 @@
         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)

--
Gitblit v1.8.0