hch
2018-12-26 f78b5c4fb02a016c43398f512a302b8c24d62698
Merge branch 'master' of http://192.168.0.87:10010/r/SnxxServerCode
20个文件已修改
668 ■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmPK.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerEventCounter.py 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerXMZZ.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GatherSoul.py 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py
@@ -594,8 +594,6 @@
            
            ShareDefine.Def_BT_CostTeHui                : 10,            #消费特惠排行榜
            ShareDefine.Def_BT_CostTeHuiLast            : 10,            #消费特惠排行榜上一期
            ShareDefine.Def_BT_MergePKDay               : 5,             #跨服PK日积分榜
            ShareDefine.Def_BT_MergePKWeek              : 5,             #跨服PK周积分榜
            }
#排行榜保存类型(和BillboardType匹配), 默认保存, 如果不保存,可配置进去
@@ -661,53 +659,6 @@
Def_PlayerKey_ViewCrossPKBillboardTick = "ViewCrossPKBillboardTick_%s_%s"  #查询PK排行榜tick,参数(zoneID, seasonID)
#跨服服务器广播类型
(
Def_PreeSetPlayer,                  #添加跨服预选赛参赛人员 0
Def_PreeSetBattleInfo,              #添加跨服预选赛对战表1
Def_PreeBattleIDOver,               #每场跨服预选赛的结果2
Def_SetPlayer,                      #添加参赛人员3
Def_SetBattleInfo,                  #添加跨服预选赛对战表4
Def_BattleIDOver,                   #每场跨服预选赛的结果5
Def_PlayerChange,                   #人员表信息变更6
Def_EliminationReword,              #万国淘汰赛参数奖励7
Def_MergeServerOpenActionDay,       #万国开启的活动到现在的天数8
Def_MergeServerOpenActionState,     #万国开启的活动状态9
Def_MergeWarStartTime,              #万国活动激活时间10
Def_MergeDictKeyValue,              #跨服GameWorld字典key值11
Def_MergeBossKilled,                #跨服boss单boss击杀结果12
Def_MergeBossResult,                #跨服boss结果13
Def_MergePKMatchResult,             #跨服PK匹配信息14
Def_MergePKReadyOKRoomList,         #跨服PK已准备好的房间列表15
Def_MergePKSyncBillboard,           #跨服PK同步排行榜16
Def_MergePKLuckyItem,               #跨服PK获得幸运物品17
Def_MergePKActionState,             #跨服PK活动状态变更18
Def_MergePKTopPlayerView,           #跨服PK活动高手榜玩家展示信息19
Def_RecoverMergePKWinCost,          #跨服PK恢复连胜扣费信息20
Def_MergeWorldNotify,               #跨服全服广播21
Def_MergeLoudspeaker,               #跨服全服喇叭22
Def_MergePKKing,                    #跨服王者争霸23
Def_MergePKUnNotifyOverInfo,        #跨服PK未同步的PK结果24
Def_MergeOnLinePlayer,              #跨服在线玩家25
Def_Merge26,                        #26
Def_MergePlayerEvent,               #跨服玩家事件27
Def_MaxType,
) = range(29)
#子服务器发送信息到跨服服务器, 与MapServer一致
(
Def_RequestMergePKMatch,            #跨服PK匹配请求0
Def_CancelMergePKMatch,             #跨服PK取消匹配1
Def_MergePKPrepareOK,               #跨服PK准备完毕2
Def_SendGMCMD,                      #发送GM命令3
Def_RecoverMergePKWin,              #跨服PK恢复连胜4
Def_SendMergeLoudspeaker,           #发送跨服喇叭5
Def_ClientServerInitOK,             #跨服子服启动成功6
) = range(7)
# 跨服中转地图ID
Def_MergeTransMapID = 12075
Def_MergeTransMapPos = [20,20]
#渡劫副本
Def_FBMapID_DuJie = 31110
#仙盟联赛
ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py
@@ -20,7 +20,6 @@
# @change: "2015-01-14 00:30" hxp 增加服务器平台区服ID获取
# @change: "2015-01-14 20:30" hxp 增加CanHappen函数
# @change: "2015-06-08 20:30" hxp 增加获取channelCode
# @change: "2015-09-24 16:00" hxp 增加IsMergeOpen
# @change: "2015-10-22 23:00" hxp 增加获取子服serverID
# @change: "2016-03-28 17:00" hxp 增加创角改名GetPlayerFullName
# @change: "2016-07-18 19:00" hxp 增加获取平台账号
@@ -836,23 +835,6 @@
# @remarks 客户端封包响应
def GetDatetimeBySubDays(diffDays):
    return datetime.datetime.today() - datetime.timedelta(days = diffDays)
## 是否跨服服务器
#  @param None None
#  @return
def IsMergeServer():
    config = GameConfig.GetConfig()
    return config.get('IsMergeWarServe', 0)
## 是否开启跨服活动
#  @param None None
#  @return
def IsMergeOpen():
    config = GameConfig.GetConfig()
    # 如果跨服服务器IP有配置, 或本身就是跨服服务器, 则代表开启
    return True if (config.get('MergeServerIP') or config.get('IsMergeWarServe')) else False
def IsCrossServer():
    ## 是否跨服服务器
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py
@@ -65,6 +65,9 @@
        elif msgType == ShareDefine.ClientServerMsg_ServerInitOK:
            ClientServerMsg_ServerInitOK(serverGroupID, msgData, tick)
            
        elif msgType == ShareDefine.ClientServerMsg_ViewPlayerCache:
            CrossRealmPlayer.ClientServerMsg_ViewPlayerCache(serverGroupID, msgData)
        else:
            GameWorld.ErrLog("没有该信息类型逻辑处理!")
            
@@ -122,6 +125,9 @@
        elif msgType == ShareDefine.CrossServerMsg_Notify:
            PlayerControl.CrossServerMsg_Notify(msgData)
            
        elif msgType == ShareDefine.CrossServerMsg_ViewPlayerCacheRet:
            CrossRealmPlayer.CrossServerMsg_ViewPlayerCacheRet(msgData, tick)
        elif msgType == ShareDefine.CrossServerMsg_PKMatchReqRet:
            CrossRealmPK.CrossServerMsg_PKMatchReqRet(msgData)
            
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmPK.py
@@ -1483,7 +1483,7 @@
def CrossServerMsg_PKMatchResult(vsRoomDict):
    ## 跨服PK匹配结果
    curServerGroupID = GameWorld.GetServerGroupID()
    actionType = ShareDefine.Def_MergeAction_MergePK
    actionType = ShareDefine.Def_CrossAction_PK
    mapPosList = IpyGameDataPY.GetFuncEvalCfg("CrossRealmPKMatch", 5)
    GameWorld.Log("=== 收到PK匹配结果处理  === curServerGroupID=%s" % curServerGroupID)
    if not mapPosList:
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
@@ -1072,72 +1072,6 @@
    Dispose_ActionGoOnByDayKey()
    return
## 设定上次开启活动时间距离现在天数事件
#  @param None:
#  @return: None
def DoLogic_ServerLastOpenActionDay():
    #是跨服服务器
    if GameWorld.IsCrossServer():
        if not PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MergeServerOpenActionDay):
            return
        PlayerDBGSEvent.SetDBGSTrig_ServerTime(PlayerDBGSEvent.Def_MergeServerOpenActionDay)
        #通知子服务器天数
        SendBroadcastMergeOpenActionDay()
        return
    DoLogic_ActionByDayKeyOnDay()
    #上次开启活动时间距离现在天数
    lastOpenActionDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerLastOpenActionDay)
    openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay)
    initDayList = ReadChConfig.GetEvalChConfig('ActionControlByDayInitOpenServerDay')
    if openServerDay < initDayList[0]:
        #开服时间未超过30天
        return
    #新一轮活动从头开始
    if lastOpenActionDay >= initDayList[1] or openServerDay == initDayList[2]:
        NewRingOpenActionDay()
        return
    PlayerDBGSEvent.SetDBGSTrig_ServerTime(PlayerDBGSEvent.Def_ServerLastOpenActionDay)
    return
