#!/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:
|
MirrorAttack.DoMirrorBattleQuick(battle.battleID)
|
|
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
|