| | |
| | | playerCanGetIDList = []
|
| | | for redPacketID in nowActiveRedPacketIDList:
|
| | | redPacketObj = redPacketMgr.GetRedPacketObj(redPacketID, False)
|
| | | if not redPacketObj:
|
| | | continue
|
| | | if playerID in redPacketObj.grabDict:
|
| | | continue
|
| | | playerCanGetIDList.append(redPacketID)
|
| | |
| | | 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-删除已全部抢完的红包
|
| | |
| | | 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 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 = []
|
| | |
| | | sendTimeList = []
|
| | | sysRedPackketSendCountToday = PlayerDBGSEvent.GetDBGSTrig_ByKey(DBKey_RedPacketSystemDayCount)
|
| | | maxCount = IpyGameDataPY.GetFuncCfg("ServerSysRedPacket", 1)
|
| | | if maxCount:
|
| | | if not maxCount:
|
| | | return
|
| | | needSendCount = max(0, maxCount - sysRedPackketSendCountToday)
|
| | |
|
| | |
| | | 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
|
| | |
| | | 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
|
| | |
| | |
|
| | | #֪ͨ
|
| | | 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
|
| | |
|
| | |
| | | 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')
|