hxp
2025-06-12 edc3910a9d090e5df4deb2dbc37709a740375938
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
104
#!/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 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