hxp
2019-02-03 a5a3fae74222495868ae0bcd8483954cf2a4a712
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Player.RemoteQuery.GY_Query_CrossRealmReg
#
# @todo:¿ç·þ»î¶¯Íæ¼Ò×¢²á
# @author hxp
# @date 2018-12-21
# @version 1.0
#
# ÏêϸÃèÊö: ¿ç·þ»î¶¯Íæ¼Ò×¢²á
#
#-------------------------------------------------------------------------------
#"""Version = 2018-12-21 18:00"""
#-------------------------------------------------------------------------------
 
import GameWorld
import PlayerControl
import CrossRealmPlayer
import IPY_GameWorld
import ChPyNetSendPack
import CrossPlayerData
import NetPackCommon
import ChConfig
 
 
#------------------------------------------------------------------------------ 
## ¿ç·þÈü±¨Ãûµ÷ÓýӿÚ
#  @param query_Type ÇëÇóÀàÐÍ
#  @param query_ID ÇëÇóµÄÍæ¼ÒID
#  @param packCMDList ·¢°üÃüÁî
#  @param tick µ±Ç°Ê±¼ä
#  @return "True" or "False" or ""
#  @remarks º¯ÊýÏêϸ˵Ã÷.
def DoLogic(query_Type, query_ID, packCMDList, tick): 
    return
 
 
#------------------------------------------------------------------------------ 
## Ö´Ðнá¹û
#  @param curPlayer ·¢³öÇëÇóµÄÍæ¼Ò
#  @param callFunName ¹¦ÄÜÃû³Æ
#  @param funResult ²éѯµÄ½á¹û
#  @param tick µ±Ç°Ê±¼ä
#  @return None
#  @remarks º¯ÊýÏêϸ˵Ã÷.
def DoResult(curPlayer, callFunName, funResult, tick):
    resultInfo = eval(funResult)
    GameWorld.Log("GY_Query_CrossRealmReg DoResult %s" % funResult, curPlayer.GetPlayerID())
    if not resultInfo:
        return
    registerMap, mapID, dataMapID, copyMapID, posX, posY = resultInfo
    RegisterEnterCrossServer(curPlayer, registerMap, mapID, dataMapID, copyMapID, posX, posY)
    return
 
def RegisterEnterCrossServer(curPlayer, registerMap, mapID=0, dataMapID=0, copyMapID=0, posX=0, posY=0):
    '''
    @param registerMap: Ò»°ãÊÇdataMapID
    '''
    playerID = curPlayer.GetPlayerID()
    if GameWorld.IsCrossServer():
        GameWorld.Log("    ¿ç·þ·þÎñÆ÷²»ÔÊÐíÉÏ´«±¨ÃûÊý¾Ý!", playerID)
        return
    
    playerRegisterMap = curPlayer.NomalDictGetProperty(ChConfig.Def_PlayerKey_CrossRegisterMap)
    if playerRegisterMap in ChConfig.RegisterEnter_CrossServerMapIDList:
        GameWorld.ErrLog("¿ç·þÒѾ­ÔÚÉÏ´«Êý¾Ý£¬²»Öظ´Ìá½»!playerRegisterMap=%s,registerMap=%s" % (playerRegisterMap, registerMap), curPlayer.GetPlayerID())
        return
    
    zoneID = 0
    if not mapID:
        zoneIpyData = CrossRealmPlayer.GetServerCrossZoneMapIpyData(registerMap)
        if not zoneIpyData:
            GameWorld.ErrLog("ÕÒ²»µ½¸Ã·þÎñÆ÷¶ÔÓ¦¿ç·þ·ÖÇø: registerMap=%s" % (registerMap))
            return
        zoneID, mapID, dataMapID, copyMapID, posX, posY = zoneIpyData.GetZoneID(), zoneIpyData.GetMapID(), \
            zoneIpyData.GetDataMapID(), zoneIpyData.GetCopyMapID(), zoneIpyData.GetPosX(), zoneIpyData.GetPosY()
            
    if not mapID:
        return
    
    #¿ç·þǰ¸üÐÂ×Ô¼ºËùÊô·þÎñÆ÷×éID
    PlayerControl.UpdPlayerServerGroupID(curPlayer)
    
    if registerMap in ChConfig.RegisterEnter_CrossServerMapIDList:
        prepareEnterCrossServer = ChPyNetSendPack.tagMCPrepareEnterCrossServer()
        prepareEnterCrossServer.DataMapID = registerMap
        NetPackCommon.SendFakePack(curPlayer, prepareEnterCrossServer)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PlayerKey_CrossRegisterMap, registerMap)
    CrossPlayerData.OnPlayerCrossReg(curPlayer)
    #curPlayer.SendMergeRegisterPlayer(mapID, dataMapID, copyMapID, posX, posY)
    curPlayer.SendMergeRegisterPlayerAfterChange(CrossRealmPlayer.GetCrossPlayerName(curPlayer), mapID, dataMapID, copyMapID, posX, posY)
    GameWorld.Log("    ·¢ËÍ¿ç·þÍæ¼ÒÊý¾Ý×¢²á: registerMap=%s,zoneID=%s,mapID=%s,dataMapID=%s,copyMapID=%s,posX=%s,posY=%s,GetVsRoomId=%s" 
                  % (registerMap, zoneID, mapID, dataMapID, copyMapID, posX, posY, curPlayer.GetVsRoomId()), playerID)
    return
 
## ¿ç·þÈü±¨Ãû½á¹û£¨ÉÏ´«Êý¾Ý£©
#  @param index Íæ¼ÒË÷Òý
#  @param tick µ±Ç°Ê±¼ä
#  @return None
def GameServer_MergeRegisterResult(index, tick):
    registerResult = IPY_GameWorld.IPY_GMMergeRegisterPlayerResult()
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    registerMap = curPlayer.NomalDictGetProperty(ChConfig.Def_PlayerKey_CrossRegisterMap)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PlayerKey_CrossRegisterMap, 0)
    playerID = curPlayer.GetPlayerID()
    result = registerResult.GetResult()
    GameWorld.Log("GameServer_MergeRegisterResult registerMap=%s,result=%s" % (registerMap, result), playerID)
    if not result:
        errorMsg = registerResult.GetErrorMsg()
        GameWorld.Log("CrossRealmReg result Error:%s" % errorMsg, playerID)
        NetPackCommon.SendFakePack(curPlayer, ChPyNetSendPack.tagMCEnterCrossServerError())
        return
    
    if registerMap in ChConfig.RegisterEnter_CrossServerMapIDList:
        CrossRealmPlayer.DoEnterCrossRealm(curPlayer)
        PlayerControl.SetCrossMapID(curPlayer, registerMap)
        NetPackCommon.SendFakePack(curPlayer, ChPyNetSendPack.tagMCStartEnterCrossServer())
        return
    
    #newAccount = registerResult.GetAccount()
    #newName = registerResult.GetPwd()
    
    msgList = str([registerMap]) 
    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "CrossRealmReg", msgList, len(msgList))    
    return