| #!/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  |