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