hxp
2024-12-26 22c964784d465c77365c2495f6d43117618d8482
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/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