| #!/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  | 
| import ShareDefine  | 
|   | 
|   | 
| ## 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, "---------------------------")  | 
| #        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  | 
|       | 
|     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 == 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  | 
|   | 
|   | 
|   |