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/Player/PlayerFamilyRedPacket.py |   65 +++++++++++++++++---------------
 1 files changed, 34 insertions(+), 31 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
index 88e6adb..7264f0b 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
@@ -87,19 +87,23 @@
 
 ##---------------------------------------- 节日红包 -----------------------------------------------
 
-def OnResetFeastRedPacket(ipyData):
+def OnResetFeastRedPacket(ipyData, dayIndex):
     ## 重置节日红包状态
     
     if not ipyData:
         return
     
     dayRedPackIDList = ipyData.GetRedPacketIDList()
-    GameWorld.DebugLog("重置红包发放状态: dayRedPackIDList=%s" % dayRedPackIDList)
-    for redPackIDList in dayRedPackIDList:
-        for redPackID in redPackIDList:
-            if PlayerDBGSEvent.GetDBGSTrig_ByKey(DBKey_RedPacketSend % redPackID):
-                PlayerDBGSEvent.SetDBGSTrig_ByKey(DBKey_RedPacketSend % redPackID, 0)
-                
+    GameWorld.Log("重置节日红包发放状态: dayRedPackIDList=%s, dayIndex=%s" % (dayRedPackIDList, dayIndex))
+    if dayIndex < 0 or dayIndex >= len(dayRedPackIDList):
+        GameWorld.ErrLog("当前节日天索引没有配配置系统红包ID! dayRedPackIDList=%s, dayIndex=%s" % (dayRedPackIDList, dayIndex))
+        return
+    
+    for redPackID in dayRedPackIDList[dayIndex]:
+        GameWorld.Log("    重置节日红包发放状态: redPackID=%s" % redPackID)
+        if PlayerDBGSEvent.GetDBGSTrig_ByKey(DBKey_RedPacketSend % redPackID):
+            PlayerDBGSEvent.SetDBGSTrig_ByKey(DBKey_RedPacketSend % redPackID, 0)
+            
     return
 
 def __GetTodayRedPacketByTimeList():
@@ -221,12 +225,9 @@
     jobRank = 0
     playerName = ""
     playerID = 0
-    familyID = 0
     family = None
     
-    redPacketRecData = __SaveNewRedRecord(familyID, playerID, playerName, job, jobRank, getType, moneyType, outputNum, packetCnt, state, sysCreateTime=sysCreateTime)
-    #通知
-    __NotifyFamilyRedPacketInfo(family, redPacketRecData, [])
+    __SaveNewRedRecord(family, playerID, playerName, job, jobRank, getType, moneyType, outputNum, packetCnt, state, sysCreateTime=sysCreateTime)
     return
 
 ## 生成新红包
@@ -254,22 +255,7 @@
     job = curPlayer.GetJob()
     jobRank = PlayerControl.GetJobRank(curPlayer)
     playerName = curPlayer.GetName()
-    redPacketRecData = __SaveNewRedRecord(familyID, playerID, playerName, job, jobRank, getType, moneyType, outputNum, packetCnt, state, wishStr)
-    #通知
-    if redPacketRecData:
-        __NotifyFamilyRedPacketInfo(family, redPacketRecData, [])
-        if not familyID:
-            if not PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OSRedPacket):
-                PlayerControl.WorldNotify(0, 'OpenRedBag2', [playerName, data, outputNum])
-                PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OSRedPacket, 1)
-            elif data in IpyGameDataPY.GetFuncEvalCfg('OSRSuccess'):
-                PlayerControl.WorldNotify(0, 'OpenRedBag3', [playerName, data, outputNum])
-            #大于200额度的红包
-            getTypeRainDict = IpyGameDataPY.GetFuncEvalCfg('OpenServerRedPacketRain', 2, {})
-            if str(getType) in getTypeRainDict:
-                PlayerControl.WorldNotify(0, getTypeRainDict[str(getType)])  
-            elif outputNum >= IpyGameDataPY.GetFuncCfg('OpenServerRedPacketRain'):
-                PlayerControl.WorldNotify(0, 'OSRedpackSfx', [getType])
+    __SaveNewRedRecord(family, playerID, playerName, job, jobRank, getType, moneyType, outputNum, packetCnt, state, wishStr, data=data)
     return
 
 def CreatNewFamilyRedPacket(family, playerID, redPackID):
@@ -293,13 +279,11 @@
     jobRank = 0
     playerName = member.GetName()
     
-    redPacketRecData = __SaveNewRedRecord(familyID, playerID, playerName, job, jobRank, getType, moneyType, outputNum, 0)
-    #通知
-    __NotifyFamilyRedPacketInfo(family, redPacketRecData, [])
+    __SaveNewRedRecord(family, playerID, playerName, job, jobRank, getType, moneyType, outputNum, 0)
     return
 
 ## 记录新红包数据
-def __SaveNewRedRecord(familyID, ownerid, playerName, job, jobRank, getType, moneyType, outputNum, packetCnt,state=State_NoSend, wishStr='', sysCreateTime=None):
+def __SaveNewRedRecord(family, ownerid, playerName, job, jobRank, getType, moneyType, outputNum, packetCnt,state=State_NoSend, wishStr='', sysCreateTime=None, data=0):
     global g_allRecordDict
     global g_redPackCountDict
     job = job + jobRank * 10   #个位是job 十位百位是jobrank
@@ -314,6 +298,7 @@
             GameWorld.DebugLog("当前红包数: g_redPackCountDict=%s" % g_redPackCountDict)
             break
         
+    familyID = family.GetID() if family else 0
     recData = recordList.AddRec()
     
     
@@ -337,6 +322,24 @@
     recData.SetStrValue3(wishStr)#祝福语
     g_allRecordDict[redPacketID] = recData
     GameWorld.Log("生成新的红包: familyID=%s,redPacketID=%s,ownerid=%s,ownername=%s,getType=%s,moneyType=%s,outputNum=%s,packetCnt=%s" % (familyID, redPacketID, ownerid, playerName, getType, moneyType, outputNum, packetCnt))
+    
+    #通知
+    __NotifyFamilyRedPacketInfo(family, recData, [])
+    if getType == ShareDefine.RedPackType_OpenServer:
+        if not PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OSRedPacket):
+            PlayerControl.WorldNotify(0, 'OpenRedBag2', [playerName, data, outputNum])
+            PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OSRedPacket, 1)
+        elif data in IpyGameDataPY.GetFuncEvalCfg('OSRSuccess'):
+            PlayerControl.WorldNotify(0, 'OpenRedBag3', [playerName, data, outputNum])
+            
+    if not familyID:
+        #大于200额度的红包
+        getTypeRainDict = IpyGameDataPY.GetFuncEvalCfg('OpenServerRedPacketRain', 2, {})
+        if str(getType) in getTypeRainDict:
+            PlayerControl.WorldNotify(0, getTypeRainDict[str(getType)])  
+        elif outputNum >= IpyGameDataPY.GetFuncCfg('OpenServerRedPacketRain'):
+            PlayerControl.WorldNotify(0, 'OSRedpackSfx', [getType])   
+            
     return recData
 
 

--
Gitblit v1.8.0