From bc433db8262081f0400bcb9c2c3476000662daf3 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 10 七月 2024 14:24:53 +0800 Subject: [PATCH] 10205 【越南】【主干】【港台】【砍树】自选礼包(支持一次性放入超65535个数叠加物品;邮件同步支持一次性领取超65535个数叠加物品) --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py | 35 ++++++++++++++++++----------------- 1 files changed, 18 insertions(+), 17 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py index ea99991..0217cf2 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py @@ -375,7 +375,7 @@ # BYTE Type; //类型 TBillboardType # DWORD StartIndex; //查看的起始名次索引, 默认0 # BYTE WatchCnt; //查看条数,默认20,最大不超过100 -# BYTE IsWatchSelf; //是否查看自己名次前后,默认10条数据 +# DWORD WatchID; //查看指定ID名次前后,如玩家ID、家族ID等 #}; def Client_PYWatchBillboard(index, clientData, tick): @@ -386,14 +386,14 @@ packType = clientData.Type startIndex = clientData.StartIndex watchCnt = clientData.WatchCnt - isWatchSelf = clientData.IsWatchSelf - if not __CheckWatchCD(curPlayer, packType, tick): - return + watchID = clientData.WatchID + #if not __CheckWatchCD(curPlayer, packType, tick): + # return - Sync_BillboardEx(curPlayer, packType, isWatchSelf, startIndex, watchCnt) + Sync_BillboardEx(curPlayer, packType, watchID, startIndex, watchCnt) return -def Sync_BillboardEx(curPlayer, bbType, isWatchSelf=False, startIndex=0, watchCnt=20): +def Sync_BillboardEx(curPlayer, bbType, watchID=0, startIndex=0, watchCnt=20): if bbType < 0 or bbType >= ShareDefine.Def_BT_Max: return @@ -402,12 +402,12 @@ GameWorld.ErrLog("找不到排行榜数据!bbType=%s" % (bbType)) return - playerID = curPlayer.GetPlayerID() + #playerID = curPlayer.GetPlayerID() count = billBoard.GetCount() endIndex = 0 # 查看自己前后名次 - if isWatchSelf: - playerIndex = billBoard.IndexOfByID(playerID) + if watchID: + playerIndex = billBoard.IndexOfByID(watchID) if playerIndex != -1: # 前5后4,首尾补足10条记录 endIndex = min(playerIndex + 5, count) @@ -425,7 +425,7 @@ billBoardData = ChPyNetSendPack.tagPYBillboardData() billBoardData.Clear() - billBoardData.IsWatchSelf = isWatchSelf + billBoardData.WatchID = watchID billBoardData.Type = bbType billBoardData.Billboard = [] for index in xrange(startIndex, endIndex): @@ -669,14 +669,15 @@ return False isNewData = playerBillBoardData.GetID2() == 0 # 是否是新增的数据 - cmpValueChange = False - if isNewData or playerBillBoardData.GetCmpValue() != cmpValue or playerBillBoardData.GetCmpValue2() != cmpValue2 \ - or playerBillBoardData.GetCmpValue3() != cmpValue3: - cmpValueChange = True - if cmpValue3 == 0: + cmpValueChange = isNewData or playerBillBoardData.GetCmpValue() != cmpValue or playerBillBoardData.GetCmpValue2() != cmpValue2 \ + or (cmpValue3 and playerBillBoardData.GetCmpValue3() != cmpValue3) + if cmpValue3 == 0: + if cmpValueChange: # 时间权值仅在比较值变更的情况下才更新, 防止其他附属值更新时导致比较值相同的玩家名次间会变动的问题 calcTime = GameWorld.ChangeTimeStrToNum("2080-01-01 00:00:00") cmpValue3 = max(0, calcTime - int(time.time())) # 比较值3如果没指定值则默认存当前更新的time + else: + cmpValue3 = playerBillBoardData.GetCmpValue3() #设置排行榜数据 playerBillBoardData.SetType(billboardIndex) @@ -703,8 +704,8 @@ if cmpValue3 > 0: playerBillBoardData.SetCmpValue3(cmpValue3) - GameWorld.DebugLog("更新排行榜值 index=%s,type2=%s,value1=%s,value2=%s,cmpValue=%s,cmpValue2==%s,cmpValue3==%s,isNewData=%s,%s" - % (billboardIndex, type2, value1, value2, cmpValue, cmpValue2, cmpValue3, isNewData, kwargs), curPlayerID) + GameWorld.DebugLog("更新排行榜值 index=%s,type2=%s,value1=%s,value2=%s,cmpValue=%s,cmpValue2==%s,cmpValue3==%s,isNewData=%s,cmpValueChange=%s,%s" + % (billboardIndex, type2, value1, value2, cmpValue, cmpValue2, cmpValue3, isNewData, cmpValueChange, kwargs), curPlayerID) if not cmpValueChange: return True -- Gitblit v1.8.0