#!/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