#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package Player.CrossRealmPlayer # # @todo:¿ç·þÍæ¼Ò # @author hxp # @date 2018-12-21 # @version 1.0 # # ÏêϸÃèÊö: ¿ç·þÍæ¼Ò # #------------------------------------------------------------------------------- #"""Version = 2018-12-21 18:00""" #------------------------------------------------------------------------------- import GameWorld import ReadChConfig import PlayerControl import IPY_GameWorld import ShareDefine import ChConfig import FBLogic # »ñÈ¡Íæ¼Ò¿ç·þ·þÎñÆ÷ÉϵÄÃû×Ö def GetCrossPlayerName(curPlayer): # ͨ¹ýÓÎÏ·Õ˺ÅÖÐµÄÆ½Ì¨±êÖ¾»ñÈ¡Ãû³Æ£¬Ä¿Ç°Îªspid playerName = curPlayer.GetPlayerName() nameFormat = ReadChConfig.GetPyMongoConfig("Merge", "NameFormat", True) if not nameFormat: return playerName opName = ReadChConfig.GetPyMongoConfig("Merge", "OpName_%s" % GameWorld.GetPlayerPlatform(curPlayer)) return (nameFormat%{"opname":opName, "sid":GameWorld.GetPlayerServerID(curPlayer)}).decode('gbk').encode(GameWorld.GetCharacterEncoding()) + playerName #// C1 04 Ö÷¶¯Í˳ö¿ç·þ #tagCMExitCrossRealm # #struct tagCMExitCrossRealm #{ # tagHead Head; #}; def OnExitCrossRealm(index, curPackData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) if not GameWorld.IsCrossServer(): return FBLogic.DoPlayerLeaveFB(curPlayer, tick) PlayerExitCrossServer(curPlayer) return def PlayerExitCrossServer(curPlayer): ## Íæ¼ÒÍ˳ö¿ç·þ·þÎñÆ÷ # ֪ͨ×Ó·þÍæ¼ÒÍ˳ö¿ç·þ·þÎñÆ÷ playerID = curPlayer.GetPlayerID() serverGroupID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ServerGroupID) GameWorld.SendMsgToClientServer(ShareDefine.CrossServerMsg_ExitCrossServer, playerID, [serverGroupID]) # ÉèÖ÷ǿç·þ״̬£¬ÌßÏÂÏß PlayerControl.SetCrossRealmState(curPlayer, 0) curPlayer.Kick(IPY_GameWorld.disMapServerClose) GameWorld.Log("PlayerExitCrossServer...", curPlayer.GetPlayerID()) return def DoEnterCrossRealm(curPlayer): ## Íæ¼Ò½øÈë¿ç·þ´¦Àí£¬±¾·þµÄÂß¼­´¦Àí curPlayer.SetVisible(False) return def DoExitCrossRealm(curPlayer): ## Íæ¼ÒÍ˳ö¿ç·þ´¦Àí£¬±¾·þµÄÂß¼­´¦Àí GameWorld.Log("DoExitCrossRealm...", curPlayer.GetPlayerID()) curPlayer.SetVisible(True) if PlayerControl.GetCrossRealmState(curPlayer): PlayerControl.SetCrossRealmState(curPlayer, 0) return