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