From 7954987ea071032dea5a72f05ad95d7ea8bbf7aa Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 23 五月 2022 17:00:31 +0800
Subject: [PATCH] 9415 【BT】【后端】古神战场(战场GM命令CrossBattle 增加可虚拟参与玩家数据)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/CrossBattle.py |   63 +++++++++++++++++++++++++++++++
 1 files changed, 63 insertions(+), 0 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/CrossBattle.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/CrossBattle.py
index 294314a..b81d84a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/CrossBattle.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/CrossBattle.py
@@ -20,6 +20,8 @@
 import ShareDefine
 import ChConfig
 import FBCommon
+import operator
+import random
 
 
 ## 逻辑实现
@@ -36,6 +38,8 @@
         GameWorld.DebugAnswer(curPlayer, "设置阵营积分: CrossBattle 4 总积分 [可选阵营ID]")
         GameWorld.DebugAnswer(curPlayer, "重新随机大奖: CrossBattle 5")
         GameWorld.DebugAnswer(curPlayer, "复活阵营守卫: CrossBattle 6")
+        GameWorld.DebugAnswer(curPlayer, "虚拟参与玩家: CrossBattle 7 阵营ID 人数  积分")
+        GameWorld.DebugAnswer(curPlayer, "输出阵营玩家: CrossBattle 8 阵营ID")
         GameWorld.DebugAnswer(curPlayer, "可选玩家/阵营ID没填则默认自身")
         return
     
@@ -104,4 +108,63 @@
         GameWorld.DebugAnswer(curPlayer, "复活阵营守卫! %s" % rebornNPCIDList)
         return
     
+    # 虚拟参与玩家
+    if value1 == 7:
+        faction = cmdList[1] if len(cmdList) > 1 else 1
+        playerCount = cmdList[2] if len(cmdList) > 2 else 0
+        score = cmdList[3] if len(cmdList) > 3 else 0
+        
+        fakePlayerID = 1000 # 假玩家ID
+        for f in [1, 2]:
+            fObj = GameLogic_CrossBattlefield.GetBattleFactionObj(f)
+            for playerID in fObj.factionPlayerDict.keys():
+                if playerID >= 10000:
+                    continue
+                if playerID > fakePlayerID:
+                    fakePlayerID = playerID
+                    
+        factionObj = GameLogic_CrossBattlefield.GetBattleFactionObj(faction)
+        
+        for _ in xrange(playerCount):
+            fakePlayerID += 1
+            battleObj = GameLogic_CrossBattlefield.GetBattlePlayerObj(fakePlayerID)
+            battleObj.job = random.randint(1, 2)
+            battleObj.accID = "fakeAccID%s@test@s86" % fakePlayerID
+            battleObj.name = "fakeName%s" % fakePlayerID
+            battleObj.realmLV = random.randint(10, 20)
+            battleObj.fightPower = random.randint(10000000, 20000000)
+            
+            battleObj.faction = faction
+            battleObj.factionObj = factionObj
+            if fakePlayerID not in factionObj.factionPlayerDict:
+                factionObj.factionPlayerDict[fakePlayerID] = battleObj
+                
+            battleObj.addPlayerScore(None, score)
+            
+        GameWorld.DebugAnswer(curPlayer, "虚拟参与玩家阵营(%s),人数(%s),积分(%s)" % (faction, playerCount, score))
+        return
+    
+    # 输出阵营玩家
+    if value1 == 8:
+        printFaction = cmdList[1] if len(cmdList) > 1 else 0
+        for faction in [1, 2]:
+            if printFaction and printFaction != faction:
+                continue
+            factionObj = GameLogic_CrossBattlefield.GetBattleFactionObj(faction)
+            
+            factionObj.battlePlayerSortList = factionObj.factionPlayerDict.values()
+            factionObj.battlePlayerSortList.sort(key=operator.attrgetter("score", "scoreSortTime"), reverse=True)
+            GameWorld.DebugAnswer(curPlayer, "------ 阵营(%s),人数(%s) ------" % (faction, len(factionObj.battlePlayerSortList)))
+            
+            for num, batObj in enumerate(factionObj.battlePlayerSortList, 1):
+                battleObj = GameLogic_CrossBattlefield.GetBattlePlayerObj(batObj.playerID)
+                playerID = battleObj.playerID
+                playerName = battleObj.name.decode(GameWorld.GetCharacterEncoding()).encode(ShareDefine.Def_Game_Character_Encoding)
+                score = battleObj.score
+                superItemContribution = battleObj.superItemContribution
+                GameWorld.DebugAnswer(curPlayer, " %s %s:%s,得分:%s,贡献:%s" % (num, playerName, playerID, score, superItemContribution))
+                  
+        return
+        
+    
     return

--
Gitblit v1.8.0