#!/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  
 |