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')