xdh
2019-01-10 530c309fdbba872ae17db8fbbbba464f9d65f327
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmPK.py
@@ -708,61 +708,63 @@
                return zoneIpyData.GetZoneID()
    return 0
def OnPlayerLogin(curPlayer):
    # 本服登录处理
    if not GameWorld.IsCrossServer():
        # 本服没有分配赛区不处理
        if not GameWorld.GetGameWorld().GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID):
            return
        __OnLoginNotifyPKOverInfo(curPlayer)
        # 同步所有赛区赛季信息
        zoneSeasonInfo = ChPyNetSendPack.tagGCCrossRealmPKSeasonInfo()
        zoneSeasonInfo.ZoneList = []
        ipyDataMgr = IpyGameDataPY.IPY_Data()
        for index in xrange(ipyDataMgr.GetCrossRealmPKZoneCount()):
            zoneIpyData = ipyDataMgr.GetCrossRealmPKZoneByIndex(index)
            zoneID = zoneIpyData.GetZoneID()
            zoneInfo = ChPyNetSendPack.tagGCCrossRealmPKZone()
            zoneInfo.ZoneID = zoneID
            zoneInfo.ZoneName = zoneIpyData.GetZoneName().decode(ShareDefine.Def_Game_Character_Encoding).encode(GameWorld.GetCharacterEncoding())
            zoneInfo.ZoneNameLen = len(zoneInfo.ZoneName)
            zoneInfo.SeasonList = []
            seasonList = IpyGameDataPY.GetIpyGameDataList("CrossRealmPKSeason", zoneID)
            seasonList = [] if not seasonList else seasonList
            for seasonIpyData in seasonList:
                seasonInfo = ChPyNetSendPack.tagGCCrossRealmPKSeason()
                seasonInfo.SeasonID = seasonIpyData.GetSeasonID()
                seasonInfo.StartDate = seasonIpyData.GetStartDate()
                seasonInfo.EndDate = seasonIpyData.GetEndDate()
                seasonInfo.EndTime = seasonIpyData.GetEndTime()
                zoneInfo.SeasonList.append(seasonInfo)
            zoneInfo.SeasonCount = len(zoneInfo.SeasonList)
            zoneSeasonInfo.ZoneList.append(zoneInfo)
        zoneSeasonInfo.ZoneCount = len(zoneSeasonInfo.ZoneList)
        NetPackCommon.SendFakePack(curPlayer, zoneSeasonInfo)
        # 同步本服赛季状态
        gameWorld = GameWorld.GetGameWorld()
        seasonStatePack = ChPyNetSendPack.tagGCCrossRealmPKSeasonState()
        seasonStatePack.ZoneID = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID)
        seasonStatePack.SeasonID = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID)
        seasonStatePack.SeasonState = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonState)
        seasonStatePack.MatchState = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossDailyActionState % ShareDefine.DailyActionID_CrossReamPK)
        NetPackCommon.SendFakePack(curPlayer, seasonStatePack)
def OnPlayerLoginCrossServer(curPlayer):
    # 跨服登录处理
    else:
        mapID = curPlayer.GetMapID()
        mapIDList = IpyGameDataPY.GetFuncCfg("CrossRealmPKMatch", 4)
        if mapID not in mapIDList:
            return
        GameWorld.Log("玩家登录跨服PK地图, mapID=%s" % mapID, curPlayer.GetPlayerID())
        if not __CheckCanLoginCrossServerPKMap(curPlayer):
            CrossRealmPlayer.PlayerExitCrossServer(curPlayer)
            return
    mapID = curPlayer.GetMapID()
    mapIDList = IpyGameDataPY.GetFuncCfg("CrossRealmPKMatch", 4)
    if mapID not in mapIDList:
        return
    GameWorld.Log("玩家登录跨服PK地图, mapID=%s" % mapID, curPlayer.GetPlayerID())
    if not __CheckCanLoginCrossServerPKMap(curPlayer):
        CrossRealmPlayer.PlayerExitCrossServer(curPlayer)
        return
    return
def OnPlayerLogin(curPlayer):
    # 本服登录处理
    # 本服没有分配赛区不处理
    if not GameWorld.GetGameWorld().GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID):
        return
    __OnLoginNotifyPKOverInfo(curPlayer)
    # 同步所有赛区赛季信息
    zoneSeasonInfo = ChPyNetSendPack.tagGCCrossRealmPKSeasonInfo()
    zoneSeasonInfo.ZoneList = []
    ipyDataMgr = IpyGameDataPY.IPY_Data()
    for index in xrange(ipyDataMgr.GetCrossRealmPKZoneCount()):
        zoneIpyData = ipyDataMgr.GetCrossRealmPKZoneByIndex(index)
        zoneID = zoneIpyData.GetZoneID()
        zoneInfo = ChPyNetSendPack.tagGCCrossRealmPKZone()
        zoneInfo.ZoneID = zoneID
        zoneInfo.ZoneName = zoneIpyData.GetZoneName().decode(ShareDefine.Def_Game_Character_Encoding).encode(GameWorld.GetCharacterEncoding())
        zoneInfo.ZoneNameLen = len(zoneInfo.ZoneName)
        zoneInfo.SeasonList = []
        seasonList = IpyGameDataPY.GetIpyGameDataList("CrossRealmPKSeason", zoneID)
        seasonList = [] if not seasonList else seasonList
        for seasonIpyData in seasonList:
            seasonInfo = ChPyNetSendPack.tagGCCrossRealmPKSeason()
            seasonInfo.SeasonID = seasonIpyData.GetSeasonID()
            seasonInfo.StartDate = seasonIpyData.GetStartDate()
            seasonInfo.EndDate = seasonIpyData.GetEndDate()
            seasonInfo.EndTime = seasonIpyData.GetEndTime()
            zoneInfo.SeasonList.append(seasonInfo)
        zoneInfo.SeasonCount = len(zoneInfo.SeasonList)
        zoneSeasonInfo.ZoneList.append(zoneInfo)
    zoneSeasonInfo.ZoneCount = len(zoneSeasonInfo.ZoneList)
    NetPackCommon.SendFakePack(curPlayer, zoneSeasonInfo)
    # 同步本服赛季状态
    gameWorld = GameWorld.GetGameWorld()
    seasonStatePack = ChPyNetSendPack.tagGCCrossRealmPKSeasonState()
    seasonStatePack.ZoneID = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID)
    seasonStatePack.SeasonID = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID)
    seasonStatePack.SeasonState = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonState)
    seasonStatePack.MatchState = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossDailyActionState % ShareDefine.DailyActionID_CrossReamPK)
    NetPackCommon.SendFakePack(curPlayer, seasonStatePack)
        
    return