## 新一轮活动开始
#  @param None:
#  @return:
def NewRingOpenActionDay():
    #设置字典值从1开始, 跟SetDBGSTrig_ServerTime接口同步
    PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerLastOpenActionDay, 1)
    # 活动天数重设
    OpenActionDay_Reset()
    return
#------------------------------------------------------------------------------
## 活动天数重设
#  @param None
#  @return None
def OpenActionDay_Reset():
    # 设置国王战开始
    #PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MergeWarStart, 1)
    return
### 检查key是否处理
#def __CheckIsProcessDictName(dictName):
#
#    # 非跨服服务器不处理某些key
#    if dictName in [ShareDefine.Def_Notify_WorldKey_Merge_King] and not GameWorld.IsCrossServer():
#        return False
#
#    return True
## 当前时间与指定时间比较
#  @param curTime 当前服务器时间 
#  @param timeInfo 指定时间 [[3,4(星期几)], 年,月,日,时,分] 
@@ -1231,15 +1165,6 @@
    #跨服PK
    elif dictName == ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_CrossReamPK:
        CrossRealmPK.OnCrossRealmPKDailyActionStateChange(isOpen)
    return
#------------------------------------------------------------------------------
## 通知子服务器天数
#  @param param: None
#  @return: None
def SendBroadcastMergeOpenActionDay():
    mergeServerOpenActionDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MergeServerOpenActionDay)
    #.SendBroadcastMerge(ChConfig.Def_MergeServerOpenActionDay, 0, {"Day":mergeServerOpenActionDay})
    return
#-------------------------------------------------------------------------------
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
@@ -1432,7 +1432,6 @@
    # 清除指定通用数据
    universalRecMgr = GameWorld.GetUniversalRecMgr()
    delRecTypeList = [ShareDefine.Def_UniversalGameRecType_ManorWarInfo,
                      #ShareDefine.Def_UniversalGameRecType_MergeRegister,
                      ]
    GameWorld.DebugLog("    清除指定通用数据 delRecTypeList=%s" % str(delRecTypeList))
    for delRecType in delRecTypeList:
@@ -1457,7 +1456,7 @@
    # 删除过期的通用数据
    curTime = int(time.time())
    GameWorld.Log("执行删除过期的通用数据, curTime=%s" % curTime)
    delOutofdayRecDataDict = {ShareDefine.Def_UniversalGameRecType_MergeRegister:31 * 24 * 3600,
    delOutofdayRecDataDict = {
                              }
    for otDayRecType, otTime in delOutofdayRecDataDict.items():
        otRecDataList = universalRecMgr.GetTypeList(otDayRecType)
ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py
@@ -21,6 +21,10 @@
import ReadChConfig
import ChConfig
import PlayerControl
import PlayerViewCache
import ChPyNetSendPack
import NetPackCommon
import PyGameData
# 获取玩家跨服服务器上的名字
def GetCrossPlayerName(curPlayer):
@@ -67,7 +71,7 @@
    GameWorld.Log("跨服报名成功 , actionType=%s" % (actionType), playerID)
    
    # 跨服PK上传数据完毕,通知跨服服务器,准备完毕
    if actionType == ShareDefine.Def_MergeAction_MergePK:
    if actionType == ShareDefine.Def_CrossAction_PK:
        regVSRoomID = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MergeRegisterRoomID) 
        vsRoomID = curPlayer.GetVsRoomId()
        
@@ -104,9 +108,88 @@
#    DWORD        PlayerID;    // 跨服玩家ID
#};
def OnViewCrossPlayerInfo(index, clientData, tick):
    if GameWorld.IsCrossServer():
        return
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    playerID = curPlayer.GetPlayerID()
    tagPlayerID = clientData.PlayerID
    curCache = PlayerViewCache.ViewCacheMgr.FindCache(tagPlayerID)
    ## 本服有,直接回客户端
    if curCache:
        GameWorld.DebugLog("查看跨服玩家,是本服玩家,直接回复!tagPlayerID=%s" % (tagPlayerID), playerID)
        sendPack = ChPyNetSendPack.tagSCQueryPlayerCacheResult()
        sendPack.PlayerID = tagPlayerID
        sendPack.PropData = curCache.GetPropData()
        sendPack.PropDataSize = len(sendPack.PropData)
        sendPack.ItemData = PlayerViewCache.GetItemData(curCache)
        sendPack.ItemDataSize = len(sendPack.ItemData)
        sendPack.PlusData = PlayerViewCache.GetPlusData(curCache)
        sendPack.PlusDataSize = len(sendPack.PlusData)
        NetPackCommon.SendFakePack(curPlayer, sendPack)
        return
    if tagPlayerID in PyGameData.g_crossPlayerViewCache:
        validChaheTime = 5 * 60 * 1000
        cacheInfo, updTick = PyGameData.g_crossPlayerViewCache[tagPlayerID]
        if tick - updTick <= validChaheTime:
            GameWorld.DebugLog("查看跨服玩家数据同步CD中,直接用缓存数据回复!tagPlayerID=%s" % (tagPlayerID), playerID)
            SyncPlayerViewCrossPlayerInfo(curPlayer, tagPlayerID, cacheInfo)
            return
        for crossPlayerID, cacheInfoList in PyGameData.g_crossPlayerViewCache.items():
            if tick - cacheInfoList[1] > validChaheTime:
                PyGameData.g_crossPlayerViewCache.pop(crossPlayerID)
    # 发送跨服服务器查询
    dataMsg = {"tagPlayerID":tagPlayerID, "playerID":playerID}
    CrossRealmMsg.SendMsgToCrossServer(ShareDefine.ClientServerMsg_ViewPlayerCache, dataMsg)
    return
def ClientServerMsg_ViewPlayerCache(serverGroupID, msgData):
    tagPlayerID = msgData["tagPlayerID"]
    playerID = msgData["playerID"]
    GameWorld.Log("收到子服查看跨服玩家信息: serverGroupID=%s,playerID=%s,tagPlayerID=%s" % (serverGroupID, playerID, tagPlayerID))
    cacheInfo = []
    curCache = PlayerViewCache.ViewCacheMgr.FindCache(tagPlayerID)
    if curCache:
        cacheInfo = [curCache.GetPropData(), PlayerViewCache.GetItemData(curCache), PlayerViewCache.GetPlusData(curCache)]
    viewPlayerCacheRet = [playerID, tagPlayerID, cacheInfo]
    CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_ViewPlayerCacheRet, viewPlayerCacheRet, [serverGroupID])
    return
def CrossServerMsg_ViewPlayerCacheRet(msgData, tick):
    playerID, tagPlayerID, cacheInfo = msgData
    GameWorld.Log("收到跨服服务器回复的查看玩家信息: playerID=%s,tagPlayerID=%s" % (playerID, tagPlayerID))
    PyGameData.g_crossPlayerViewCache[tagPlayerID] = [cacheInfo, tick] # 更新信息
    curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID)
    if curPlayer:
        SyncPlayerViewCrossPlayerInfo(curPlayer, tagPlayerID, cacheInfo)
    
    return
    
