From 95fb3b3d2ebabcc183b50722f7e7c0d65c115952 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 24 二月 2021 14:13:56 +0800
Subject: [PATCH] 4949 【主干】【BT2】节日祝福-在boss之家击杀个人boss完成了击杀boss之家boss游历值

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py |   24 ++++++++++++++++++++----
 1 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
index ebb8939..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)
         
         #通知该玩家红包抢结果
@@ -635,7 +644,8 @@
             strValue1 = universalRecData.GetStrValue1()
             strValue1List = strValue1.split('|')
             playerID = strValue1List[0]
-            if playerID:
+            getWay = int(strValue1List[3])
+            if playerID and getWay is ShareDefine.RedPackType_GoldPacket:
                 playerID = int(playerID)
                 grabRecordDict = __GetGrabRecord(redPacketID)
                 outNum = sum([a[0] for a in grabRecordDict.values()]) #已被抢的钱
@@ -803,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