| | |
| | | #"""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
|
| | |
|
| | | # 重置所有红包数据
|
| | | 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 == 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):
|
| | | 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
|
| | |
|
| | |
|