From ff8efc0ccf9fa6d66d873673afd07d2adfd87252 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 18 十二月 2024 15:43:33 +0800
Subject: [PATCH] 10297 【越南】【英语】【砍树】【tqxbqy】轮回殿-服务端(增加GM命令: Lunhui)

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py |  192 ++++++++++++++++++++++++++++++-----------------
 1 files changed, 122 insertions(+), 70 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
index ad6da7b..531c787 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
@@ -24,6 +24,7 @@
 import ChPyNetSendPack
 import PlayerCompensation
 import PlayerDBGSEvent
+import PlayerViewCache
 import PlayerControl
 import PlayerFamily
 import PyGameData
@@ -39,10 +40,6 @@
 State_HasGot, #已领取
 State_HasAllGot, #全部领完
 ) = range(4)
-
-g_allRecordDict = {} #{红包ID:recData, ...}
-g_grabDataDict = {} #{红包ID:{playerid:[抢到的钱,名字,job]}, ...}
-g_redPackCountDict = {} #有限制最大红包个数的类型对应当前红包数 {类型组对应记录编号:当前个数, ...}
 
 DBKey_RedPacketSend = "RedPacketSend_%s" # 系统定时红包是否已发放, 参数红包ID
 DBKey_RedPacketSystemDayCount = "RedPacketSystemDayCount" # 全服系统红包已发放个数
@@ -82,6 +79,7 @@
     #value4    moneyType
     #value5    getMoney
     #strValue1 名字
+    #strValue2 face|facePic
     
     recData.SetValue1(grabObj.redPacketID)
     recData.SetValue2(grabObj.playerID)
@@ -89,6 +87,7 @@
     recData.SetValue4(grabObj.moneyType)
     recData.SetValue5(grabObj.getMoney)
     recData.SetStrValue1(grabObj.playerName)
+    recData.SetStrValue2('%s|%s' % (grabObj.face, grabObj.facePic))
     return
 
 class RedPacketGrab():
@@ -101,6 +100,8 @@
         self.playerName = ""
         self.moneyType = 0
         self.getMoney = 0
+        self.face = 0
+        self.facePic = 0
         return
 
 class RedPacketData():
@@ -157,17 +158,6 @@
         
         # 其他全服红包,一般量比较少的,相对固定的,全部同步,如节日定时发送的红包
         self.notifyAllServerRedPacketIDList = [] # 其他没有限制下发同步个数的全服红包ID [红包ID, ...]
-        return
-    
-    def PrintData(self, sign=""):
-        if sign:
-            GameWorld.DebugLog("    === %s ===" % sign)
-        GameWorld.DebugLog("    所有红包=%s" % self.allRedPacketDict.keys())
-        GameWorld.DebugLog("    仙盟红包=%s" % self.familyRedPacketDict)
-        GameWorld.DebugLog("    全服同步全部红包=%s" % self.notifyAllServerRedPacketIDList)
-        GameWorld.DebugLog("    全服同步活跃红包=%s" % self.activeRedPacketIDInfo)
-        GameWorld.DebugLog("    全服个人未开放红包=%s" % self.playerNosendRedPacketIDInfo)
-        GameWorld.DebugLog("    全服个人可领取红包=%s" % self.playerCanGetRedPacketIDInfo)
         return
     
     def GetRedPacketObj(self, redPacketID, createNew):
@@ -245,6 +235,8 @@
         
     def AddPlayerCanGetRedPacketID(self, playerID, getWay, redPacketID):
         ## 添加玩家可领取的红包ID缓存
+        if not playerID:
+            return
         if playerID not in self.playerCanGetRedPacketIDInfo:
             self.playerCanGetRedPacketIDInfo[playerID] = {}
         redPacketTypeIDInfo = self.playerCanGetRedPacketIDInfo[playerID]
@@ -253,6 +245,7 @@
         redPacketIDList = redPacketTypeIDInfo[getWay]
         if redPacketID not in redPacketIDList:
             redPacketIDList.append(redPacketID)
+            return redPacketIDList
         return
     
     def DelPlayerCanGetRedPacketID(self, playerID, getWay, redPacketID):
@@ -268,6 +261,24 @@
         redPacketIDList.remove(redPacketID)
         # 返回当前类型可用红包ID列表
         return redPacketIDList
