| | |
| | | #"""Version = 2019-01-29 16:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import PlayerFamilyRedPacket
|
| | | import ShareDefine
|
| | | import GameWorld
|
| | | import IpyGameDataPY
|
| | | import PlayerDBGSEvent
|
| | | import PlayerFamilyRedPacket
|
| | | import ChPyNetSendPack
|
| | | import NetPackCommon
|
| | | import ShareDefine
|
| | |
|
| | |
|
| | | ## GM命令执行入口
|
| | |
| | | # @return None or True
|
| | | # @remarks 函数详细说明.
|
| | | def OnExec(curPlayer, paramList):
|
| | | GameWorld.DebugLog("执行GameServer->SetRedPacket: %s" % paramList)
|
| | | if not paramList:
|
| | | # GameWorld.DebugAnswer(curPlayer, "---------------------------")
|
| | | # GameWorld.DebugAnswer(curPlayer, "清所有红包:SetRedPacket 0")
|
| | | # GameWorld.DebugAnswer(curPlayer, "清指定红包:SetRedPacket 0 类型A 类型B ...")
|
| | | # GameWorld.DebugAnswer(curPlayer, "发指定红包:SetRedPacket 1 红包编号 个数")
|
| | | # GameWorld.DebugAnswer(curPlayer, "设置抢红包:SetRedPacket 2 红包功能 可抢数 已抢额度")
|
| | | # GameWorld.DebugAnswer(curPlayer, "红包功能:1-开服红包;2-节日红包")
|
| | | 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 paramA == 0:
|
| | | PlayerFamilyRedPacket.g_allRecordDict = {}
|
| | | PlayerFamilyRedPacket.g_grabDataDict = {}
|
| | | PlayerFamilyRedPacket.g_redPackCountDict = {}
|
| | | delRedIDList = []
|
| | | delTypeList = paramList[1:]
|
| | | redpacketMgr = PlayerFamilyRedPacket.GetRedpacketMgr()
|
| | | for redPacketID, redPacketObj in redpacketMgr.allRedPacketDict.items():
|
| | | getWay = redPacketObj.getWay
|
| | | if delTypeList and getWay not in delTypeList:
|
| | | continue
|
| | | delRedIDList.append(redPacketID)
|
| | | redpacketMgr.allRedPacketDict.pop(redPacketID)
|
| | | familyID = redPacketObj.familyID
|
| | | if familyID in redpacketMgr.familyRedPacketDict:
|
| | | redpacketMgr.DelFamilyRedPacketID(familyID, redPacketID)
|
| | | redpacketMgr.DelActiveRedPacketID(getWay, redPacketID)
|
| | | for playerID in redpacketMgr.playerNosendRedPacketIDInfo.keys():
|
| | | redpacketMgr.DelPlayerNosendRedPacketID(playerID, getWay, redPacketID)
|
| | | for playerID in redpacketMgr.playerCanGetRedPacketIDInfo.keys():
|
| | | redpacketMgr.DelPlayerCanGetRedPacketID(playerID, getWay, redPacketID)
|
| | | if redPacketID in redpacketMgr.notifyAllServerRedPacketIDList:
|
| | | redpacketMgr.notifyAllServerRedPacketIDList.remove(redPacketID)
|
| | | |
| | | __ResetSendState(delTypeList)
|
| | | GameWorld.DebugAnswer(curPlayer, "清除类型红包OK!%s,条数:%s" % (delTypeList, len(delRedIDList)))
|
| | |
|
| | | universalRecMgr = GameWorld.GetUniversalRecMgr()
|
| | | # 清除所有类型红包
|
| | | if paramB == 0:
|
| | | universalRecMgr.Delete(ShareDefine.Def_UniversalGameRecType_FamilyRedPacketAllRecord)
|
| | | __ResetSendState([])
|
| | | GameWorld.DebugAnswer(curPlayer, "清除所有类型红包OK!")
|
| | | if delRedIDList:
|
| | | sendPack = ChPyNetSendPack.tagGCRedPacketDel()
|
| | | sendPack.DelRedPacketID = delRedIDList
|
| | | sendPack.Cnt = len(delRedIDList)
|
| | |
|
| | | # 清除指定类型红包
|
| | | 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:
|
| | | playerManager = GameWorld.GetPlayerManager()
|
| | | for index in xrange(playerManager.GetPlayerCount()):
|
| | | curPlayer = playerManager.GetPlayerByIndex(index)
|
| | | if not curPlayer.GetID():
|
| | | 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
|
| | | |
| | | |
| | | NetPackCommon.SendFakePack(curPlayer, sendPack)
|
| | | |
| | | elif paramA == 1:
|
| | | redPackID = paramList[1] if len(paramList) > 1 else 0
|
| | | sendCount = paramList[2] if len(paramList) > 2 else 0
|
| | | sendCount = min(100, sendCount)
|
| | | ipyData = IpyGameDataPY.GetIpyGameData('FamilyRedPack', redPackID)
|
| | | if not ipyData:
|
| | | return
|
| | | getType = ipyData.GetGetType()
|
| | | wayType = PlayerFamilyRedPacket.GetRedPackGetWayType(getType)
|
| | | if wayType == ShareDefine.RedPackWayType_Family:
|
| | | return
|
| | | openTime = ipyData.GetPacketOpenTime() # 如果有指定发放时间的
|
| | | if openTime:
|
| | | sendCount = 1
|
| | | for _ in xrange(sendCount):
|
| | | PlayerFamilyRedPacket.CreateSystemRedPacket(redPackID)
|
| | | GameWorld.DebugAnswer(curPlayer, "成功发送红包编号:%s 共:%s个" % (redPackID, sendCount))
|
| | | |
| | | else:
|
| | | GameWorld.DebugAnswer(curPlayer, "红包命令参数错误!")
|
| | | |
| | | return
|
| | |
|
| | | def __ResetSendState(delTypeList):
|