From f78b5c4fb02a016c43398f512a302b8c24d62698 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期三, 26 十二月 2018 18:16:13 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/SnxxServerCode --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py | 75 ------ ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py | 9 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 82 +----- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerEventCounter.py | 25 -- ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py | 85 +++++++ ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py | 9 ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py | 6 ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py | 18 - ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmPK.py | 2 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py | 26 + ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py | 3 ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py | 2 ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py | 49 ---- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GatherSoul.py | 20 + ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerXMZZ.py | 1 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py | 8 ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 82 +----- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 80 ------ ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py | 3 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 85 ------ 20 files changed, 173 insertions(+), 497 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py b/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py index d98b5bd..7412440 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py +++ b/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 #仙盟联赛 diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py index 42d432a..d8bc871 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py +++ b/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(): ## 是否跨服服务器 diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py index 101d467..43bc593 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py +++ b/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) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmPK.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmPK.py index 71f11ff..345992d 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmPK.py +++ b/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: diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py index 5b1a8ae..60050fd 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py +++ b/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 #------------------------------------------------------------------------------- diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py index 74ee805..2e3eac3 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py +++ b/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) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py index 0ed63b0..7d9c53d 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py +++ b/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 + + \ No newline at end of file diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py index a75a629..783cd36 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py +++ b/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" diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerEventCounter.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerEventCounter.py index 8031d17..ba4f61b 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerEventCounter.py +++ b/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 diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerXMZZ.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerXMZZ.py index 79d5eda..992ecc5 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerXMZZ.py +++ b/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() diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py b/ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py index 7a1d26a..594be37 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py +++ b/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, ...} diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py index fbdd9b5..cfd7eb2 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py +++ b/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" diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py index 0887c79..c25bc11 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py +++ b/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", diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py index 0de2912..7680c92 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py +++ b/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) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GatherSoul.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GatherSoul.py index 4d1f7c9..7a8ecac 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GatherSoul.py +++ b/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() diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py index 23cecfd..bc231f1 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py +++ b/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) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py index 6287537..ded7ad0 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py +++ b/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): diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py index f8c4f51..2abd246 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py +++ b/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() diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py index 78b0270..1caf2ff 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py +++ b/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 - - SetMagicWeaponWearState(curPlayer, mwID, clientData.State) + 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, 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 diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py index fbdd9b5..cfd7eb2 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py +++ b/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" -- Gitblit v1.8.0