+    
+def PrintRedPacketData(sign=""):
+    redPacketMgr = GetRedpacketMgr()
+    if sign:
+        GameWorld.DebugLog("    === %s ===" % sign)
+    GameWorld.DebugLog("    所有红包:count=%s,=%s" % (len(redPacketMgr.allRedPacketDict), redPacketMgr.allRedPacketDict.keys()))
+    for familyID, redIDList in redPacketMgr.familyRedPacketDict.items():
+        GameWorld.DebugLog("    仙盟红包:familyID=%s,count=%s,%s" % (familyID, len(redIDList), redIDList))
+    GameWorld.DebugLog("    全服全部下发红包=%s" % redPacketMgr.notifyAllServerRedPacketIDList)
+    for getWay, redIDList in redPacketMgr.activeRedPacketIDInfo.items():
+        GameWorld.DebugLog("    全服公共活跃红包:getWay=%s,count=%s,%s" % (getWay, len(redIDList), redIDList))
+    for playerID, redIDInfo in redPacketMgr.playerNosendRedPacketIDInfo.items():
+        for getWay, redIDList in redIDInfo.items():
+            GameWorld.DebugLog("    全服个人未开放红包:playerID=%s,getWay=%s,count=%s,%s" % (playerID, getWay, len(redIDList), redIDList))
+    for playerID, redIDInfo in redPacketMgr.playerCanGetRedPacketIDInfo.items():
+        for getWay, redIDList in redIDInfo.items():
+            GameWorld.DebugLog("    全服个人可领取红包:playerID=%s,getWay=%s,count=%s,%s" % (playerID, getWay, len(redIDList), redIDList))
+    return
     
 def GetRedpacketMgr():
     redPacketMgr = PyGameData.g_redPacketMgr
@@ -350,15 +361,19 @@
         if not redPacketObj:
             continue
         
+        strValue2List = recData.GetStrValue2().split('|')
+        
         grabObj = RedPacketGrab(redPacketID, playerID)
         grabObj.playerJob = recData.GetValue3()
         grabObj.playerName = recData.GetStrValue1()
         grabObj.moneyType = recData.GetValue4()
         grabObj.getMoney = recData.GetValue5()
+        grabObj.face = GameWorld.ToIntDef(strValue2List[0]) if len(strValue2List) > 0 else 0
+        grabObj.facePic = GameWorld.ToIntDef(strValue2List[1]) if len(strValue2List) > 1 else 0
         
         redPacketObj.grabDict[playerID] = grabObj
         
-    redPacketMgr.PrintData("OnServerStart")
+    #PrintRedPacketData("OnServerStart")
     return
 
 def OnServerClose():
@@ -398,7 +413,6 @@
         redPacketMgr = GetRedpacketMgr()
         playerID = curPlayer.GetPlayerID()
         redPacketMgr.playerCanGetRedPacketIDInfo[playerID] = {}
-        redPacketMgr.PrintData("OnPlayerLogin %s" % playerID)
         
         notifyLimitTypeList = IpyGameDataPY.GetFuncEvalCfg("RedPacketSys", 1)
         maxNotifyCount = IpyGameDataPY.GetFuncCfg("RedPacketSys", 2)
@@ -417,6 +431,8 @@
             playerCanGetIDList = []
             for redPacketID in nowActiveRedPacketIDList:
                 redPacketObj = redPacketMgr.GetRedPacketObj(redPacketID, False)
+                if not redPacketObj:
+                    continue
                 if playerID in redPacketObj.grabDict:
                     continue
                 playerCanGetIDList.append(redPacketID)
@@ -425,7 +441,7 @@
                     break
             redPacketMgr.playerCanGetRedPacketIDInfo[playerID][getWay] = playerCanGetIDList
             
-        redPacketMgr.PrintData("loginOK")
+        #PrintRedPacketData("OnPlayerLogin %s" % playerID)
         
     NotifyRedPacketInfo(curPlayer, isLogin=True)
     return
@@ -441,6 +457,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-删除已全部抢完的红包
@@ -527,7 +551,7 @@
     playerManager = GameWorld.GetPlayerManager()
     
     # 同步删除的仙盟红包
-    GameWorld.DebugLog("同步删除的仙盟红包: %s" % delFamilyRedPacketInfo)
+    #GameWorld.DebugLog("同步删除的仙盟红包: %s" % delFamilyRedPacketInfo)
     for familyID, delIDList in delFamilyRedPacketInfo.items():
         family = GameWorld.GetFamilyManager().FindFamily(familyID)
         if not family:
