| | |
| | | import ChPyNetSendPack
|
| | | import PlayerCompensation
|
| | | import PlayerDBGSEvent
|
| | | import PlayerViewCache
|
| | | import PlayerControl
|
| | | import PlayerFamily
|
| | | import PyGameData
|
| | |
| | | #value4 moneyType
|
| | | #value5 getMoney
|
| | | #strValue1 名字
|
| | | #strValue2 face|facePic
|
| | |
|
| | | recData.SetValue1(grabObj.redPacketID)
|
| | | recData.SetValue2(grabObj.playerID)
|
| | |
| | | recData.SetValue4(grabObj.moneyType)
|
| | | recData.SetValue5(grabObj.getMoney)
|
| | | recData.SetStrValue1(grabObj.playerName)
|
| | | recData.SetStrValue2('%s|%s' % (grabObj.face, grabObj.facePic))
|
| | | return
|
| | |
|
| | | class RedPacketGrab():
|
| | |
| | | self.playerName = ""
|
| | | self.moneyType = 0
|
| | | self.getMoney = 0
|
| | | self.face = 0
|
| | | self.facePic = 0
|
| | | return
|
| | |
|
| | | class RedPacketData():
|
| | |
| | | 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
|
| | |
|
| | |
| | | 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:
|
| | |
| | | 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')
|
| | |
| | | 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
|
| | |
| | | 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)
|
| | |
| | | if isAll and state in [State_HasGot, State_HasAllGot]:
|
| | | #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
|
| | |
| | | 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
|