#!/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() opName = ReadChConfig.GetPyMongoConfig("Merge", "OpName_%s_%s" % (GameWorld.GetPlayerPlatform(curPlayer), GameWorld.GetPlayerServerSID(curPlayer))) if not opName: return playerName return opName.decode('gbk').encode(GameWorld.GetCharacterEncoding()) + playerName def IsCrossServerOpen(): ## ¿ç·þ·þÎñÆ÷ÊÇ·ñ¿ª·ÅÖÐ return GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossServerOpen) #// 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 = PlayerControl.GetPlayerServerGroupID(curPlayer) 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) curPlayer.SetSight(0) curPet = curPlayer.GetPetMgr().GetFightPet() if curPet: curPet.SetVisible(False) return def DoExitCrossRealm(curPlayer): ## Íæ¼ÒÍ˳ö¿ç·þ´¦Àí£¬±¾·þµÄÂß¼­´¦Àí GameWorld.Log("DoExitCrossRealm...", curPlayer.GetPlayerID()) curPlayer.SetVisible(True) curPlayer.SetSight(1) curPlayer.RefreshView() curPlayer.SetSight(ChConfig.Def_PlayerSight_Default) curPlayer.RefreshView() curPet = curPlayer.GetPetMgr().GetFightPet() if curPet: curPet.SetVisible(True) if PlayerControl.GetCrossRealmState(curPlayer): PlayerControl.SetCrossRealmState(curPlayer, 0) return