@@ -545,7 +569,7 @@
             NetPackCommon.SendFakePack(curPlayer, sendPack)
             
     # 同步删除个人未开放的全服红包
-    GameWorld.DebugLog("同步删除个人未开放的全服红包: %s" % delNosendRedPacketInfo)
+    #GameWorld.DebugLog("同步删除个人未开放的全服红包: %s" % delNosendRedPacketInfo)
     for playerID, nosendIDList in delNosendRedPacketInfo.items():
         curPlayer = playerManager.FindPlayerByID(playerID)
         if curPlayer == None or not curPlayer.GetInitOK() or PlayerControl.GetIsTJG(curPlayer):
@@ -556,7 +580,7 @@
         NetPackCommon.SendFakePack(curPlayer, sendPack)
         
     # 同步删除已开放的全服红包
-    GameWorld.DebugLog("同步删除已开放的全服红包: %s" % delRedPacketIDList)
+    #GameWorld.DebugLog("同步删除已开放的全服红包: %s" % delRedPacketIDList)
     if delRedPacketIDList:
         sendPack = ChPyNetSendPack.tagGCRedPacketDel()
         sendPack.Clear()
@@ -584,7 +608,6 @@
     
     GameWorld.DebugLog("红包状态变更处理: redPacketID=%s,ownerID=%s,familyID=%s,beforeState=%s,state=%s" 
                        % (redPacketID, ownerID, familyID, beforeState, state))
-    redPacketMgr.PrintData("a")
     
     notifyPlayerDict = {ownerID:[redPacketID]} # 通知给指定玩家的信息,每个玩家可能不一样
     
@@ -592,7 +615,11 @@
     if family:
         if state in [State_NoSend, State_NoGot]:
             redPacketMgr.AddFamilyRedPacketID(family.GetID(), redPacketID)
-            
+        elif state == State_HasAllGot:
+            redPacketMgr.DelFamilyRedPacketID(familyID, redPacketID)
+    
+    # 除仙盟红包外,以下是全服红包的相关处理
+    
     # 2. 全服未开放红包默认只发给个人
     elif state == State_NoSend:
         if not ownerID:
@@ -642,24 +669,14 @@
             nowActiveRedPacketIDList = redPacketMgr.activeRedPacketIDInfo.get(getWay, []) # 当前此类型还可用的公共已开放红包列表
             
             # 检查需要补充红包记录的玩家,采用 减去1  补充1 的模式
-            for playerID, typeRedIDDict in redPacketMgr.playerCanGetRedPacketIDInfo.items():
-                
-                canGetIDList = redPacketMgr.DelPlayerCanGetRedPacketID(playerID, getWay, redPacketID) # 移出私有已开放红包队列
-                if canGetIDList == None:
-                    continue
-                
-                lastCanGetID = 0 if not canGetIDList else canGetIDList[-1]
-                checkIndex = nowActiveRedPacketIDList.index(lastCanGetID) if lastCanGetID in nowActiveRedPacketIDList else 0
-                for i in xrange(checkIndex, len(nowActiveRedPacketIDList)):
-                    newCanGetRedID = nowActiveRedPacketIDList[i]
-                    if newCanGetRedID not in canGetIDList:
-                        if redPacketMgr.AddPlayerCanGetRedPacketID(playerID, getWay, newCanGetRedID): # 添加目标玩家私有已开放红包队列
-                            notifyPlayerDict[playerID] = [redPacketID, newCanGetRedID]                      
-                            break
+            for playerID in redPacketMgr.playerCanGetRedPacketIDInfo.keys():
+                notifyRedIDList = DoPlayerReductCanGetRedPacket(playerID, redPacketObj, nowActiveRedPacketIDList)
+                if notifyRedIDList:
+                    notifyPlayerDict[playerID] = notifyRedIDList
     else:
         return
     
-    redPacketMgr.PrintData("b")
+    #PrintRedPacketData("StateChange")
     
     syncRedPacketList = [redPacketID]
     playerManager = GameWorld.GetPlayerManager()
@@ -684,11 +701,43 @@
     # 通知指定玩家
     else:
         for playerID, syncRedPacketList in notifyPlayerDict.items():
