| | |
| | | import GameWorld
|
| | | import ReadChConfig
|
| | | import PlayerControl
|
| | | import IpyGameDataPY
|
| | | import IPY_GameWorld
|
| | | import ShareDefine
|
| | | import ChConfig
|
| | |
| | | def GetCrossPlayerName(curPlayer):
|
| | | # 通过游戏账号中的平台标志获取名称,目前为spid
|
| | | playerName = curPlayer.GetPlayerName()
|
| | | nameFormat = ReadChConfig.GetPyMongoConfig("Merge", "NameFormat", True)
|
| | | if not nameFormat:
|
| | | |
| | | opName = ReadChConfig.GetPyMongoConfig("Merge", "OpName_%s_%s" % (GameWorld.GetPlayerPlatform(curPlayer), |
| | | GameWorld.GetPlayerServerSID(curPlayer)))
|
| | | |
| | | if not opName:
|
| | | return playerName
|
| | |
|
| | | opName = ReadChConfig.GetPyMongoConfig("Merge", "OpName_%s" % GameWorld.GetPlayerPlatform(curPlayer))
|
| | | return opName.decode('gbk').encode(GameWorld.GetCharacterEncoding()) + playerName
|
| | |
|
| | | def GetServerCrossZoneIpyData(mapID, serverGroupID=0):
|
| | | ## 获取本服对应跨服玩法分区地图信息
|
| | | if mapID not in ChConfig.Def_CrossZoneTableName:
|
| | | return
|
| | | if not serverGroupID:
|
| | | serverGroupID = GameWorld.GetServerGroupID()
|
| | | |
| | | tableName = ChConfig.Def_CrossZoneTableName[mapID]
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | if not hasattr(ipyDataMgr, "Get%sCount" % tableName):
|
| | | return
|
| | |
|
| | | return (nameFormat%{"opname":opName, "sid":GameWorld.GetPlayerServerID(curPlayer)}).decode('gbk').encode(GameWorld.GetCharacterEncoding()) + playerName
|
| | | for i in xrange(getattr(ipyDataMgr, "Get%sCount" % tableName)()):
|
| | | ipyData = getattr(ipyDataMgr, "Get%sByIndex" % tableName)(i)
|
| | | serverGroupIDList = ipyData.GetServerGroupIDList()
|
| | | for serverGroupIDInfo in serverGroupIDList:
|
| | | if (isinstance(serverGroupIDInfo, tuple) and serverGroupIDInfo[0] <= serverGroupID <= serverGroupIDInfo[1]) \
|
| | | or (isinstance(serverGroupIDInfo, int) and serverGroupIDInfo == serverGroupID):
|
| | | return ipyData
|
| | | return
|
| | |
|
| | | def IsCrossServerOpen():
|
| | | ## 跨服服务器是否开放中
|
| | | return GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossServerOpen)
|
| | |
|
| | | #// C1 04 主动退出跨服 #tagCMExitCrossRealm
|
| | | #
|
| | |
| | |
|
| | | # 通知子服玩家退出跨服服务器
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | serverGroupID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ServerGroupID)
|
| | | serverGroupID = PlayerControl.GetPlayerServerGroupID(curPlayer)
|
| | | GameWorld.SendMsgToClientServer(ShareDefine.CrossServerMsg_ExitCrossServer, playerID, [serverGroupID])
|
| | |
|
| | | # 设置非跨服状态,踢下线
|
| | |
| | | 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
|