9415 【BT】【后端】古神战场(战场GM命令CrossBattle 增加可虚拟参与玩家数据)
1个文件已修改
63 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/CrossBattle.py 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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