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