#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#-------------------------------------------------------------------------------  
 | 
#  
 | 
##@package GM.Commands.CrossBattle  
 | 
#  
 | 
# @todo:¿ç·þÕ½³¡  
 | 
# @author hxp  
 | 
# @date 2022-01-06  
 | 
# @version 1.0  
 | 
#  
 | 
# ÏêϸÃèÊö: ¿ç·þÕ½³¡  
 | 
#  
 | 
#-------------------------------------------------------------------------------  
 | 
#"""Version = 2022-01-06 20:30"""  
 | 
#-------------------------------------------------------------------------------  
 | 
  
 | 
import GameWorld  
 | 
import GameLogic_CrossBattlefield  
 | 
import ShareDefine  
 | 
import ChConfig  
 | 
import FBCommon  
 | 
import operator  
 | 
import random  
 | 
  
 | 
  
 | 
## Â߼ʵÏÖ  
 | 
#  @param curPlayer  
 | 
#  @param cmdList ²ÎÊýÁÐ±í  
 | 
#  @return None  
 | 
def OnExec(curPlayer, cmdList):  
 | 
      
 | 
    if not cmdList:  
 | 
        GameWorld.DebugAnswer(curPlayer, "--------------------------------")  
 | 
        GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÍæ¼Ò»ý·Ö: CrossBattle 1 ×Ü»ý·Ö [¿ÉÑ¡Íæ¼ÒID]")  
 | 
        GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÍæ¼Ò»÷ɱ: CrossBattle 2 »÷ɱÊý [¿ÉÑ¡Íæ¼ÒID]")  
 | 
        GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÍæ¼Ò¹±Ï×: CrossBattle 3 ¹±Ï×¶È [¿ÉÑ¡Íæ¼ÒID]")  
 | 
        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  
 | 
      
 | 
    tick = GameWorld.GetGameWorld().GetTick()  
 | 
    playerID = curPlayer.GetPlayerID()  
 | 
    mapID = FBCommon.GetRecordMapID(GameWorld.GetMap().GetMapID())  
 | 
    value1 = cmdList[0]  
 | 
    if value1 in [1, 2, 3, 4, 5, 6] and not GameWorld.IsCrossServer() or mapID != ChConfig.Def_FBMapID_CrossBattlefield:  
 | 
        GameWorld.DebugAnswer(curPlayer, "¸ÃÃüÁîÐèÔÚ¿ç·þÕ½³¡Ê¹ÓÃCrossServer·¢ËÍ")  
 | 
        return  
 | 
          
 | 
    # ÉèÖÃÍæ¼Ò»ý·Ö  
 | 
    if value1 == 1:  
 | 
        setScore = cmdList[1] if len(cmdList) > 1 else 1  
 | 
        tagPlayerID = cmdList[2] if len(cmdList) > 2 else playerID  
 | 
        battleObj = GameLogic_CrossBattlefield.GetBattlePlayerObj(tagPlayerID)  
 | 
        battleObj.addPlayerScore(curPlayer, setScore - battleObj.score)  
 | 
        GameWorld.DebugAnswer(curPlayer, "Íæ¼Ò(%s)»ý·Ö: %s" % (tagPlayerID, battleObj.score))  
 | 
        GameLogic_CrossBattlefield.NotifyBattlefieldHelp()  
 | 
        return  
 | 
      
 | 
    # ÉèÖÃÍæ¼Ò»÷ɱ  
 | 
    if value1 == 2:  
 | 
        setCount = cmdList[1] if len(cmdList) > 1 else 1  
 | 
        tagPlayerID = cmdList[2] if len(cmdList) > 2 else playerID  
 | 
        battleObj = GameLogic_CrossBattlefield.GetBattlePlayerObj(tagPlayerID)  
 | 
        battleObj.addKillCount(setCount - battleObj.killCount)  
 | 
        GameWorld.DebugAnswer(curPlayer, "Íæ¼Ò(%s)»÷ɱÊý: %s, Á¬É±Êý: %s" % (tagPlayerID, battleObj.killCount, battleObj.continueKillCount))  
 | 
        GameLogic_CrossBattlefield.NotifyBattlefieldHelp()  
 | 
        return  
 | 
      
 | 
    # ÉèÖÃÍæ¼Ò¹±Ï×¶È  
 | 
    if value1 == 3:  
 | 
        setProgress = cmdList[1] if len(cmdList) > 1 else 1  
 | 
        tagPlayerID = cmdList[2] if len(cmdList) > 2 else playerID  
 | 
        battleObj = GameLogic_CrossBattlefield.GetBattlePlayerObj(tagPlayerID)  
 | 
        battleObj.addSuperItemContribution(setProgress - battleObj.superItemContribution)  
 | 
        GameWorld.DebugAnswer(curPlayer, "Íæ¼Ò(%s)¹±Ï×¶È: %s" % (tagPlayerID, battleObj.superItemContribution))  
 | 
        GameLogic_CrossBattlefield.NotifyBattlefieldHelp()  
 | 
        return  
 | 
      
 | 
    # ÉèÖÃÕóÓª»ý·Ö  
 | 
    if value1 == 4:  
 | 
        setScore = cmdList[1] if len(cmdList) > 1 else 1  
 | 
        tagFaction = cmdList[2] if len(cmdList) > 2 else 0  
 | 
        if not tagFaction or tagFaction not in ShareDefine.CampTypeList:  
 | 
            battleObj = GameLogic_CrossBattlefield.GetBattlePlayerObj(playerID)  
 | 
            tagFaction = battleObj.faction  
 | 
        factionObj = GameLogic_CrossBattlefield.GetBattleFactionObj(tagFaction)  
 | 
        factionObj.addFactionScore(setScore - factionObj.score)  
 | 
        GameWorld.DebugAnswer(curPlayer, "ÕóÓª(%s)»ý·Ö: %s" % (tagFaction, factionObj.score))  
 | 
        GameLogic_CrossBattlefield.NotifyBattlefieldHelp()  
 | 
        return  
 | 
      
 | 
    # ÖØÖôó½±ÐÅÏ¢  
 | 
    if value1 == 5:  
 | 
        worldObj = GameLogic_CrossBattlefield.GetBattleWorld()  
 | 
        worldObj.RandSuperTask()  
 | 
        GameWorld.DebugAnswer(curPlayer, "ÖØÐÂËæ»ú´ó½±OK! %s" % worldObj.superItemInfo)  
 | 
        GameLogic_CrossBattlefield.NotifyBattlefieldHelp(True)  
 | 
        return  
 | 
      
 | 
    # ¸´»îÕóÓªÊØÎÀ  
 | 
    if value1 == 6:  
 | 
        rebornNPCIDList = GameLogic_CrossBattlefield.rebornGurad()  
 | 
        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, isCheckVictory=False)  
 | 
              
 | 
        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  
 |