| | |
| | | #"""Version = 2019-01-29 16:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import PlayerFamilyRedPacket
|
| | | import ShareDefine
|
| | | import GameWorld
|
| | | import IpyGameDataPY
|
| | | import PlayerDBGSEvent
|
| | | import PlayerFamilyRedPacket
|
| | | import ChPyNetSendPack
|
| | | import NetPackCommon
|
| | |
|
| | |
|
| | | ## GM命令执行入口
|
| | |
| | | # @return None or True
|
| | | # @remarks 函数详细说明.
|
| | | def OnExec(curPlayer, paramList):
|
| | | GameWorld.DebugLog("执行GameServer->SetRedPacket: %s" % paramList)
|
| | | if not paramList:
|
| | | # GameWorld.DebugAnswer(curPlayer, "清除所有类型红包:SetRedPacket 0")
|
| | | # GameWorld.DebugAnswer(curPlayer, "清除指定类型红包:SetRedPacket 0 类型A 类型B ...")
|
| | | # GameWorld.DebugAnswer(curPlayer, "发送全服系统红包:SetRedPacket 36 红包编号 个数")
|
| | | # GameWorld.DebugAnswer(curPlayer, "全服系统红包编号:126~130")
|
| | | # GameWorld.DebugAnswer(curPlayer, "红包类型:36-全服红包;33-节日成就")
|
| | | 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 == 36:
|
| | | redPackID = paramList[1] if len(paramList) > 1 else 0
|
| | | sendCount = paramList[2] if len(paramList) > 2 else 0
|
| | | sendCount = min(100, sendCount)
|
| | | canSendRedPacketIDList = range(126, 130 + 1) + []
|
| | | if redPackID not in canSendRedPacketIDList or not sendCount:
|
| | | GameWorld.DebugAnswer(curPlayer, "发送全服系统红包参数错误!")
|
| | | return
|
| | | for _ in xrange(sendCount):
|
| | | PlayerFamilyRedPacket.CreateSystemRedPacket(redPackID)
|
| | | GameWorld.DebugAnswer(curPlayer, "成功发送红包编号:%s 共:%s个" % (redPackID, sendCount))
|
| | | |
| | | else:
|
| | | GameWorld.DebugAnswer(curPlayer, "红包命令参数错误!")
|
| | | return
|
| | |
|
| | | def __ResetSendState(delTypeList):
|