From e268dd1de7fdda3ccbe24880ebd6d60be2debb47 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 12 七月 2024 19:03:00 +0800
Subject: [PATCH] 10202 【越南】【香港】【主干】【砍树】聚魂(增加聚魂战令6; 增加战令GM命令: Zhanling)

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py |   47 +++++++++++++++++++++++++----------------------
 1 files changed, 25 insertions(+), 22 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
index 333f44b..d2dca9f 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
@@ -422,6 +422,8 @@
             playerCanGetIDList = []
             for redPacketID in nowActiveRedPacketIDList:
                 redPacketObj = redPacketMgr.GetRedPacketObj(redPacketID, False)
+                if not redPacketObj:
+                    continue
                 if playerID in redPacketObj.grabDict:
                     continue
                 playerCanGetIDList.append(redPacketID)
@@ -446,6 +448,14 @@
     PlayerDBGSEvent.SetDBGSTrig_ByKey(DBKey_RedPacketSystemDayCount, 0) # 重置每日全服系统红包发放个数
     RandTodayServerSystemRedPacketSendTime()
     return
+
+def GetRedPackGetWayType(getWay):
+    ## 获取红包getWay所属红包分类
+    getWayTypeDict = IpyGameDataPY.GetFuncEvalCfg("RedPacketClassify", 1, {})
+    for getWayType, getWayList in getWayTypeDict.items():
+        if getWay in getWayList:
+            return getWayType
+    return ShareDefine.RedPackWayType_Family
 
 def CheckDelRedpacketData():
     ## 检查红包删除红包,5分钟一次: 1-删除过期红包,2-删除已全部抢完的红包
@@ -711,6 +721,8 @@
     for i in xrange(checkIndex + 1, len(nowActiveRedPacketIDList)):
         newCanGetRedID = nowActiveRedPacketIDList[i]
         newRedPacketObj = redPacketMgr.GetRedPacketObj(newCanGetRedID, False)
+        if not newRedPacketObj:
+            continue
         if playerID in newRedPacketObj.grabDict:
             continue
         if newCanGetRedID not in canGetIDList:
@@ -827,10 +839,10 @@
     if not ipyData:
         return
     
-    openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + 1
+    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
     feastPack = ChPyNetSendPack.tagGCFeastRedPacketInfo()
-    feastPack.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
-    feastPack.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
+    feastPack.StartDate = startDateStr
+    feastPack.EndtDate = endDateStr
     feastPack.LimitLV = ipyData.GetLVLimit()
     feastPack.ResetType = ipyData.GetResetType()
     feastPack.RedPacketDayList = []
@@ -861,7 +873,7 @@
     sendTimeList = []
     sysRedPackketSendCountToday = PlayerDBGSEvent.GetDBGSTrig_ByKey(DBKey_RedPacketSystemDayCount) 
     maxCount = IpyGameDataPY.GetFuncCfg("ServerSysRedPacket", 1)
-    if maxCount:
+    if not maxCount:
         return
     needSendCount = max(0, maxCount - sysRedPackketSendCountToday)
     
@@ -957,7 +969,8 @@
         PlayerDBGSEvent.SetDBGSTrig_ByKey(DBKey_RedPacketSend % redPackID, 1)
         GameWorld.DebugLog("定时发放的红包,设置已发放! redPackID=%s" % redPackID)
         
-    if getType == ShareDefine.RedPackType_Server:
+    getWayType = GetRedPackGetWayType(getType)
+    if getWayType == ShareDefine.RedPackWayType_Server:
         isAnonymous = 1
         
     job = 0
@@ -983,11 +996,7 @@
         family = GameWorld.GetFamilyManager().FindFamily(familyID)
         if not family:
             return
-        packetCnt = min(packetCnt, family.GetCount())
-#    if getType != 0:
-#        commonCntLimit = IpyGameDataPY.GetFuncCfg('FamilyRedPacketCnt')
-#        packetCnt = max(packetCnt, commonCntLimit)
-    
+        
     if outputNum < packetCnt:
         GameWorld.DebugLog("    生成新仙盟红包 红包额度不能低该红包个数!outputNum=%s,redCnt=%s" % (outputNum, packetCnt))
         return
@@ -1059,21 +1068,14 @@
     
     #通知
     OnChangeRedPacketState(family, redPacketObj, None)
-    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') \
-            and getType not in [ShareDefine.RedPackType_Server]:
-            PlayerControl.WorldNotify(0, 'OSRedpackSfx', [getType])   
+        elif outputNum >= IpyGameDataPY.GetFuncCfg('OpenServerRedPacketRain'):
+            PlayerControl.WorldNotify(0, 'OSRedpackSfx', [getType])
             
     return redPacketObj
 
@@ -1183,9 +1185,10 @@
         GameWorld.ErrLog("领取的红包类型不一致,无法领取! reqGetWay=%s,getWay=%s" % (reqGetWay, getWay))
         return
     
-    if getWay in [ShareDefine.RedPackType_OpenServer, ShareDefine.RedPackType_Server]:
+    getWayType = GetRedPackGetWayType(getWay)
+    if getWayType == ShareDefine.RedPackWayType_Server:
         getNumformula = IpyGameDataPY.GetFuncCompileCfg('OpenRedRacketOutNum')
-    elif getWay in ShareDefine.FeastRedPackType:
+    elif getWayType == ShareDefine.RedPackWayType_Feast:
         getNumformula = IpyGameDataPY.GetFuncCompileCfg('FeastRedPacket', 2)
     else:
         getNumformula = IpyGameDataPY.GetFuncCompileCfg('FamilyRedRacketOutNum')

--
Gitblit v1.8.0