| | |
| | | #"""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
|
| | |
|
| | | # 重置所有红包数据
|
| | | if len(paramList) == 1 and paramList[0] == 0:
|
| | | GameWorld.DebugAnswer(curPlayer, "清除所有红包领取记录")
|
| | | PlayerFamilyRedPacket.g_allRecordDict = {}
|
| | | PlayerFamilyRedPacket.g_grabDataDict = {}
|
| | | PlayerFamilyRedPacket.g_redPackCountDict = {}
|
| | | paramA = paramList[0]
|
| | | if paramA == 0:
|
| | | 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)))
|
| | |
|
| | | recordType = ShareDefine.Def_UniversalGameRecType_FamilyRedPacketGrabRecord
|
| | | universalRecMgr = GameWorld.GetUniversalRecMgr()
|
| | | universalRecMgr.Delete(recordType)
|
| | | PlayerFamilyRedPacket.NotifyRedPacketInfo(curPlayer)
|
| | | return
|
| | | |
| | | |
| | | if delRedIDList:
|
| | | sendPack = ChPyNetSendPack.tagGCRedPacketDel()
|
| | | sendPack.DelRedPacketID = delRedIDList
|
| | | sendPack.Cnt = len(delRedIDList)
|
| | | |
| | | playerManager = GameWorld.GetPlayerManager()
|
| | | for index in xrange(playerManager.GetPlayerCount()):
|
| | | curPlayer = playerManager.GetPlayerByIndex(index)
|
| | | if not curPlayer.GetID():
|
| | | continue
|
| | | 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):
|
| | | 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
|
| | |
|
| | |
|