| | |
| | | import IPY_GameWorld
|
| | | import ChPyNetSendPack
|
| | | import NetPackCommon
|
| | | import IpyGameDataPY
|
| | | import ChConfig
|
| | |
|
| | |
|
| | |
| | | return
|
| | |
|
| | | def RegisterEnterCrossServer(curPlayer, registerType, mapID=0, dataMapID=0, copyMapID=0, posX=0, posY=0):
|
| | | '''
|
| | | @param registerType: 一般是dataMapID
|
| | | '''
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | if GameWorld.IsCrossServer():
|
| | | GameWorld.Log(" 跨服服务器不允许上传报名数据!", playerID)
|
| | |
| | | GameWorld.ErrLog("跨服已经在上传数据,不重复提交!playerRegisterType=%s,registerType=%s" % (playerRegisterType, registerType), curPlayer.GetPlayerID())
|
| | | return
|
| | |
|
| | | zoneID = 0
|
| | | if not mapID:
|
| | | if registerType in ChConfig.RegisterEnter_CrossServerMapIDList:
|
| | | registerTableName = "CrossPenglaiZone"
|
| | | else:
|
| | | zoneIpyData = CrossRealmPlayer.GetServerCrossZoneIpyData(registerType)
|
| | | if not zoneIpyData:
|
| | | GameWorld.ErrLog("找不到该服务器对应跨服分区: registerType=%s" % (registerType))
|
| | | return
|
| | | RegisterMapInfo = GetCurServerGroupIDRegisterMapInfo(registerTableName)
|
| | | if not RegisterMapInfo:
|
| | | GameWorld.ErrLog("找不到该服务器对应跨服分区: registerType=%s,registerTableName=%s" % (registerType, registerTableName))
|
| | | return
|
| | | mapID, copyMapID, posX, posY = RegisterMapInfo
|
| | | dataMapID = mapID
|
| | | |
| | | zoneID, mapID, dataMapID, copyMapID, posX, posY = zoneIpyData.GetZoneID(), zoneIpyData.GetMapID(), \
|
| | | zoneIpyData.GetDataMapID(), zoneIpyData.GetCopyMapID(), zoneIpyData.GetPosX(), zoneIpyData.GetPosY()
|
| | | |
| | | if not mapID:
|
| | | return
|
| | |
|
| | |
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_CrossRegisterType, registerType)
|
| | | #curPlayer.SendMergeRegisterPlayer(mapID, dataMapID, copyMapID, posX, posY)
|
| | | curPlayer.SendMergeRegisterPlayerAfterChange(CrossRealmPlayer.GetCrossPlayerName(curPlayer), mapID, dataMapID, copyMapID, posX, posY)
|
| | | GameWorld.Log(" 发送跨服玩家数据注册: registerType=%s,mapID=%s,dataMapID=%s,copyMapID=%s,posX=%s,posY=%s,GetVsRoomId=%s" |
| | | % (registerType, mapID, dataMapID, copyMapID, posX, posY, curPlayer.GetVsRoomId()), playerID)
|
| | | return
|
| | |
|
| | | def GetCurServerGroupIDRegisterMapInfo(tableName):
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | if not hasattr(ipyDataMgr, "Get%sCount" % tableName):
|
| | | return
|
| | | |
| | | serverGroupID = GameWorld.GetServerGroupID()
|
| | | 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.GetMapID(), ipyData.GetCopyMapID(), ipyData.GetPosX(), ipyData.GetPosY()
|
| | | GameWorld.Log(" 发送跨服玩家数据注册: registerType=%s,zoneID=%s,mapID=%s,dataMapID=%s,copyMapID=%s,posX=%s,posY=%s,GetVsRoomId=%s" |
| | | % (registerType, zoneID, mapID, dataMapID, copyMapID, posX, posY, curPlayer.GetVsRoomId()), playerID)
|
| | | return
|
| | |
|
| | | ## 跨服赛报名结果(上传数据)
|