6087 【后端】【1.5.200】春节红包雨活动(广播红包雨;新增红包GM命令 SetRedPacket)
| | |
| | | import PlayerFamilyRedPacket
|
| | | import ShareDefine
|
| | | import GameWorld
|
| | | import IpyGameDataPY
|
| | | import PlayerDBGSEvent
|
| | |
|
| | |
|
| | | ## GM命令执行入口
|
| | |
| | | if not paramList:
|
| | | return
|
| | |
|
| | | # GameWorld.DebugAnswer(curPlayer, "重置所有红包领取:SetRedPacket 0")
|
| | | # GameWorld.DebugAnswer(curPlayer, "清除所有类型红包:SetRedPacket 0 0")
|
| | | # GameWorld.DebugAnswer(curPlayer, "清除指定类型红包:SetRedPacket 0 类型A 类型B ...")
|
| | | |
| | | paramA = paramList[0]
|
| | | paramB = paramList[1] if len(paramList) > 1 else None
|
| | | # 重置所有红包数据
|
| | | if len(paramList) == 1 and paramList[0] == 0:
|
| | | GameWorld.DebugAnswer(curPlayer, "清除所有红包领取记录")
|
| | | if paramA == 0:
|
| | | PlayerFamilyRedPacket.g_allRecordDict = {}
|
| | | PlayerFamilyRedPacket.g_grabDataDict = {}
|
| | | PlayerFamilyRedPacket.g_redPackCountDict = {}
|
| | |
|
| | | recordType = ShareDefine.Def_UniversalGameRecType_FamilyRedPacketGrabRecord
|
| | | universalRecMgr = GameWorld.GetUniversalRecMgr()
|
| | | universalRecMgr.Delete(recordType)
|
| | | # 清除所有类型红包
|
| | | if paramB == 0:
|
| | | universalRecMgr.Delete(ShareDefine.Def_UniversalGameRecType_FamilyRedPacketAllRecord)
|
| | | __ResetSendState([])
|
| | | GameWorld.DebugAnswer(curPlayer, "清除所有类型红包OK!")
|
| | | |
| | | # 清除指定类型红包
|
| | | elif paramB:
|
| | | delTypeList = paramList[1:]
|
| | | allRecordList = universalRecMgr.GetTypeList(ShareDefine.Def_UniversalGameRecType_FamilyRedPacketAllRecord)
|
| | | delCount = 0
|
| | | for index in xrange(allRecordList.Count()):
|
| | | universalRecData = allRecordList.At(index - delCount)
|
| | | strValue1 = universalRecData.GetStrValue1()
|
| | | strValue1List = strValue1.split('|')
|
| | | getWay = int(strValue1List[3])
|
| | | if getWay not in delTypeList:
|
| | | continue
|
| | | allRecordList.Delete(index)
|
| | | delCount += 1
|
| | | __ResetSendState(delTypeList)
|
| | | GameWorld.DebugAnswer(curPlayer, "清除指定类型红包OK!%s,条数:%s" % (delTypeList, delCount))
|
| | | |
| | | # 清除抢的记录
|
| | | universalRecMgr.Delete(ShareDefine.Def_UniversalGameRecType_FamilyRedPacketGrabRecord)
|
| | | PlayerFamilyRedPacket.NotifyRedPacketInfo(curPlayer)
|
| | | GameWorld.DebugAnswer(curPlayer, "清除所有红包领取记录OK!")
|
| | | return
|
| | |
|
| | |
|
| | | return
|
| | |
|
| | | def __ResetSendState(delTypeList):
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in xrange(ipyDataMgr.GetFamilyRedPackCount()):
|
| | | ipyData = ipyDataMgr.GetFamilyRedPackByIndex(index)
|
| | | if delTypeList and ipyData.GetGetType() not in delTypeList:
|
| | | continue
|
| | | redPackID = ipyData.GetID()
|
| | | if PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerFamilyRedPacket.DBKey_RedPacketSend % redPackID):
|
| | | PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerFamilyRedPacket.DBKey_RedPacketSend % redPackID, 0)
|
| | | return
|
| | |
|
| | |
|
| | |
|
| | |
| | | PlayerNewFairyCeremony.ResetNewFairyCeremony()
|
| | | elif actName == ShareDefine.OperationActionName_FeastRedPacket:
|
| | | #重置节日红包
|
| | | if ipyData and dayIndex == 0:
|
| | | PlayerFamilyRedPacket.OnResetFeastRedPacket(ipyData)
|
| | | if ipyData:
|
| | | PlayerFamilyRedPacket.OnResetFeastRedPacket(ipyData, dayIndex)
|
| | | elif actName == ShareDefine.OperationActionName_FlashSale:
|
| | | #限时抢购重置购买次数 本次活动每场不能重复
|
| | | #dayIndex = sendMapServerMsgDict.get(ShareDefine.ActKey_DayIndex, 0)
|
| | |
| | |
|
| | | ##---------------------------------------- 节日红包 -----------------------------------------------
|
| | |
|
| | | def OnResetFeastRedPacket(ipyData):
|
| | | def OnResetFeastRedPacket(ipyData, dayIndex):
|
| | | ## 重置节日红包状态
|
| | |
|
| | | if not ipyData:
|
| | | return
|
| | |
|
| | | dayRedPackIDList = ipyData.GetRedPacketIDList()
|
| | | GameWorld.DebugLog("重置红包发放状态: dayRedPackIDList=%s" % dayRedPackIDList)
|
| | | for redPackIDList in dayRedPackIDList:
|
| | | for redPackID in redPackIDList:
|
| | | GameWorld.Log("重置节日红包发放状态: dayRedPackIDList=%s, dayIndex=%s" % (dayRedPackIDList, dayIndex))
|
| | | if dayIndex < 0 or dayIndex >= len(dayRedPackIDList):
|
| | | GameWorld.ErrLog("当前节日天索引没有配配置系统红包ID! dayRedPackIDList=%s, dayIndex=%s" % (dayRedPackIDList, dayIndex))
|
| | | return
|
| | | |
| | | for redPackID in dayRedPackIDList[dayIndex]:
|
| | | GameWorld.Log(" 重置节日红包发放状态: redPackID=%s" % redPackID)
|
| | | if PlayerDBGSEvent.GetDBGSTrig_ByKey(DBKey_RedPacketSend % redPackID):
|
| | | PlayerDBGSEvent.SetDBGSTrig_ByKey(DBKey_RedPacketSend % redPackID, 0)
|
| | |
|
| | |
| | | jobRank = 0
|
| | | playerName = ""
|
| | | playerID = 0
|
| | | familyID = 0
|
| | | family = None
|
| | |
|
| | | redPacketRecData = __SaveNewRedRecord(familyID, playerID, playerName, job, jobRank, getType, moneyType, outputNum, packetCnt, state, sysCreateTime=sysCreateTime)
|
| | | #֪ͨ
|
| | | __NotifyFamilyRedPacketInfo(family, redPacketRecData, [])
|
| | | __SaveNewRedRecord(family, playerID, playerName, job, jobRank, getType, moneyType, outputNum, packetCnt, state, sysCreateTime=sysCreateTime)
|
| | | return
|
| | |
|
| | | ## 生成新红包
|
| | |
| | | job = curPlayer.GetJob()
|
| | | jobRank = PlayerControl.GetJobRank(curPlayer)
|
| | | playerName = curPlayer.GetName()
|
| | | redPacketRecData = __SaveNewRedRecord(familyID, playerID, playerName, job, jobRank, getType, moneyType, outputNum, packetCnt, state, wishStr)
|
| | | #֪ͨ
|
| | | if redPacketRecData:
|
| | | __NotifyFamilyRedPacketInfo(family, redPacketRecData, [])
|
| | | if not familyID:
|
| | | 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])
|
| | | #大于200额度的红包
|
| | | getTypeRainDict = IpyGameDataPY.GetFuncEvalCfg('OpenServerRedPacketRain', 2, {})
|
| | | if str(getType) in getTypeRainDict:
|
| | | PlayerControl.WorldNotify(0, getTypeRainDict[str(getType)]) |
| | | elif outputNum >= IpyGameDataPY.GetFuncCfg('OpenServerRedPacketRain'):
|
| | | PlayerControl.WorldNotify(0, 'OSRedpackSfx', [getType])
|
| | | __SaveNewRedRecord(family, playerID, playerName, job, jobRank, getType, moneyType, outputNum, packetCnt, state, wishStr, data=data)
|
| | | return
|
| | |
|
| | | def CreatNewFamilyRedPacket(family, playerID, redPackID):
|
| | |
| | | jobRank = 0
|
| | | playerName = member.GetName()
|
| | |
|
| | | redPacketRecData = __SaveNewRedRecord(familyID, playerID, playerName, job, jobRank, getType, moneyType, outputNum, 0)
|
| | | #֪ͨ
|
| | | __NotifyFamilyRedPacketInfo(family, redPacketRecData, [])
|
| | | __SaveNewRedRecord(family, playerID, playerName, job, jobRank, getType, moneyType, outputNum, 0)
|
| | | return
|
| | |
|
| | | ## 记录新红包数据
|
| | | def __SaveNewRedRecord(familyID, ownerid, playerName, job, jobRank, getType, moneyType, outputNum, packetCnt,state=State_NoSend, wishStr='', sysCreateTime=None):
|
| | | def __SaveNewRedRecord(family, ownerid, playerName, job, jobRank, getType, moneyType, outputNum, packetCnt,state=State_NoSend, wishStr='', sysCreateTime=None, data=0):
|
| | | global g_allRecordDict
|
| | | global g_redPackCountDict
|
| | | job = job + jobRank * 10 #个位是job 十位百位是jobrank
|
| | |
| | | GameWorld.DebugLog("当前红包数: g_redPackCountDict=%s" % g_redPackCountDict)
|
| | | break
|
| | |
|
| | | familyID = family.GetID() if family else 0
|
| | | recData = recordList.AddRec()
|
| | |
|
| | |
|
| | |
| | | recData.SetStrValue3(wishStr)#祝福语
|
| | | g_allRecordDict[redPacketID] = recData
|
| | | GameWorld.Log("生成新的红包: familyID=%s,redPacketID=%s,ownerid=%s,ownername=%s,getType=%s,moneyType=%s,outputNum=%s,packetCnt=%s" % (familyID, redPacketID, ownerid, playerName, getType, moneyType, outputNum, packetCnt))
|
| | | |
| | | #֪ͨ
|
| | | __NotifyFamilyRedPacketInfo(family, recData, [])
|
| | | 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'):
|
| | | PlayerControl.WorldNotify(0, 'OSRedpackSfx', [getType]) |
| | | |
| | | return recData
|
| | |
|
| | |
|
| | |
| | | FeastRedPackType = [RedPackType_FeastSysBig, RedPackType_FeastSysSmall, RedPackType_FeastSucc]
|
| | | # 需要限制服务器最大红包数的红包类型 {统计个数编号:[红包类型, ...], ...}
|
| | | RedPackMaxCountDict = {1:[RedPackType_OpenServer],
|
| | | 2:[RedPackType_FeastSysBig, RedPackType_FeastSysSmall],
|
| | | 2:[RedPackType_FeastSucc],
|
| | | }
|
| | |
|
| | |
| | | import PlayerControl
|
| | | import ChConfig
|
| | | import PlayerFamilyRedPacket
|
| | | import PlayerFeastRedPacket
|
| | | import IpyGameDataPY
|
| | | import PlayerSuccess
|
| | |
|
| | |
| | | # @remarks 函数详细说明.
|
| | | def OnExec(curPlayer, paramList):
|
| | | if not paramList:
|
| | | GameWorld.DebugAnswer(curPlayer, "重置红包:SetRedPacket 0")
|
| | | GameWorld.DebugAnswer(curPlayer, "SetRedPacket 红包功能 可抢个数 已抢额度")
|
| | | GameWorld.DebugAnswer(curPlayer, "重置所有红包领取:SetRedPacket 0")
|
| | | GameWorld.DebugAnswer(curPlayer, "清除所有类型红包:SetRedPacket 0 0")
|
| | | GameWorld.DebugAnswer(curPlayer, "清除指定类型红包:SetRedPacket 0 类型A 类型B ...")
|
| | | GameWorld.DebugAnswer(curPlayer, "设置功能红包数据:SetRedPacket 红包功能 可抢个数 已抢额度")
|
| | | GameWorld.DebugAnswer(curPlayer, "红包功能: 1-开服红包;2-节日红包")
|
| | | return
|
| | |
|
| | | paramA = paramList[0]
|
| | | # 重置所有红包数据
|
| | | if len(paramList) == 1 and paramList[0] == 0:
|
| | | if paramA == 0:
|
| | | __DOResetSuccRedPack(curPlayer)
|
| | | __DoResetRedPackFunc(curPlayer, 1, None, 0)
|
| | | __DoResetRedPackFunc(curPlayer, 2, None, 0)
|
| | | curPlayer.GameServer_GMCmd("SetRedPacket 0") # 发送到GameServer清除红包
|
| | | paramStr = ""
|
| | | for param in paramList:
|
| | | paramStr += " %s" % param
|
| | | curPlayer.GameServer_GMCmd("SetRedPacket%s" % paramStr) # 发送到GameServer清除红包
|
| | | return
|
| | |
|
| | | if len(paramList) == 3:
|
| | |
| | | elif redPackFuncType == 2:
|
| | | if not isinstance(grabCount, int):
|
| | | grabCount = IpyGameDataPY.GetFuncCfg('FeastRedPacket', 1)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketCanGrabCnt, grabCount)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketGrabMoney, grabMoney)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastRedPacketCanGrabCnt, grabCount)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastRedPacketGrabMoney, grabMoney)
|
| | | PlayerFeastRedPacket.Sync_FeastRedPackInfo(curPlayer)
|
| | | return
|
| | |
|
| | |
|
| | |
| | | #成就
|
| | | PlayerSuccess.FinishDelayAddSuccessProgress(curPlayer, tick, False)
|
| | | #开服红包处理
|
| | | PlayerFamilyRedPacket.ProcessOSRedPacket(curPlayer, tick)
|
| | | #PlayerFamilyRedPacket.ProcessOSRedPacket(curPlayer, tick)
|
| | | #限时抢购
|
| | | PlayerFlashSale.ProcessFlashSaleMail(curPlayer, tick)
|
| | | #地图经验
|
| | |
| | | FeastRedPackType = [RedPackType_FeastSysBig, RedPackType_FeastSysSmall, RedPackType_FeastSucc]
|
| | | # 需要限制服务器最大红包数的红包类型 {统计个数编号:[红包类型, ...], ...}
|
| | | RedPackMaxCountDict = {1:[RedPackType_OpenServer],
|
| | | 2:[RedPackType_FeastSysBig, RedPackType_FeastSysSmall],
|
| | | 2:[RedPackType_FeastSucc],
|
| | | }
|
| | |
|