#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package GM.Commands.PlayerMirror # # @todo:´´½¨Íæ¼Ò¾µÏñ½øÐÐÕ½¶· # @author hxp # @date 2024-10-17 # @version 1.0 # # ÏêϸÃèÊö: ´´½¨Íæ¼Ò¾µÏñ, ¿¼ÂǵØÍ¼ÈËÂúÎÊÌ⣬py¿ÉÒÔ×ö¸öÔ¤ÅУ¬¿Éµ÷ÕûµØÍ¼ÅäÖõÄÈËÊýÉÏÏÞ # #------------------------------------------------------------------------------- #"""Version = 2024-10-17 15:00""" #------------------------------------------------------------------------------- import GameWorld import MirrorAttack import PlayerViewCacheTube import PlayerFB import ChConfig ## GMÃüÁîÖ´ÐÐÈë¿Ú # @param curPlayer µ±Ç°Íæ¼Ò # @param paramList ²ÎÊýÁбí [Íæ¼ÒID] # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def OnExec(curPlayer, paramList): if not paramList: GameWorld.DebugAnswer(curPlayer, "-------------------%s" % GameWorld.GetCurrentDataTimeStr()) GameWorld.DebugAnswer(curPlayer, "´´½¨Õ½¶·: PlayerMirror c ÊÇ·ñºǫ́ [Ä¿±êID ID2 ...]") GameWorld.DebugAnswer(curPlayer, "¿ªÊ¼Õ½¶·: PlayerMirror s") GameWorld.DebugAnswer(curPlayer, "Ìø¹ýÕ½¶·: PlayerMirror q") GameWorld.DebugAnswer(curPlayer, "Í˳öÕ½¶·: PlayerMirror e") GameWorld.DebugAnswer(curPlayer, "¸üоµÏñ: PlayerMirror 5") GameWorld.DebugAnswer(curPlayer, "¼Ó¼ÙÊý¾Ý: PlayerMirror a ¸öÊý [ÆðʼID Õ½Á¦ Çø·þID Ä£°ækey]") GameWorld.DebugAnswer(curPlayer, "ɾ¼ÙÊý¾Ý: PlayerMirror d") GameWorld.DebugAnswer(curPlayer, "Êä³öÊý¾Ý: PlayerMirror p [ÆðʼË÷Òý ¸öÊý ]") GameWorld.DebugAnswer(curPlayer, "ÊÇ·ñºǫ́:0-Íæ¼Ò×ÔÉí²ÎÓëÕ½¶·") GameWorld.DebugAnswer(curPlayer, "ÊÇ·ñºǫ́:1-Íæ¼ÒÎÞ¸ÐÖª£¬ÏµÍ³Ö±½Ó³ö½á¹û") GameWorld.DebugAnswer(curPlayer, "Ä¿±êID:ÎÞ-×Ô¼º;>0-ÆäËûÍæ¼ÒIDÖ§³Ö¿ç·þÍæ¼ÒID") GameWorld.DebugAnswer(curPlayer, "Ä¿±êID¶à¸öʱΪ¶à¶Ô¶àÕ½¶·") GameWorld.DebugAnswer(curPlayer, "¶à¶Ô¶àÕóÓª·ÖÅä¾ù·ÖAABBB¼´Íæ¼ÒºÍAA¶ÔBBB") return mapID = ChConfig.Def_FBMapID_MirrorBattle lineID = 0 tick = GameWorld.GetGameWorld().GetTick() playerID = curPlayer.GetPlayerID() value1 = paramList[0] if value1 == "c": isSysbg = paramList[1] if len(paramList) > 1 else 0 if not isSysbg: if not PlayerFB.DoEnterCustomScene(curPlayer, mapID, lineID, tick): GameWorld.DebugAnswer(curPlayer, "½øÈë×Ô¶¨ÒåPK´´¾°Ê§°Ü:%s" % mapID) return mirrorIDList = paramList[2:] if not mirrorIDList: mirrorIDList.append(playerID) factionIDListA, factionIDListB = [playerID], [] while mirrorIDList: # ºóÃæÎª¶ÔÊÖ factionIDListB.append(mirrorIDList.pop(-1)) # Ç°ÃæÎª¶ÓÓÑ if mirrorIDList: factionIDListA.append(mirrorIDList.pop(0)) posX, posY = curPlayer.GetPosX(), curPlayer.GetPosY() battlePlayerList = [] for i, batPlayerID in enumerate(factionIDListA): battlePlayerList.append({"playerID":batPlayerID, "faction":1, "posX":posX, "posY":posY + i * 5}) for i, batPlayerID in enumerate(factionIDListB): battlePlayerList.append({"playerID":batPlayerID, "faction":2, "posX":posX + 5, "posY":posY + i * 5}) requestID = playerID if MirrorAttack.OnRequestCreateMirrorBattle(mapID, lineID, requestID, battlePlayerList, isSysbg, curPlayer): GameWorld.DebugAnswer(curPlayer, "ÇëÇó´´½¨¾µÏñ: %s VS %s" % (factionIDListA, factionIDListB)) else: GameWorld.DebugAnswer(curPlayer, "ÇëÇó´´½¨¾µÏñʧ°Ü: %s VS %s" % (factionIDListA, factionIDListB)) elif value1 == "s": battle = MirrorAttack.GetMirrorBattle(curPlayer) if battle: MirrorAttack.OnMirrorBattleStart(battle.battleID) elif value1 == "q": battle = MirrorAttack.GetMirrorBattle(curPlayer) if battle: if not MirrorAttack.DoMirrorBattleQuick(battle.battleID, isClick=True): GameWorld.DebugAnswer(curPlayer, "ÎÞ·¨Ö´ÐпìËÙÕ½¶·£¬Ïê¼ûµØÍ¼ÈÕÖ¾!") return elif value1 == "e": PlayerFB.DoExitCustomScene(curPlayer) elif value1 == 5: tick = GameWorld.GetGameWorld().GetTick() PlayerViewCacheTube.UpdateGameServerPlayerCache(curPlayer, tick, forcePackData=True) GameWorld.DebugAnswer(curPlayer, "ÒѸüÐÂ×îоµÏñ»º´æ!") elif value1 in ["a", "d", "p"]: return True return