+            if not playerID:
+                continue
             player = playerManager.FindPlayerByID(playerID)
             if player == None or not player.GetInitOK() or PlayerControl.GetIsTJG(player):
                 continue
             NotifyRedPacketInfo(player, syncRedPacketList)
     return
+
+def DoPlayerReductCanGetRedPacket(playerID, redPacketObj, nowActiveRedPacketIDList=None):
+    ## 玩家减少全服限制下发红包可领取个数处理
+    ## @return: 需要通知的红包ID列表
+    
+    getWay = redPacketObj.getWay
+    redPacketID = redPacketObj.redPacketID
+    
+    redPacketMgr = GetRedpacketMgr()
+    if nowActiveRedPacketIDList == None:
+        nowActiveRedPacketIDList = redPacketMgr.activeRedPacketIDInfo.get(getWay, []) # 当前此类型还可用的公共已开放红包列表
+    
+    # 检查需要补充红包记录的玩家,采用 减去1  补充1 的模式
+    canGetIDList = redPacketMgr.DelPlayerCanGetRedPacketID(playerID, getWay, redPacketID) # 移出私有已开放红包队列
+    if canGetIDList == None:
+        return
+    
+    lastCanGetID = 0 if not canGetIDList else canGetIDList[-1]
+    checkIndex = nowActiveRedPacketIDList.index(lastCanGetID) if lastCanGetID in nowActiveRedPacketIDList else 0
+    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:
+            if redPacketMgr.AddPlayerCanGetRedPacketID(playerID, getWay, newCanGetRedID): # 添加目标玩家私有已开放红包队列
+                return [redPacketID, newCanGetRedID]
+    return [redPacketID]
 
 def DelRedPackByFamilyID(delfamilyID):
     ## 删除仙盟的时候才需要删除红包,所以这里不做通知,重新加入仙盟时会重新同步一次 isAll 的情况
@@ -799,10 +848,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 = []
@@ -833,7 +882,7 @@
     sendTimeList = []
     sysRedPackketSendCountToday = PlayerDBGSEvent.GetDBGSTrig_ByKey(DBKey_RedPacketSystemDayCount) 
     maxCount = IpyGameDataPY.GetFuncCfg("ServerSysRedPacket", 1)
-    if maxCount:
+    if not maxCount:
         return
     needSendCount = max(0, maxCount - sysRedPackketSendCountToday)
     
@@ -929,7 +978,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
@@ -955,13 +1005,9 @@
         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))
+        GameWorld.DebugLog("    生成新仙盟红包 红包额度不能低该红包个数!outputNum=%s,redCnt=%s" % (outputNum, packetCnt))
         return
     job = curPlayer.GetJob()
     jobRank = 0
@@ -1031,26 +1077,19 @@
     
     #通知
     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
 
 def SendFamilyRedPacket(msgList):
-    '''发系统赠送的红包,该红包已存在,只是状态未发放,由归属玩家自由选择发放时机'''
+    '''开放红包可领取,该红包已存在,只是状态未发放,由归属玩家自由选择发放时机'''
     playerID, redPacketID, packetCnt, isAnonymous = msgList
     curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID)
     if not curPlayer:
@@ -1101,7 +1140,7 @@
     redPacketMgr = GetRedpacketMgr()
     redPacketObj = redPacketMgr.GetRedPacketObj(redPacketID, False)
     if not redPacketObj:
-        PlayerControl.NotifyCode(curPlayer, "该红包不存在!")
+        GameWorld.ErrLog("红包不存在!")
         return
     
     playerID = curPlayer.GetPlayerID()
@@ -1155,9 +1194,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')
@@ -1165,12 +1205,15 @@
     getMoney = eval(getNumformula) if remainPacketCnt > 1 else remainNum
     getMoney = min(getMoney, remainNum)
     remainNum -= getMoney
-    GameWorld.DebugLog("    该玩家抢到红包=%s!" % getMoney, playerID)
+    GameWorld.DebugLog("    该玩家抢到红包: redPacketID=%s,getWay=%s,getMoney=%s,remainNum=%s" 
+                       % (redPacketID, getWay, getMoney, remainNum), playerID)
     
     # 新增抢的记录
     grabObj = RedPacketGrab(redPacketID, playerID)
     grabObj.playerJob = curPlayer.GetJob()
     grabObj.playerName = curPlayer.GetName()
