#!/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 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 s [Íæ¼ÒID1 ID2 ...]")
|
GameWorld.DebugAnswer(curPlayer, "ÇÐͼս¶·: PlayerMirror m [¹¦ÄܵØÍ¼ID Ïß· Ä¿±êID]")
|
GameWorld.DebugAnswer(curPlayer, "Ìø¹ýÕ½¶·: PlayerMirror q")
|
GameWorld.DebugAnswer(curPlayer, "¸üоµÏñ: PlayerMirror 5")
|
GameWorld.DebugAnswer(curPlayer, "¼Ó¼ÙÊý¾Ý: PlayerMirror a ¸öÊý [ÆðʼID Õ½Á¦ Çø·þID Ä£°ækey]")
|
GameWorld.DebugAnswer(curPlayer, "ɾ¼ÙÊý¾Ý: PlayerMirror d")
|
#GameWorld.DebugAnswer(curPlayer, "µ¼ÈëÊý¾Ý: PlayerMirror i Ä£°ækeyÕ˺Å")
|
#GameWorld.DebugAnswer(curPlayer, "Êä³öÊý¾Ý: PlayerMirror p [ÆðʼË÷Òý ¸öÊý ]")
|
GameWorld.DebugAnswer(curPlayer, "¶à¶Ô¶àÕóÓª·ÖÅäIDΪǰºóǰºó¼´AABB")
|
GameWorld.DebugAnswer(curPlayer, "ºǫ́ս¶·Ê±IDÕóÓª·ÖÅäΪ[AABB]")
|
GameWorld.DebugAnswer(curPlayer, "ÇÐͼս¶·Ê±IDÕóÓª·ÖÅäΪ[×Ô¼ºABB]")
|
GameWorld.DebugAnswer(curPlayer, "Íæ¼ÒID²»ÌîʱĬÈÏ×Ô¼º¸ú×Ô¼º´ò")
|
GameWorld.DebugAnswer(curPlayer, "Ä£°ækey:ÔÚdb/TestPackDataÎļþ¼ÐÏÂ")
|
|
return
|
|
tick = GameWorld.GetGameWorld().GetTick()
|
playerID = curPlayer.GetPlayerID()
|
value1 = paramList[0]
|
if value1 == "s":
|
mapID = ChConfig.Def_FBMapID_MirrorBattle
|
lineID = 0
|
mirrorIDList = paramList[1:]
|
if not mirrorIDList:
|
mirrorIDList = [playerID, playerID]
|
elif len(mirrorIDList) == 1:
|
mirrorIDList = [playerID] + mirrorIDList
|
|
reqPlayer = curPlayer if mirrorIDList[0] == playerID else None # µÚÒ»¸öIDÊÇÍæ¼ÒIDʱ´ú±íÊôÓÚÍæ¼Ò·¢ÆðµÄºǫ́ս¶·
|
requestID = playerID if curPlayer else GameWorld.GetGameWorld().GetTick()
|
|
factionIDListA, factionIDListB = [], []
|
while mirrorIDList:
|
factionIDListA.append(mirrorIDList.pop(0))
|
if mirrorIDList:
|
factionIDListB.append(mirrorIDList.pop(-1))
|
factionPlayerList = [factionIDListA, factionIDListB]
|
|
if MirrorAttack.OnRequestCreateMirrorBattle(mapID, lineID, requestID, factionPlayerList, True, reqPlayer):
|
GameWorld.DebugAnswer(curPlayer, "ºǫ́ս¶·: %s VS %s" % (factionIDListA, factionIDListB))
|
else:
|
GameWorld.DebugAnswer(curPlayer, "ºǫ́ս¶·Ê§°Ü: %s VS %s" % (factionIDListA, factionIDListB))
|
|
elif value1 == "m":
|
mapID = paramList[1] if len(paramList) > 1 else ChConfig.Def_FBMapID_MirrorBattle
|
lineID = paramList[2] if len(paramList) > 2 else 0
|
mirrorIDList = [playerID] + paramList[3:]
|
if len(mirrorIDList) < 2:
|
mirrorIDList.append(playerID) # ĬÈϺÍ×Ô¼º´ò
|
|
requestID = playerID
|
factionIDListA, factionIDListB = [], []
|
while mirrorIDList:
|
factionIDListA.append(mirrorIDList.pop(0))
|
if mirrorIDList:
|
factionIDListB.append(mirrorIDList.pop(-1))
|
factionPlayerList = [factionIDListA, factionIDListB]
|
|
reqOK = MirrorAttack.OnRequestCreateMirrorBattle(mapID, lineID, requestID, factionPlayerList, False, curPlayer, True)
|
GameWorld.DebugAnswer(curPlayer, "ÇÐͼս¶·: %s VS %s, %s" % (factionIDListA, factionIDListB, reqOK))
|
|
elif value1 == "q":
|
battle = MirrorAttack.GetMirrorBattle(curPlayer)
|
if battle:
|
if not MirrorAttack.DoMirrorBattleQuick(battle.battleID, isClick=True):
|
GameWorld.DebugAnswer(curPlayer, "ÎÞ·¨Ö´ÐпìËÙÕ½¶·£¬Ïê¼ûµØÍ¼ÈÕÖ¾!")
|
return
|
|
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
|