def SyncPlayerViewCrossPlayerInfo(curPlayer, tagPlayerID, cacheInfo):
    if not cacheInfo:
        PlayerControl.NotifyCode(curPlayer, "ViewPlayer_OffLine")
        return
    PropData, ItemData, PlusData = cacheInfo
    sendPack = ChPyNetSendPack.tagSCQueryPlayerCacheResult()
    sendPack.PlayerID = tagPlayerID
    sendPack.PropData = PropData
    sendPack.PropDataSize = len(sendPack.PropData)
    sendPack.ItemData = ItemData
    sendPack.ItemDataSize = len(sendPack.ItemData)
    sendPack.PlusData = PlusData
    sendPack.PlusDataSize = len(sendPack.PlusData)
    NetPackCommon.SendFakePack(curPlayer, sendPack)
    return
    
    
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py
@@ -21,7 +21,6 @@
# @change: "2012-10-16 17:30" jiang 增加一枚举Def_ResetPlayerBillboard
# @change: "2012-11-01 15:30" wdb 新增跨服赛淘汰赛(跨服服务器)调用
# @change: "2012-11-08 14:30" whx 新增跨服调用
# @change: "2012-11-09 21:00" jiang jiang 增加一枚举Def_ServerLastOpenActionDay
# @change: "2012-11-21 11:00" wdb 跨服赛报名(上传数据)调整
# @change: "2012-11-29 11:30" jiang OnDay通知国王服务器开启天数
# @change: "2012-11-29 13:00" hyx 新增跨服赛事件枚举
@@ -81,9 +80,6 @@
#上次合服时的开服天数
Def_LastMixServerDay = 'LastMixServerDay'
#上次开服天数开启的活动时的时间(Def_ServerDay的值)
Def_ServerLastOpenActionDay = "ServerLastOpenActionDay"
#首次开服时间,注意不要用该日期做开服天相关的功能逻辑,如果要用开服天,请用 Def_ServerDay
''' 原因: 
因为目前开服天的逻辑大部分是用 Def_ServerDay,当出现服务器宕机超过24小时时,就会导致 Def_ServerDay 与 Def_InitOpenServerTime 不对应
@@ -114,11 +110,6 @@
Def_Server_DayEx = 'Def_Server_DayEx'
#服务器开服自动逻辑处理 小时
Def_Server_Hour = 'Def_Server_Hour'
# 跨服赛开启天数
Def_MergeServerOpenActionDay = "MergeServerOpenActionDay"
# 按天数开启活动,国王战标志
Def_MergeWarStart = "MergeWarStart"
# 上次领地战活动时的开服天数
Def_LastManorWarServerDay = "LastManorWarServerDay"
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerEventCounter.py
@@ -28,7 +28,6 @@
import PlayerFBHelpBattle
import ChPyNetSendPack
import NetPackCommon
import PlayerManorWar
import PlayerDuJie
#---------------------------------------------------------------------
@@ -54,12 +53,6 @@
    isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer)
    if isMixServer:
        PlayerDBGSEvent.SetDBGSTrig_ServerTime(PlayerDBGSEvent.Def_MixServerDay)
    #设定上次开启活动时间距离现在天数事件
    GameWorldActionControl.DoLogic_ServerLastOpenActionDay()
    #领地争夺战OnDay
    #PlayerManorWar.OnDay()
    
    #家族更新
    PlayerFamily.FamilyOnDay(tick)
@@ -185,12 +178,6 @@
    #通知开服天数
    Sync_OpenServerDay(curPlayer)
    
    #通知上次根据开服天数开启的活动到现在的天数
    #Sync_ServerLastOpenActionDay(curPlayer)
    #通知跨服服务器开启的活动到现在的天数
    #Sync_MergeServerOpenActionDay(curPlayer)
    GameWorld.Log("PlayerOnDay!", curPlayer.GetPlayerID())
    return
@@ -308,18 +295,6 @@
    packData.NowSecond = serverTime.second
    packData.NowMicSecond = serverTime.microsecond
    NetPackCommon.SendFakePack(curPlayer, packData)
    return
## 通知上次根据开服天数开启的活动到现在的天数
#  @param curPlayer: 玩家实例
#  @return: None
def Sync_ServerLastOpenActionDay(curPlayer):
#    lastOpenActionDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerLastOpenActionDay)
#    packData = ChPyNetSendPack.tagServerLastOpenActionDay()
#    packData.Clear()
#    packData.Day = lastOpenActionDay
#    NetPackCommon.SendFakePack(curPlayer, packData)
    return
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerXMZZ.py
@@ -501,7 +501,6 @@
                SavePKRecord('XMZZ_Draw', [], True)
                
                PlayerCompensation.SendMailByKey('XMZZDogfall', Faction_2_IDList + Faction_1_IDList, [], goldPaper=dogfallAward)
                #PlayerControl.MergeWorldNotify(0, '', [])
        
        PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_XMZZIsOver, 1)
        self.NotifyXMZZInfo()
ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py
@@ -86,6 +86,8 @@
g_autoViceleaderDict = {}#自动安排副盟主的玩家记录{familyID:[]}
g_forbidAutoViceleaderFamily = [] #禁止自动安排副盟主的仙盟[familyID,..]
g_crossPlayerViewCache = {} # 查看跨服玩家信息 {playerID:[cacheInfo, updTick], ...}
g_crossPKPlayerDict = {} # 跨服PK玩家字典  {playerID:PKPlayer, ...}
g_crossPKZoneMatchPlayerDict = {} # 跨服PK匹配中的玩家字典 {zoneID:[playerID, ...], ...}
g_crossPKRoomDict = {} # 跨服PK房间字典 {roomID:PKRoom, ...}
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -167,24 +167,9 @@
Def_Notify_WorldKey_FamilyPartyInfo = "FamilyPartyInfo"  # 仙盟宴会数据
Def_Notify_WorldKey_MergeBoss = "Merge_Boss"  # 跨服boss
Def_Notify_WorldKey_CrossPKZoneID = "CrossPKZoneID"  # 本服跨服PK所属赛区
Def_Notify_WorldKey_CrossPKSeasonID = "CrossPKSeasonID"  # 本服跨服PK当前赛季
Def_Notify_WorldKey_CrossPKSeasonState = "CrossPKSeasonState"  # 本服跨服PK赛季状态 0-关闭,1-开启中
Def_Notify_WorldKey_Merge_PK = "Merge_PK"  # 跨服PK, 仅跨服服务器有用,做为触发PKState用
Def_Notify_WorldKey_MergePKState = "MergePK_State"  # 由跨服服务器控制的跨服PK活动状态
Def_Notify_WorldKey_MergePKDayID = "MergePK_DayID"  # 跨服PK活动日ID
Def_Notify_WorldKey_MergePKWeekID = "MergePK_WeekID"  # 跨服PK活动周ID
Def_Notify_WorldKey_MergePKSeasonID = "MergePK_SeasonID"  # 跨服PK活动赛季ID
Def_Notify_WorldKey_MergePKSeasonStartTime = "MergePK_SeasonStartTime"  # 跨服PK活动当前赛季开始时间
Def_Notify_WorldKey_IsSeasonEnd = "MergePK_IsSeasonEnd"  # 跨服PK活动当前赛季是否结束
Def_Notify_WorldKey_Merge_King = "Merge_King"  # 由跨服服务器控制的跨服王者争霸活动状态
Def_Notify_WorldKey_Merge_KingStartID = "Merge_KingStartID"  # 王者争霸开始活动ID, 用于奖励状态重置
Def_Notify_WorldKey_Merge_KingOverID = "Merge_KingOverID"  # 王者争霸结束活动ID, 用于奖励状态重置
Def_Notify_WorldKey_Merge_KingServerHonour = "Merge_KingServerHonour"  # 王者争霸本服荣耀排位
Def_Notify_WorldKey_MixServerCampaignSaveData = "MixServerCampaignSaveData_%s"  # 合服活动记录数据时机0-否 1-是
Def_Notify_WorldKey_MixServerCampaignGetAward = "MixServerCampaignGetAward_%s"  # 合服活动可领奖时机0-否 1-是
@@ -590,11 +575,9 @@
    
    Def_BT_CostTeHui,                         #消费特惠排行榜
    Def_BT_CostTeHuiLast,                     #消费特惠排行榜上一期
    Def_BT_MergePKDay,                        #跨服PK日积分榜
    Def_BT_MergePKWeek,                       #跨服PK周积分榜
    
    Def_BT_Max,                               #排行榜最大类型
) = range(0, 34 + 2)
) = range(0, 32 + 2)
    
#职业对应战力排行榜类型
JobFightPowerBillboardDict = {
@@ -967,7 +950,7 @@
                                Def_UniversalGameRecType_FBHelpBattleCheckInPlayer, #助战玩家登记记录9
                                Def_UniversalGameRecType_FBHelpBattleRecord, #助战未同步记录10
                                Def_UniversalGameRecType_11,
                                Def_UniversalGameRecType_MergeRegister, # 上传数据报名信息12
                                Def_UniversalGameRecType_12,
                                Def_UniversalGameRecType_13,
                                Def_UniversalGameRecType_Reward,    # 通用奖励表(TopBar)14
                                Def_UniversalGameRecType_15,
@@ -999,14 +982,14 @@
                                Def_UniversalGameRecType_RedPacketRecord,   # 红包产出结果记录41
                                Def_UniversalGameRecType_42,
                                Def_UniversalGameRecType_43,
                                Def_UniversalGameRecType_MergePKAwardRecord, # 跨服PK奖励领取记录44
                                Def_UniversalGameRecType_MergePKTopPlayerEquip, # 跨服PK赛高手玩家装备预览信息45
                                Def_UniversalGameRecType_MergePKScoreAward, # 跨服PK积分领奖记录46
                                Def_UniversalGameRecType_MergeKingBattleRecord, # 跨服王者争霸对战信息47
                                Def_UniversalGameRecType_MergeKingBattleRecordLast, # 跨服王者争霸上一期对战信息48
                                Def_UniversalGameRecType_MergeKingSupportRecord, # 跨服王者争霸支持押注信息49
                                Def_UniversalGameRecType_MergeKingTopPlayerEquip, # 跨服王者争霸高手玩家装备预览信息50
                                Def_UniversalGameRecType_MergePKUnNotifyOver, # 跨服PK未同步的PK结果51
                                Def_UniversalGameRecType_44,
                                Def_UniversalGameRecType_45,
                                Def_UniversalGameRecType_46,
                                Def_UniversalGameRecType_47,
                                Def_UniversalGameRecType_48,
                                Def_UniversalGameRecType_49,
                                Def_UniversalGameRecType_50,
                                Def_UniversalGameRecType_51,
                                Def_UniversalGameRecType_52,
                                Def_UniversalGameRecType_53,
                                Def_UniversalGameRecType_54,
@@ -1033,13 +1016,10 @@
# 客户端不可查看的自定义表类型                               
Def_Confidential_UniversalRecList = (
                                     Def_UniversalGameRecType_MergeRegister, # 上传数据报名信息12
                                     Def_UniversalGameRecType_FamilyWarMember, # 盟联赛参赛人员记录70
                                     )                               
# 只同步自身数据的类型 {类型:自身数据最大条数, ...} , 自身数据最大条数-1时代表自身全部数据; 这里的数据Value1固定为playerID
Def_Sync_UniversalRecSelfDict = {
                                 Def_UniversalGameRecType_MergePKAwardRecord:1,
                                 Def_UniversalGameRecType_MergeKingSupportRecord:-1,
                                 }
#家族行为类型 在GameServer.ChConfig.ActionTypeSaveCnt 中配置最高存储条数
@@ -1202,6 +1182,7 @@
# 跨服服务器发送子服信息定义
CrossServerMsg_ExitCrossServer = "ExitCrossServer"      # 退出跨服服务器
CrossServerMsg_Notify = "Notify"                        # 提示信息
CrossServerMsg_ViewPlayerCacheRet = "ViewPlayerCacheRet"# 查看跨服玩家信息结果
CrossServerMsg_PKMatchReqRet = "PKMatchReqRet"          # 跨服PK匹配请求结果
CrossServerMsg_PKMatchResult = "PKMatchResult"          # 跨服PK匹配结果
CrossServerMsg_PKReadyOKRoomList = "PKReadyOKRoomList"  # 跨服PK已准备好的房间列表
@@ -1213,47 +1194,16 @@
# 子服发送跨服信息定义
ClientServerMsg_ServerInitOK = "ServerInitOK"           # 子服启动成功
ClientServerMsg_GMCMD = "GMCMD"                         # GM命令
ClientServerMsg_ViewPlayerCache = "ViewPlayerCache"     # 查看跨服玩家信息
ClientServerMsg_PKMatch = "PKMatch"                     # 跨服PK匹配
ClientServerMsg_PKCancel = "PKCancel"                   # 跨服PK取消匹配
ClientServerMsg_PKPrepareOK = "PKPrepareOK"             # 跨服PK准备完毕
ClientServerMsg_PKBillboard = "PKBillboard"             # 跨服PK排行榜
#跨服匹配PK奖励类型
Def_MergePKAwardTypeList = (
Def_MergePKAward_DayPKCnt, # 0 每日挑战次数奖励
Def_MergePKAward_DayWinCnt, # 1 每日胜利次数奖励
Def_MergePKAward_SeasonGrade, # 2 赛季晋级奖励
Def_MergePKAward_SeasonRank, # 3 赛季排名奖励
Def_MergePKAward_FirstWinCnt, # 4 首次胜利次数奖励
) = range(5)
#跨服战战斗状态
(
Def_NotBegin, #还没开始
Def_ID1Win, #第一个玩家胜利(与CampType_Justice一致)
Def_ID2Win, #第二个玩家胜利(与CampType_Evil一致)
Def_Battling, #正在战斗中
Def_BattleReady, #押注中
) = range(5)
# 跨服赛(跨服服务器)上传数据状态
(
Def_MergeRegisterState_None,  #空闲
Def_MergeRegisterState_Start,  #开始上传
Def_MergeRegisterState_Err,  # 上传出错
Def_MergeRegisterState_Success,  #上传成功
Def_MergeRegisterState_Request,  #请求跨服, 比开始上传还早的一步,先通过请求,才开始上传
) = range(5)
# 跨服活动类型
(
Def_MergeAction_MergeWar,  # 万国战
Def_MergeAction_WarOfHonour,  # 荣耀之战(跨服混战)
Def_MergeAction_Boss,  # 跨服boss
Def_MergeAction_MergePK,  # 跨服匹配PK
Def_MergeAction_MergeKing,  # 跨服王者争霸
Def_MergeAction_TypeMax,  # 类型数
) = range(6)
Def_CrossAction_PK,  # 跨服匹配PK
) = range(1)
#角色改名结果
(
@@ -1345,9 +1295,7 @@
ScoreType_NewGuySuperShow,  # 击杀怪物统计
ScoreType_GetItem,  # 获得物品奖励统计
ScoreType_RedFortReward,  # 打开客户端frmRedFortReward
ScoreType_MergeBoss,  # 跨服boss界面
ScoreType_MergePK,  # 跨服匹配PK结算
)=range(7)
)=range(5)
ScoreTypeName = "TScore"
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -1714,8 +1714,6 @@
Def_Player_RequestAddFamilyMaxCnt = 200  #玩家申请加入家族的最大数量 (目前无限制 配个大的数值)
#-------------------------------#副本相关#------------------------
# 跨服中转地图ID
Def_MergeTransMapID = 12075
#创角新手村地图ID列表
Def_CreatRoleMapIDList = [10000]
#PK周赛
@@ -2171,9 +2169,6 @@
                         1000 * 60 * 10,                         #玩家称号时效
                         400,                               #吸血
                         400,                               #吸蓝
                         1000 * 5,                         # 恢复跨服PK连胜次数请求间隔
                         1000 * 5,                         # 跨服PK领奖间隔
                         1000 * 5,                         # 跨服王者争霸竞猜积分领奖间隔
                         1000 * 3,                         # 仓库整理间隔
                         1000 * 15,                        # 渡劫鼓舞间隔
                         1000 * 1,                        # vip体验时效
@@ -2247,9 +2242,6 @@
TYPE_Player_Tick_Dienstgrad,        #玩家称号时效
TYPE_Player_Tick_SuckBlood,        #吸血
TYPE_Player_Tick_SuckMagic,        #吸蓝
TYPE_Player_Tick_RecoverMergePKWin, #恢复跨服PK连胜次数请求间隔
TYPE_Player_Tick_MergePKAward, #跨服PK领奖间隔
TYPE_Player_Tick_MergeKingSupport, #跨服王者争霸竞猜积分奖励间隔
TYPE_Player_Tick_WareHouseSort,    # 仓库整理间隔
TYPE_Player_Tick_DuJieInspire,    # 渡劫鼓舞间隔
TYPE_Player_Tick_VIPExperience,        #vip体验时效
@@ -3270,8 +3262,8 @@
Def_PDictType_Reincarnation, # 转生
Def_PDictType_GreatMaster, # 大师
Def_PDictType_BloodElf, # Ѫħ
Def_PDictType_MergePK, # 跨服匹配PK
Def_PDictType_MergeKing, # 跨服王者争霸
Def_PDictType_28,
Def_PDictType_29,
Def_PDictType_QQ, # QQ相关
) = range(31)
@@ -3630,9 +3622,6 @@
Def_Player_Dict_ArrestTaskAwardRecord = "ArrestTaskAwardRecord"  # 悬赏任务积分奖励领取记录
Def_Player_Dict_ArrestTaskFinishCnt = "ArrestTaskFinishCnt"  # 悬赏任务今日完成个数
#跨服boss
Def_PDict_MergeBoss_FirstJoinAwardRecord = "MergeBossFstAward" # 首次参与跨服boss奖励状态 0-不可领;1-可领;2-已领
#封魔坛
Def_Player_Dict_FMTDouble = "FMTDouble" # 封魔坛是否双倍
Def_Player_Dict_FMTOldDouble = "FMTOldDouble" # 封魔坛是否曾经可以双倍
@@ -3825,22 +3814,6 @@
Def_PDict_Master_Exp = "Master_Exp" # 当前大师经验
Def_PDict_Master_ExpPoint = "Master_ExpPoint" # 当前大师经验点
Def_PDict_Master_FreeSkillPoint = "Master_FreeSkillPoint" # 当前剩余大师技能点
# 跨服匹配PK Def_PDictType_MergePK
Def_PDict_MergePK_ID = "PD_%s" # 跨服PK玩家ID值, 参数(世界key)
Def_PDict_MergePK_Cnt = "PD_MergePK_Cnt" # 跨服PK, 今日已PK次数
Def_PDict_MergePK_BuyCnt = "PD_MergePK_BuyCnt" # 跨服PK, 今日已购买PK次数
Def_PDict_MergePK_UnUsedBuyCnt = "PD_MergePK_UnUsedBuyCnt" # 跨服PK, 未使用的购买PK次数,永久保存
Def_PDict_MergePK_WinsReward = "PD_MergePK_WinsReward" # 连胜奖励领取状态
Def_PDict_MergePK_ScoreReward = "PD_MergePK_ScoreReward" # 积分奖励领取状态
Def_PDict_MergePK_FirstWinCntReward = "PD_MergePK_FWinCntReward" # 首次胜利奖励领取状态, 领奖状态不重置, 赛季次数重新计算
# 跨服王者争霸 Def_PDictType_MergeKing
Def_PDict_MergeKing_ID = "PD_%s" # 跨服王者争霸玩家ID值, 参数(世界key)
Def_PDict_MergeKing_ServerHonourAward = "PD_MergePK_ServerHonourAward" # 跨服王者争霸玩家全服荣耀奖励领取记录
Def_PDict_MergeKing_RankAward = "PD_MergePK_RankAward" # 跨服王者争霸玩家晋级排名奖励领取记录
Def_PDict_MergeKing_SupportAward = "PD_MergePK_SupportAward" # 跨服王者争霸玩家竞猜积分奖励领取记录
Def_PDict_MergeKing_Worship = "PD_MergePK_Worship" # 跨服王者争霸玩家每日膜拜记录
# 跨服竞技场
Def_PDict_CrossPK_TotalScore = "CrossPK_TotalScore" # 当前总积分
@@ -4514,50 +4487,6 @@
ShareDefine.PlayerJob_Max : TYPE_CHAPLAIN,         #魔剑对应魔剑系
}
#跨服服务器广播类型, 与GameServer一致
(
Def_PreeSetPlayer,                  #添加跨服预选赛参赛人员 0
Def_PreeSetBattleInfo,              #添加跨服预选赛对战表1
Def_PreeBattleIDOver,               #每场跨服预选赛的结果2
Def_SetPlayer,                      #添加参赛人员3
Def_SetBattleInfo,                  #添加跨服预选赛对战表4
Def_BattleIDOver,                   #每场跨服预选赛的结果5
Def_PlayerChange,                   #人员表信息变更6
Def_EliminationReword,              #万国淘汰赛参数奖励7
Def_MergeServerOpenActionDay,       #万国开启的活动到现在的天数8
Def_MergeServerOpenActionState,     #万国开启的活动状态9
Def_MergeWarStartTime,              #万国活动激活时间10
Def_MergeDictKeyValue,              #跨服GameWorld字典key值11
Def_MergeBossKilled,                #跨服boss单boss击杀结果12
Def_MergeBossResult,                #跨服boss结果13
Def_MergePKMatchResult,             #跨服PK匹配信息14
Def_MergePKReadyOKRoomList,         #跨服PK已准备好的房间列表15
Def_MergePKSyncBillboard,           #跨服PK同步排行榜16
Def_MergePKLuckyItem,               #跨服PK同步排行榜17
Def_MergePKActionState,             #跨服PK活动状态变更18
Def_MergePKTopPlayerView,           #跨服PK活动高手榜玩家展示信息19
Def_RecoverMergePKWinCost,          #跨服PK恢复连胜扣费信息20
Def_MergeWorldNotify,               #跨服全服广播21
Def_MergeLoudspeaker,               #跨服全服喇叭22
Def_MergePKKing,                    #跨服王者争霸23
Def_MergePKUnNotifyOverInfo,        #跨服PK未同步的PK结果24
Def_MergeOnLinePlayer,              #跨服在线玩家25
Def_Merge26,                        #26
Def_MergePlayerEvent,               #跨服玩家事件27
Def_MaxType,
) = range(29)
#子服务器发送信息到跨服服务器, 与GameServer一致
(
Def_RequestMergePKMatch,            #跨服PK匹配请求0
Def_CancelMergePKMatch,             #跨服PK取消匹配1
Def_MergePKPrepareOK,               #跨服PK准备完毕2
Def_SendGMCMD,                      #发送GM命令3
Def_RecoverMergePKWin,              #跨服PK恢复连胜4
Def_SendMergeLoudspeaker,           #发送跨服喇叭5
Def_ClientServerInitOK,             #跨服子服启动成功6
) = range(7)
#版本修正标记, 使用key格式 Def_Player_Dict_VersionFix
(
Def_VerFix_ChatBubbleBox, # 1.2版本购买VIP礼包可获得激活气泡框道具,针对已购买过VIP礼包的老号处理;
@@ -4621,10 +4550,6 @@
Def_Cost_FinishTruck, # 完成镖车
Def_Cost_RefreshTimeShop, # 刷新神秘商店
Def_Cost_OpenNoble, # 开通贵族
Def_Cost_BuyMergePKCnt, # 购买跨服PK次数
Def_Cost_RecoverMergePKWin, # 恢复跨服PK连胜
Def_Cost_MergeKingSupport, # Ѻע
Def_Cost_MergeKingBribe, # 贿赂
Def_Cost_HighLadder, # 天梯竞技场
Def_Cost_Reincarnation, # 转生
Def_Cost_BuyStallItem, # 购买摆摊物品
@@ -4634,7 +4559,7 @@
Def_Cost_Trade, # 交易
Def_Cost_Rename, # 改名
Def_Cost_SkillLvUp, # 技能升级
) = range(2000, 2000 + 61)
) = range(2000, 2000 + 57)
Def_Cost_Reason_SonKey = "reason_name_son" # 消费点原因子类说明key
@@ -4680,10 +4605,6 @@
Def_Cost_RefreshArrestTask:"RefreshArrestTask",
Def_Cost_RefreshTimeShop:"RefreshTimeShop",
Def_Cost_ResetGreatMasterSkill:"ResetTalentSkill",
Def_Cost_BuyMergePKCnt:"BuyMergePKCnt",
Def_Cost_RecoverMergePKWin:"RecoverMergePKWin",
Def_Cost_MergeKingSupport:"MergeKingSupport",
Def_Cost_MergeKingBribe:"MergeKingBribe",
Def_Cost_GM:"GM",
Def_Cost_BourseBuy:"BourseBuy",
Def_Cost_BourseCharge:"BourseCharge",
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
@@ -1572,14 +1572,6 @@
    
    return inputText
## 是否跨服服务器
#  @param None None
#  @return
def IsMergeServer():
    config = MapConfig.GetConfig()
    return config.get('IsMergeWarServe', 0)
def IsCrossServer():
    ## 是否跨服服务器
    return ToIntDef(ReadChConfig.GetPyMongoConfig("Merge", "IsMergeServer"), 0)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GatherSoul.py
@@ -575,15 +575,27 @@
        
        GameWorldProcess.CloseFB(tick)
        return
    needSpace = len(totalItemList)
    emptySpace = ItemCommon.GetItemPackSpace(curPlayer, ShareDefine.rptGatherSoul, needSpace)
    isSendMail = int(needSpace > emptySpace) # 是否发送邮件
    needPackSpaceDict = {}
    for itemID, itemCnt, isBind in totalItemList:
        curItem = GameWorld.GetGameData().GetItemByTypeID(itemID)
        if not curItem:
            return
        packType = ChConfig.GetItemPackType(curItem.GetType())
        needSpace = ItemControler.GetItemNeedPackCount(packType, curItem, itemCnt)
        needPackSpaceDict[packType] = needPackSpaceDict.get(packType, 0) + needSpace
    isSendMail = False #是否背包不足
    for packType, needSpace in needPackSpaceDict.items():
        if needSpace > ItemCommon.GetItemPackSpace(curPlayer, packType, needSpace):
            isSendMail = True
            break
    if isSendMail:
        PlayerControl.SendMailByKey('JHBagFull2', [curPlayer.GetPlayerID()], totalItemList)
        GameWorld.DebugLog("背包空间不够,发送邮件: mailItemList=%s" % str(totalItemList), curPlayer.GetPlayerID())
    else:
        for itemID, itemCnt, isBind in totalItemList:
            ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [ShareDefine.rptGatherSoul],
            ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [],
                                            event=["GatherSoulFB", False, {}])
            
    fbCfg = GetGatherSoulFBCfg()
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -1118,6 +1118,10 @@
            return False
        
        itemID = tagItem.GetItemTypeID()
        #激活成就的道具
        if tagItem.GetType() == ChConfig.Def_ItemType_SuccessItem:
            PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_GetSpecialItem, 1, [itemID])
            return True
        if itemID in ChConfig.Def_TransformItemIDList:
            # 直接转化为对应货币的物品仅在放入背包时直接转化,否则还是以真实物品的形式存在,但堆叠上限需要做特殊处理
            if packIndex == IPY_GameWorld.rptItem:
@@ -2016,11 +2020,6 @@
    curItemData = GameWorld.GetGameData().GetItemByTypeID(itemID)
    if not curItemData:
        return False
    #激活成就的道具
    if curItemData.GetType() == ChConfig.Def_ItemType_SuccessItem:
        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_GetSpecialItem, 1, [itemID])
        return True
    
    defaultPack = IPY_GameWorld.rptItem if not packIndexList else packIndexList[0]
    packIndex = ChConfig.GetItemPackType(curItemData.GetType(), defaultPack)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -1564,72 +1564,6 @@
#---------------------------------------------------------------------
def ResetMergeFBPlayerCntInfo(resetMapID):
    # 重置跨服活动副本地图人数分配情况信息
    mapID = GameWorld.GetMap().GetMapID()
    if mapID != ChConfig.Def_MergeTransMapID:
        return
    GameWorld.Log("重置跨服活动副本地图人数分配情况信息: resetMapID=%s" % resetMapID)
    gameWorld = GameWorld.GetGameWorld()
    mergeFBPlayerCntDict = ReadChConfig.GetEvalChConfig("MergeFBPlayerCount")
    for reqMapID, mapInfo in mergeFBPlayerCntDict.items():
        if resetMapID and resetMapID != reqMapID:
            continue
        for playerMapID in mapInfo[1]:
            playerCnt = gameWorld.GetGameWorldDictByKey(ChConfig.Map_WorldKey_MergeFBMapPlayerCnt % playerMapID)
            for num in xrange(1, 1 + playerCnt):
                playerID = gameWorld.GetGameWorldDictByKey(ChConfig.Map_WorldKey_MergeFBMapPlayerID % (playerMapID, num))
                gameWorld.SetGameWorldDict(ChConfig.Map_WorldKey_MergeFBMapPlayerID % (playerMapID, num), 0) # 重置对应的玩家ID
                gameWorld.SetGameWorldDict(ChConfig.Map_WorldKey_MergeFBPlayerMapID % (reqMapID, playerID), 0) # 重置玩家ID对应的地图
            gameWorld.SetGameWorldDict(ChConfig.Map_WorldKey_MergeFBMapPlayerCnt % playerMapID, 0) # 重置地图人数
    return
def __GetMergeFBPlayerMapID(curPlayer, reqMapID):
    # 获取玩家所分配的跨服活动地图ID
    # @param reqMapID: 可以是本服活动的地图ID标识; 也可以是指定的跨服活动地图ID, 如果是指定的地图ID也是直接返回
    mergeFBPlayerCntDict = ReadChConfig.GetEvalChConfig("MergeFBPlayerCount")
    if reqMapID not in mergeFBPlayerCntDict:
        return reqMapID
    playerID = curPlayer.GetPlayerID()
    gameWorld = GameWorld.GetGameWorld()
    playerMapID = gameWorld.GetGameWorldDictByKey(ChConfig.Map_WorldKey_MergeFBPlayerMapID % (reqMapID, playerID))
    if playerMapID:
        GameWorld.DebugLog("已经有分配跨服活动地图,直接返回!playerMapID=%s" % (playerMapID), playerID)
        return playerMapID
    # 还没分配该玩家, 则开始选择分配的地图ID
    maxPlayerCnt, mapIDList = mergeFBPlayerCntDict[reqMapID]
    minPlayerCount = 0 # 最少的地图玩家人数
    minPlayerMapID = 0 # 最少人数的地图ID
    for mID in mapIDList:
        curMapPlayerCnt = gameWorld.GetGameWorldDictByKey(ChConfig.Map_WorldKey_MergeFBMapPlayerCnt % mID)
        if curMapPlayerCnt < maxPlayerCnt:
            playerMapID = mID
            break
        # 保存最少人数的地图ID信息
        if not minPlayerCount or (minPlayerCount and curMapPlayerCnt < minPlayerCount):
            minPlayerCount = curMapPlayerCnt
            minPlayerMapID = mID
    # 如果没有人数未满的活动地图,则分配到人数较少的地图
    if not playerMapID:
        playerMapID = minPlayerMapID
    # 更新分配信息
    if playerMapID:
        mapPlayerCnt = gameWorld.GetGameWorldDictByKey(ChConfig.Map_WorldKey_MergeFBMapPlayerCnt % playerMapID) + 1
        gameWorld.SetGameWorldDict(ChConfig.Map_WorldKey_MergeFBMapPlayerCnt % playerMapID, mapPlayerCnt)
        gameWorld.SetGameWorldDict(ChConfig.Map_WorldKey_MergeFBMapPlayerID % (playerMapID, mapPlayerCnt), playerID)
        gameWorld.SetGameWorldDict(ChConfig.Map_WorldKey_MergeFBPlayerMapID % (reqMapID, playerID), playerMapID)
        GameWorld.Log("分配跨服活动玩家所属地图: plaeyrID=%s,reqMapID=%s,分配MapID=%s,mapPlayerCnt=%s"
                      % (playerID, reqMapID, playerMapID, mapPlayerCnt))
    return playerMapID
##玩家进入副本
# @param curPlayer 玩家实例
# @param mapID 地图ID
@@ -1648,13 +1582,13 @@
    #        NotifyCode(curPlayer, 'jiazu_xyj_671654')
    #        return
        
    #跨服活动人数分流处理
    if GameWorld.IsCrossServer():
        reqMapID = mapID
        mapID = __GetMergeFBPlayerMapID(curPlayer, reqMapID)
        if not mapID:
            GameWorld.ErrLog("找不到可分配进入的跨服活动地图ID! reqMapID=%s" % reqMapID)
            return
#    #跨服活动人数分流处理
#    if GameWorld.IsCrossServer():
#        reqMapID = mapID
#        mapID = __GetMergeFBPlayerMapID(curPlayer, reqMapID)
#        if not mapID:
#            GameWorld.ErrLog("找不到可分配进入的跨服活动地图ID! reqMapID=%s" % reqMapID)
#            return
      
    #过滤封包地图ID
    if not GameWorld.GetMap().IsMapIDExist(mapID):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -154,9 +154,6 @@
    #副本OnDay事件响应
    FBLogic.OnDay(tick)
    
    #重置跨服活动副本人数分配情况信息
    PlayerControl.ResetMergeFBPlayerCntInfo(0)
    #删除所有的任务发布
    missionPubManager = GameWorld.GetGameWorld().GetDBMissionPubManager()
    missionPubManager.Clear()
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
@@ -543,8 +543,9 @@
                    addAttr[int(attid)] = attnum * totalSignNum
                GameWorld.AddDictValue(allAttrDict, addAttr)
            #王者法宝属性
            kingAwardMark = 1
            kingMWIpyData = IpyGameDataPY.GetIpyGameDataNotLog('MagicWeaponOfKing', magicWeaponID, kingAwardMark)
            seasonID = IpyGameDataPY.GetFuncEvalCfg('MagicWeaponOfKing', 1, {}).get(magicWeaponID, 0)
            kingAwardLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_SeasonAwardLV % seasonID)
            kingMWIpyData = IpyGameDataPY.GetIpyGameDataNotLog('MagicWeaponOfKing', magicWeaponID, kingAwardLV)
            if kingMWIpyData and GetIsWearMagicWeapon(curPlayer, magicWeaponID):
                attrDict = kingMWIpyData.GetAddAttr()
                GameWorld.AddDictValue(allAttrDict, attrDict)
@@ -933,7 +934,8 @@
        curUpExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MagicWeaponUpExp % mwID)
        state = GetIsClickMagicWeapon(curPlayer, mwID)
        FBPassLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MWFBPassLevel % mwID)
        if not mwLv and not curUpExp and not state and not FBPassLV:
        isWear = GetIsWearMagicWeapon(curPlayer, mwID)
        if not mwLv and not curUpExp and not state and not FBPassLV and not isWear:
            continue
        pack = ChPyNetSendPack.tagMCMagicWeaponInfo()
        pack.MWID = mwID
@@ -941,6 +943,7 @@
        pack.Exp = curUpExp
        pack.State = state
        pack.FBPassLV = FBPassLV
        pack.IsWear = isWear
        sendPack.InfoList.append(pack)
    sendPack.Count = len(sendPack.InfoList)
    if sendPack.Count:
@@ -1116,18 +1119,27 @@
    mwID = clientData.MWID
    if not GetIsActiveMagicWeapon(curPlayer, mwID):
        return
    isWear = clientData.State
    if isWear:
        maxCnt = IpyGameDataPY.GetFuncCfg('MagicWeaponOfKing', 2)
        hasWearCnt = 0
        for mid in IpyGameDataPY.GetFuncEvalCfg('MagicWeaponOfKing', 1, {}):
            if hasWearCnt >= maxCnt:
                return
            if GetIsWearMagicWeapon(curPlayer, mid):
                hasWearCnt +=1
    
    SetMagicWeaponWearState(curPlayer, mwID, clientData.State)
    SetMagicWeaponWearState(curPlayer, mwID, isWear)
    Sycn_MagicWeaponLV(curPlayer, mwID)
    return
def GetIsWearMagicWeapon(curPlayer, mwID):
    #获取法宝是否佩戴
    return GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_MagicWeaponIsClick, mwID % 100, True, [mwID / 100])
    return GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_MagicWeaponIsWear, mwID % 100, True, [mwID / 100])
def SetMagicWeaponWearState(curPlayer, mwID, state):
    #设置法宝是否佩戴
    GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_MagicWeaponIsClick, mwID % 100, state, True, [mwID / 100])
    GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_MagicWeaponIsWear, mwID % 100, state, True, [mwID / 100])
    return
#// A5 12 激活法宝之魂 #tagCMActiveMWSoul
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -167,24 +167,9 @@
Def_Notify_WorldKey_FamilyPartyInfo = "FamilyPartyInfo"  # 仙盟宴会数据
Def_Notify_WorldKey_MergeBoss = "Merge_Boss"  # 跨服boss
Def_Notify_WorldKey_CrossPKZoneID = "CrossPKZoneID"  # 本服跨服PK所属赛区
Def_Notify_WorldKey_CrossPKSeasonID = "CrossPKSeasonID"  # 本服跨服PK当前赛季
Def_Notify_WorldKey_CrossPKSeasonState = "CrossPKSeasonState"  # 本服跨服PK赛季状态 0-关闭,1-开启中
Def_Notify_WorldKey_Merge_PK = "Merge_PK"  # 跨服PK, 仅跨服服务器有用,做为触发PKState用
Def_Notify_WorldKey_MergePKState = "MergePK_State"  # 由跨服服务器控制的跨服PK活动状态
Def_Notify_WorldKey_MergePKDayID = "MergePK_DayID"  # 跨服PK活动日ID
Def_Notify_WorldKey_MergePKWeekID = "MergePK_WeekID"  # 跨服PK活动周ID
Def_Notify_WorldKey_MergePKSeasonID = "MergePK_SeasonID"  # 跨服PK活动赛季ID
Def_Notify_WorldKey_MergePKSeasonStartTime = "MergePK_SeasonStartTime"  # 跨服PK活动当前赛季开始时间
Def_Notify_WorldKey_IsSeasonEnd = "MergePK_IsSeasonEnd"  # 跨服PK活动当前赛季是否结束
Def_Notify_WorldKey_Merge_King = "Merge_King"  # 由跨服服务器控制的跨服王者争霸活动状态
Def_Notify_WorldKey_Merge_KingStartID = "Merge_KingStartID"  # 王者争霸开始活动ID, 用于奖励状态重置
Def_Notify_WorldKey_Merge_KingOverID = "Merge_KingOverID"  # 王者争霸结束活动ID, 用于奖励状态重置
Def_Notify_WorldKey_Merge_KingServerHonour = "Merge_KingServerHonour"  # 王者争霸本服荣耀排位
Def_Notify_WorldKey_MixServerCampaignSaveData = "MixServerCampaignSaveData_%s"  # 合服活动记录数据时机0-否 1-是
Def_Notify_WorldKey_MixServerCampaignGetAward = "MixServerCampaignGetAward_%s"  # 合服活动可领奖时机0-否 1-是
@@ -590,11 +575,9 @@
    
    Def_BT_CostTeHui,                         #消费特惠排行榜
    Def_BT_CostTeHuiLast,                     #消费特惠排行榜上一期
    Def_BT_MergePKDay,                        #跨服PK日积分榜
    Def_BT_MergePKWeek,                       #跨服PK周积分榜
    
    Def_BT_Max,                               #排行榜最大类型
) = range(0, 34 + 2)
) = range(0, 32 + 2)
    
#职业对应战力排行榜类型
JobFightPowerBillboardDict = {
@@ -967,7 +950,7 @@
                                Def_UniversalGameRecType_FBHelpBattleCheckInPlayer, #助战玩家登记记录9
                                Def_UniversalGameRecType_FBHelpBattleRecord, #助战未同步记录10
                                Def_UniversalGameRecType_11,
                                Def_UniversalGameRecType_MergeRegister, # 上传数据报名信息12
                                Def_UniversalGameRecType_12,
                                Def_UniversalGameRecType_13,
                                Def_UniversalGameRecType_Reward,    # 通用奖励表(TopBar)14
                                Def_UniversalGameRecType_15,
@@ -999,14 +982,14 @@
                                Def_UniversalGameRecType_RedPacketRecord,   # 红包产出结果记录41
                                Def_UniversalGameRecType_42,
                                Def_UniversalGameRecType_43,
                                Def_UniversalGameRecType_MergePKAwardRecord, # 跨服PK奖励领取记录44
                                Def_UniversalGameRecType_MergePKTopPlayerEquip, # 跨服PK赛高手玩家装备预览信息45
                                Def_UniversalGameRecType_MergePKScoreAward, # 跨服PK积分领奖记录46
                                Def_UniversalGameRecType_MergeKingBattleRecord, # 跨服王者争霸对战信息47
                                Def_UniversalGameRecType_MergeKingBattleRecordLast, # 跨服王者争霸上一期对战信息48
                                Def_UniversalGameRecType_MergeKingSupportRecord, # 跨服王者争霸支持押注信息49
                                Def_UniversalGameRecType_MergeKingTopPlayerEquip, # 跨服王者争霸高手玩家装备预览信息50
                                Def_UniversalGameRecType_MergePKUnNotifyOver, # 跨服PK未同步的PK结果51
                                Def_UniversalGameRecType_44,
                                Def_UniversalGameRecType_45,
                                Def_UniversalGameRecType_46,
                                Def_UniversalGameRecType_47,
                                Def_UniversalGameRecType_48,
                                Def_UniversalGameRecType_49,
                                Def_UniversalGameRecType_50,
                                Def_UniversalGameRecType_51,
                                Def_UniversalGameRecType_52,
                                Def_UniversalGameRecType_53,
                                Def_UniversalGameRecType_54,
@@ -1033,13 +1016,10 @@
# 客户端不可查看的自定义表类型                               
Def_Confidential_UniversalRecList = (
                                     Def_UniversalGameRecType_MergeRegister, # 上传数据报名信息12
                                     Def_UniversalGameRecType_FamilyWarMember, # 盟联赛参赛人员记录70
                                     )                               
# 只同步自身数据的类型 {类型:自身数据最大条数, ...} , 自身数据最大条数-1时代表自身全部数据; 这里的数据Value1固定为playerID
Def_Sync_UniversalRecSelfDict = {
                                 Def_UniversalGameRecType_MergePKAwardRecord:1,
                                 Def_UniversalGameRecType_MergeKingSupportRecord:-1,
                                 }
#家族行为类型 在GameServer.ChConfig.ActionTypeSaveCnt 中配置最高存储条数
@@ -1202,6 +1182,7 @@
# 跨服服务器发送子服信息定义
CrossServerMsg_ExitCrossServer = "ExitCrossServer"      # 退出跨服服务器
CrossServerMsg_Notify = "Notify"                        # 提示信息
CrossServerMsg_ViewPlayerCacheRet = "ViewPlayerCacheRet"# 查看跨服玩家信息结果
CrossServerMsg_PKMatchReqRet = "PKMatchReqRet"          # 跨服PK匹配请求结果
CrossServerMsg_PKMatchResult = "PKMatchResult"          # 跨服PK匹配结果
CrossServerMsg_PKReadyOKRoomList = "PKReadyOKRoomList"  # 跨服PK已准备好的房间列表
@@ -1213,47 +1194,16 @@
# 子服发送跨服信息定义
ClientServerMsg_ServerInitOK = "ServerInitOK"           # 子服启动成功
ClientServerMsg_GMCMD = "GMCMD"                         # GM命令
ClientServerMsg_ViewPlayerCache = "ViewPlayerCache"     # 查看跨服玩家信息
ClientServerMsg_PKMatch = "PKMatch"                     # 跨服PK匹配
ClientServerMsg_PKCancel = "PKCancel"                   # 跨服PK取消匹配
ClientServerMsg_PKPrepareOK = "PKPrepareOK"             # 跨服PK准备完毕
ClientServerMsg_PKBillboard = "PKBillboard"             # 跨服PK排行榜
#跨服匹配PK奖励类型
Def_MergePKAwardTypeList = (
Def_MergePKAward_DayPKCnt, # 0 每日挑战次数奖励
Def_MergePKAward_DayWinCnt, # 1 每日胜利次数奖励
Def_MergePKAward_SeasonGrade, # 2 赛季晋级奖励
Def_MergePKAward_SeasonRank, # 3 赛季排名奖励
Def_MergePKAward_FirstWinCnt, # 4 首次胜利次数奖励
) = range(5)
#跨服战战斗状态
(
Def_NotBegin, #还没开始
Def_ID1Win, #第一个玩家胜利(与CampType_Justice一致)
Def_ID2Win, #第二个玩家胜利(与CampType_Evil一致)
Def_Battling, #正在战斗中
Def_BattleReady, #押注中
) = range(5)
# 跨服赛(跨服服务器)上传数据状态
(
Def_MergeRegisterState_None,  #空闲
Def_MergeRegisterState_Start,  #开始上传
Def_MergeRegisterState_Err,  # 上传出错
Def_MergeRegisterState_Success,  #上传成功
Def_MergeRegisterState_Request,  #请求跨服, 比开始上传还早的一步,先通过请求,才开始上传
) = range(5)
# 跨服活动类型
(
Def_MergeAction_MergeWar,  # 万国战
Def_MergeAction_WarOfHonour,  # 荣耀之战(跨服混战)
Def_MergeAction_Boss,  # 跨服boss
Def_MergeAction_MergePK,  # 跨服匹配PK
Def_MergeAction_MergeKing,  # 跨服王者争霸
Def_MergeAction_TypeMax,  # 类型数
) = range(6)
Def_CrossAction_PK,  # 跨服匹配PK
) = range(1)
#角色改名结果
(
@@ -1345,9 +1295,7 @@
ScoreType_NewGuySuperShow,  # 击杀怪物统计
ScoreType_GetItem,  # 获得物品奖励统计
ScoreType_RedFortReward,  # 打开客户端frmRedFortReward
ScoreType_MergeBoss,  # 跨服boss界面
ScoreType_MergePK,  # 跨服匹配PK结算
)=range(7)
)=range(5)
ScoreTypeName = "TScore"