From a3d7f713806648255f13ef5934090e8ec71f3465 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 13 十一月 2020 15:01:22 +0800 Subject: [PATCH] 4859 【主干】【长尾】【BT】仙盟红包个数超过255报错(修正红包已抢完状态通知;红包已抢或抢完的登录不通知;红包总数超过255防范;) --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py | 21 ++++++++++++++++++--- 1 files changed, 18 insertions(+), 3 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py index 4693671..da7e44b 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py @@ -515,8 +515,17 @@ #找该红包的抢信息 grabRecordDict = __GetGrabRecord(redPacketID) - if playerID in grabRecordDict or len(grabRecordDict) >= packetCnt: - GameWorld.DebugLog(" 该玩家已抢过此红包!",playerID) + if playerID in grabRecordDict: + GameWorld.DebugLog(" 该玩家已抢过此红包!", playerID) + __NotifyGrabRedPacketInfo(curPlayer, redPacketID, grabRecordDict) + return + + if len(grabRecordDict) >= packetCnt: + GameWorld.DebugLog(" 红包已被抢完!", playerID) + if state != State_HasAllGot: + redPacketRecData.SetValue4(State_HasAllGot) + #GameWorld.DebugLog(" 纠正红包已抢完状态! state=%s,updState=%s" % (state, State_HasAllGot)) + __NotifyFamilyRedPacketInfo(curFamily, redPacketRecData, grabRecordDict.keys()) __NotifyGrabRedPacketInfo(curPlayer, redPacketID, grabRecordDict) return @@ -555,7 +564,7 @@ #{playerid:[抢到的钱,名字,job]} g_grabDataDict[redPacketID] = grabRecordDict - if len(grabRecordDict) == packetCnt: + if len(grabRecordDict) >= packetCnt: redPacketRecData.SetValue4(State_HasAllGot) #通知该玩家红包抢结果 @@ -804,11 +813,17 @@ if curPlayer.GetPlayerID() in grabHeroIDList: state = State_HasGot + if sendPack.IsAll and state in [State_HasGot, State_HasAllGot]: + #GameWorld.DebugLog("已抢或抢完的不发: RedPacketID=%s,state=%s" % (packetInfo.RedPacketID, state)) + continue packetInfo.State = state packetInfo.PacketCnt = int(packetData.GetStrValue2()) packetInfo.Wish = packetData.GetStrValue3() sendPack.RedPacketInfo.append(packetInfo) + if len(sendPack.RedPacketInfo) > 250: + #GameWorld.DebugLog("红包太多了!") + break sendPack.Count = len(sendPack.RedPacketInfo) NetPackCommon.SendFakePack(curPlayer, sendPack) -- Gitblit v1.8.0