#!/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 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 registerType, mapID, dataMapID, copyMapID, posX, posY = resultInfo RegisterEnterCrossServer(curPlayer, registerType, mapID, dataMapID, copyMapID, posX, posY) return def RegisterEnterCrossServer(curPlayer, registerType, mapID=0, dataMapID=0, copyMapID=0, posX=0, posY=0): ''' @param registerType: Ò»°ãÊÇdataMapID ''' playerID = curPlayer.GetPlayerID() if GameWorld.IsCrossServer(): GameWorld.Log(" ¿ç·þ·þÎñÆ÷²»ÔÊÐíÉÏ´«±¨ÃûÊý¾Ý!", playerID) return playerRegisterType = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_CrossRegisterType) if playerRegisterType in ChConfig.RegisterEnter_CrossServerMapIDList: GameWorld.ErrLog("¿ç·þÒѾ­ÔÚÉÏ´«Êý¾Ý£¬²»Öظ´Ìá½»!playerRegisterType=%s,registerType=%s" % (playerRegisterType, registerType), curPlayer.GetPlayerID()) return zoneID = 0 if not mapID: zoneIpyData = CrossRealmPlayer.GetServerCrossZoneIpyData(registerType) if not zoneIpyData: GameWorld.ErrLog("ÕÒ²»µ½¸Ã·þÎñÆ÷¶ÔÓ¦¿ç·þ·ÖÇø: registerType=%s" % (registerType)) 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 registerType in ChConfig.RegisterEnter_CrossServerMapIDList: prepareEnterCrossServer = ChPyNetSendPack.tagMCPrepareEnterCrossServer() prepareEnterCrossServer.DataMapID = registerType NetPackCommon.SendFakePack(curPlayer, prepareEnterCrossServer) curPlayer.SetDict(ChConfig.Def_PlayerKey_CrossRegisterType, registerType) #curPlayer.SendMergeRegisterPlayer(mapID, dataMapID, copyMapID, posX, posY) curPlayer.SendMergeRegisterPlayerAfterChange(CrossRealmPlayer.GetCrossPlayerName(curPlayer), mapID, dataMapID, copyMapID, posX, posY) GameWorld.Log(" ·¢ËÍ¿ç·þÍæ¼ÒÊý¾Ý×¢²á: registerType=%s,zoneID=%s,mapID=%s,dataMapID=%s,copyMapID=%s,posX=%s,posY=%s,GetVsRoomId=%s" % (registerType, 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) registerType = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_CrossRegisterType) curPlayer.SetDict(ChConfig.Def_PlayerKey_CrossRegisterType, 0) playerID = curPlayer.GetPlayerID() result = registerResult.GetResult() GameWorld.Log("GameServer_MergeRegisterResult registerType=%s,result=%s" % (registerType, result), playerID) if not result: errorMsg = registerResult.GetErrorMsg() GameWorld.Log("CrossRealmReg result Error:%s" % errorMsg, playerID) NetPackCommon.SendFakePack(curPlayer, ChPyNetSendPack.tagMCEnterCrossServerError()) return if registerType in ChConfig.RegisterEnter_CrossServerMapIDList: CrossRealmPlayer.DoEnterCrossRealm(curPlayer) PlayerControl.SetCrossRealmState(curPlayer, 1) NetPackCommon.SendFakePack(curPlayer, ChPyNetSendPack.tagMCStartEnterCrossServer()) return #newAccount = registerResult.GetAccount() #newName = registerResult.GetPwd() msgList = str([registerType]) GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "CrossRealmReg", msgList, len(msgList)) return