+    grabObj.face = curPlayer.GetFace()
+    grabObj.facePic = curPlayer.GetFacePic()
     grabObj.moneyType = moneyType
     grabObj.getMoney = getMoney
     grabRecordDict[playerID] = grabObj
@@ -1180,8 +1223,13 @@
         OnChangeRedPacketState(curFamily, redPacketObj, beforeState)
     else:
         if getWay in IpyGameDataPY.GetFuncEvalCfg("RedPacketSys", 1):
-            redPacketMgr.DelPlayerCanGetRedPacketID(playerID, getWay, redPacketID)
-        NotifyRedPacketInfo(curPlayer, [redPacketID])
+            #PrintRedPacketData("GrabBefore")
+            notifyRedIDList = DoPlayerReductCanGetRedPacket(playerID, redPacketObj)
+            if notifyRedIDList:
+                NotifyRedPacketInfo(curPlayer, notifyRedIDList)
+            #PrintRedPacketData("GrabAfter")
+        else:
+            NotifyRedPacketInfo(curPlayer, [redPacketID])
         
     __NotifyGrabRedPacketInfo(curPlayer, redPacketID, grabRecordDict)
     
@@ -1201,6 +1249,8 @@
         grabInfo.Name = grabObj.playerName
         grabInfo.NameLen = len(grabInfo.Name)
         grabInfo.PlayeJob = grabObj.playerJob
+        grabInfo.Face = grabObj.face
+        grabInfo.FacePic = grabObj.facePic
         grabInfo.MoneyNum = grabObj.getMoney
         sendPack.GrabInfo.append(grabInfo)
     sendPack.Count = len(sendPack.GrabInfo)
@@ -1239,7 +1289,7 @@
     redPacketInfo = []
     playerID = curPlayer.GetPlayerID()
     joinFamilyTime = PlayerFamily.GetPlayerJoinFamilyTime(curPlayer)
-    GameWorld.DebugLog("通知红包信息: isLogin=%s,isAll=%s,syncRedPacketIDList=%s" % (isLogin, isAll, syncRedPacketIDList), playerID)
+    #GameWorld.DebugLog("通知红包信息: isLogin=%s,isAll=%s,syncRedPacketIDList=%s" % (isLogin, isAll, syncRedPacketIDList), playerID)
     
     for redPacketID in syncRedPacketIDList:
         redPacketObj = redPacketMgr.GetRedPacketObj(redPacketID, False)
@@ -1249,16 +1299,16 @@
         #仙盟红包只通知玩家进入仙盟后生成的红包
         if redPacketObj.familyID:
             if joinFamilyTime and redPacketObj.calcTime < joinFamilyTime:
-                GameWorld.DebugLog("    加入仙盟之前的红包不发: redPacketID=%s,joinFamilyTime=%s > %s" % (redPacketID, joinFamilyTime, redPacketObj.calcTime))
+                #GameWorld.DebugLog("    加入仙盟之前的红包不发: redPacketID=%s,joinFamilyTime=%s > %s" % (redPacketID, joinFamilyTime, redPacketObj.calcTime))
                 continue
             
         state = redPacketObj.state
         if playerID in redPacketObj.grabDict:
             state = State_HasGot
         if isAll and state in [State_HasGot, State_HasAllGot]:
-            GameWorld.DebugLog("    已抢或抢完的不发: redPacketID=%s,state=%s" % (redPacketID, state))
+            #GameWorld.DebugLog("    已抢或抢完的不发: redPacketID=%s,state=%s" % (redPacketID, state))
             continue
-        
+        tagCacheDict = PlayerViewCache.GetCachePropDataDict(PlayerViewCache.FindViewCache(redPacketObj.playerID))
         packetInfo = ChPyNetSendPack.tagFRedPacketInfo()
         packetInfo.Clear()
         packetInfo.RedPacketID = redPacketObj.redPacketID
@@ -1267,6 +1317,8 @@
         packetInfo.NameLen = len(packetInfo.Name)
         packetInfo.Time = redPacketObj.createTime
         packetInfo.PlayeJob = redPacketObj.playerJob
+        packetInfo.Face = tagCacheDict.get("Face", 0)
+        packetInfo.FacePic = tagCacheDict.get("FacePic", 0)
         packetInfo.MoneyType = redPacketObj.moneyType
         packetInfo.MoneyNum = redPacketObj.moneyValue
         packetInfo.GetWay = redPacketObj.getWay

--
Gitblit v1.8.0