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
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Script.Player.GMTExec.CrossPK
#
# @todo:ÉèÖÿç·þPKÍæ¼ÒÊý¾Ý
# @author hxp
# @date 2023-02-16
# @version 1.0
#
# ÏêϸÃèÊö: ÉèÖÿç·þPKÍæ¼ÒÊý¾Ý
#
#-------------------------------------------------------------------------------
#"""Version = 2023-02-16 18:30"""
#-------------------------------------------------------------------------------
 
def runMyTest(exec_locals):
    ''' ÔËÐÐÃüÁÊý
    @param exec_locals: GY_Query_GMTExecfile Ä£¿éÖеĠDoLogic º¯Êý locals()
    
    import ÆäËûÄ£¿éÐèҪдÔڴ˺¯ÊýÀ²»È»ÎÞ·¨ÒýÓõ½
    '''
    import GameWorld
    import CrossRealmPlayer
    import PlayerCrossRealmPK
    import PlayerControl
    import ShareDefine
    import ChConfig
    
    orderId = exec_locals["orderId"]
    cmdInfo = exec_locals["cmdInfo"]
    curPlayer = exec_locals["curPlayer"]
    resultDict = exec_locals["resultDict"] # ½¨Òé¶¼½øÐиüнá¹û×Öµä¼Ç¼Ïêϸ´¦ÀíÐÅÏ¢£¬GY_Query_GMTExecfile Ä£¿é»áͳһдÈëÁ÷Ïò
    
    # ÒÔÏÂΪÏêϸ´¦ÀíÂß¼­
    #  ============================ ÅäÖÃÐÅÏ¢ ============================
    '''ÉèÖúóÐèÒª¼ì²éÊý¾ÝÊÇ·ñÕýȷͬ²½µ½¿ç·þ·þÎñÆ÷
    1. ºǫ́·µ»ØÈç¹ûÓйؼü×Ö "errorMsg":"OK"£¬´ú±í±¾·þÉèÖóɹ¦£»
                    Èç¹û errorMsg ÊÇÆäËûÐÅÏ¢£¬´ú±í±¾·þ¾ÍÒѾ­ÉèÖÃʧ°ÜÁË£¬±ÈÈçÎÞÈü¼¾ÐÅÏ¢»òÈü¼¾ÒѽáÊøÊÇÎÞ·¨Ö´ÐÐÃüÁîµÄ£»
    2. ºǫ́³É¹¦´ú±í±¾·þÊý¾ÝÒѳɹ¦ÉèÖã¬ÐèÒªÔÙ¼ì²éÊÇ·ñ³É¹¦Í¬²½¿ç·þ·þÎñÆ÷£»Ö±½Ó¿´°ñµ¥£¬Èç¹ûÒѾ­¸üÐÂÖ¤Ã÷ͬ²½³É¹¦£»
    3. Èç¹ûû¿´µ½°ñµ¥¸üУ¬¼ì²é¿ç·þ·þÎñÆ÷ÈÕÖ¾£¬ËÑË÷ GMSetCrossPK, ¿´ÊÇ·ñÓÐÏà¹Ø´íÎóÈÕÖ¾£»
    4. Ò²¿ÉÒÔÖ±½Ó¿´¿ç·þÁ÷Ïò CrossPK_GMSet_xxx.txt£¬¿´ÊÇ·ñÓÐÏà¹ØÉèÖÃÁ÷Ïò¼Ç¼£¬Óеϰ´ú±í³É¹¦£»
          ×¢£ºÈç¹û¿ç·þÊý¾ÝûÓгɹ¦Í¬²½£¬ÔòÐèÒªºóÌ¨ÖØ¸´Ö´ÐÐÃüÁîÖ±µ½³É¹¦
    '''
    danLV = 20 # ¶ÎλµÈ¼¶£¬ÐèÓëËùÉèÖõĻý·ÖËùÊô¶ÎλƥÅ䣬²Î¿¼ K.¿ç·þ¾º¼¼³¡¶Îλ±í
    pkScore = 32000 # »ý·Ö
    cWinCount = 50 # Á¬Ê¤
    #  =================================================================
    
    zoneID = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID)
    seasonID = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID)
    seasonState = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonState)
    
    errorMsg = "OK" 
    if not zoneID or not seasonID or seasonState == 2:
        errorMsg = "zone season or state error."
    else:
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_DanLV, danLV)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_TotalScore, pkScore)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_CWinCount, cWinCount)
        if cWinCount > 0:
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_CLoseCount, 0)
            
        # ÇëÇó²éѯ¿ç·þ·þÎñÆ÷
        playerInfoDict = {"accID":curPlayer.GetAccID(),
                          "playerID":curPlayer.GetPlayerID(),
                          "playerName":CrossRealmPlayer.GetCrossPlayerName(curPlayer),
                          "playerJob":curPlayer.GetJob(),
                          "face":curPlayer.GetFace(),
                          "facePic":curPlayer.GetFacePic(),
                          "fightPower":PlayerControl.GetFightPower(curPlayer),
                          "realmLV":curPlayer.GetOfficialRank(),
                          "ondayScore":curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_OnDayScore),
                          "pkScore":pkScore, "danLV":danLV, "cWinCount":cWinCount,
                          }
        resultDict.update({"PlayerInfo":playerInfoDict})
        dataMsg = {"ZoneID":zoneID, "SeasonID":seasonID, "GMSetCrossPK":1, "PlayerInfo":playerInfoDict}
        GameWorld.SendMsgToCrossServer(ShareDefine.ClientServerMsg_PKBillboard, dataMsg)
        PlayerCrossRealmPK.SyncCrossRealmPKPlayerInfo(curPlayer)
        
    GameWorld.Log("This is MameServer GMT_Execfile run %s. orderId=%s" % (cmdInfo, orderId), curPlayer.GetPlayerID())
    resultDict.update({"zoneID":zoneID, "seasonID":seasonID, "seasonState":seasonState, "errorMsg":errorMsg})
    return
 
exec_locals = locals()
if exec_locals.get("cmdInfo"):
    runMyTest(exec_locals)