From f6b1972e51bb85ede4dcf4fbc3daf9f660c67cf4 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 30 一月 2019 15:40:47 +0800
Subject: [PATCH] 6087 【后端】【1.5.200】春节红包雨活动(广播红包雨;新增红包GM命令 SetRedPacket)

---
 ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetRedPacket.py |   50 ++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 46 insertions(+), 4 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetRedPacket.py b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetRedPacket.py
index 91c1464..9a5ae44 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetRedPacket.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetRedPacket.py
@@ -18,6 +18,8 @@
 import PlayerFamilyRedPacket
 import ShareDefine
 import GameWorld
+import IpyGameDataPY
+import PlayerDBGSEvent
 
 
 ## GM命令执行入口
@@ -29,21 +31,61 @@
     if not paramList:
         return
     
+#    GameWorld.DebugAnswer(curPlayer, "重置所有红包领取:SetRedPacket 0")
+#    GameWorld.DebugAnswer(curPlayer, "清除所有类型红包:SetRedPacket 0 0")
+#    GameWorld.DebugAnswer(curPlayer, "清除指定类型红包:SetRedPacket 0 类型A 类型B ...")
+    
+    paramA = paramList[0]
+    paramB = paramList[1] if len(paramList) > 1 else None
     # 重置所有红包数据
-    if len(paramList) == 1 and paramList[0] == 0:
-        GameWorld.DebugAnswer(curPlayer, "清除所有红包领取记录")
+    if paramA == 0:
         PlayerFamilyRedPacket.g_allRecordDict = {}
         PlayerFamilyRedPacket.g_grabDataDict = {}
         PlayerFamilyRedPacket.g_redPackCountDict = {}
         
-        recordType = ShareDefine.Def_UniversalGameRecType_FamilyRedPacketGrabRecord
         universalRecMgr = GameWorld.GetUniversalRecMgr()
-        universalRecMgr.Delete(recordType)
+        # 清除所有类型红包
+        if paramB == 0:
+            universalRecMgr.Delete(ShareDefine.Def_UniversalGameRecType_FamilyRedPacketAllRecord)
+            __ResetSendState([])
+            GameWorld.DebugAnswer(curPlayer, "清除所有类型红包OK!")
+            
+        # 清除指定类型红包
+        elif paramB:
+            delTypeList = paramList[1:]
+            allRecordList = universalRecMgr.GetTypeList(ShareDefine.Def_UniversalGameRecType_FamilyRedPacketAllRecord)
+            delCount = 0
+            for index in xrange(allRecordList.Count()):
+                universalRecData = allRecordList.At(index - delCount)
+                strValue1 = universalRecData.GetStrValue1()
+                strValue1List = strValue1.split('|')
+                getWay = int(strValue1List[3])
+                if getWay not in delTypeList:
+                    continue
+                allRecordList.Delete(index)
+                delCount += 1
+            __ResetSendState(delTypeList)
+            GameWorld.DebugAnswer(curPlayer, "清除指定类型红包OK!%s,条数:%s" % (delTypeList, delCount))
+            
+        # 清除抢的记录
+        universalRecMgr.Delete(ShareDefine.Def_UniversalGameRecType_FamilyRedPacketGrabRecord)
         PlayerFamilyRedPacket.NotifyRedPacketInfo(curPlayer)
+        GameWorld.DebugAnswer(curPlayer, "清除所有红包领取记录OK!")
         return
     
     
     return
 
+def __ResetSendState(delTypeList):
+    ipyDataMgr = IpyGameDataPY.IPY_Data()
+    for index in xrange(ipyDataMgr.GetFamilyRedPackCount()):
+        ipyData = ipyDataMgr.GetFamilyRedPackByIndex(index)
+        if delTypeList and ipyData.GetGetType() not in delTypeList:
+            continue
+        redPackID = ipyData.GetID()
+        if PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerFamilyRedPacket.DBKey_RedPacketSend % redPackID):
+            PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerFamilyRedPacket.DBKey_RedPacketSend % redPackID, 0)
+    return
+
 
 

--
Gitblit v1.8.0