#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package GM.Commands.SetRedPacket # # @todo:ÉèÖúì°ü # @author hxp # @date 2019-01-29 # @version 1.0 # # ÏêϸÃèÊö: ÉèÖúì°ü # #------------------------------------------------------------------------------- #"""Version = 2019-01-29 16:00""" #------------------------------------------------------------------------------- import GameWorld import IpyGameDataPY import PlayerDBGSEvent import PlayerFamilyRedPacket import ChPyNetSendPack import NetPackCommon ## GMÃüÁîÖ´ÐÐÈë¿Ú # @param curPlayer µ±Ç°Íæ¼Ò # @param paramList ²ÎÊýÁбí # @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 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))) 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