#!/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 PlayerControl  
 | 
import PlayerFamilyRedPacket  
 | 
import PlayerFeastRedPacket  
 | 
import IpyGameDataPY  
 | 
import PlayerSuccess  
 | 
import ChConfig  
 | 
import ShareDefine  
 | 
  
 | 
def __Help(curPlayer):  
 | 
    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  
 | 
  
 | 
## GMÃüÁîÖ´ÐÐÈë¿Ú  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param paramList ²ÎÊýÁÐ±í  
 | 
#  @return None or True  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def OnExec(curPlayer, paramList):  
 | 
    if not paramList:  
 | 
        __Help(curPlayer)  
 | 
        return  
 | 
      
 | 
    isSendGameServer = False  
 | 
    paramA = paramList[0]  
 | 
    # ÖØÖÃËùÓкì°üÊý¾Ý  
 | 
    if paramA == 0:  
 | 
        isSendGameServer = True  
 | 
        __DOResetSuccRedPack(curPlayer)  
 | 
        __DoResetRedPackFunc(curPlayer, 1, None, 0)  
 | 
        __DoResetRedPackFunc(curPlayer, 2, None, 0)  
 | 
          
 | 
    # ·¢Ö¸¶¨ºì°ü  
 | 
    elif paramA == 1 and len(paramList) > 1:  
 | 
        redPacketID = paramList[1]  
 | 
        ipyData = IpyGameDataPY.GetIpyGameData('FamilyRedPack', redPacketID)  
 | 
        if not ipyData:  
 | 
            GameWorld.DebugAnswer(curPlayer, "²»´æÔڸúì°ü£¡ %s" % redPacketID)  
 | 
            return  
 | 
        getType = ipyData.GetGetType()  
 | 
        if not getType:  
 | 
            return  
 | 
        getWayType = PlayerFamilyRedPacket.GetRedPackGetWayType(getType)  
 | 
        if getWayType == ShareDefine.RedPackWayType_Family or getType == ShareDefine.RedPackType_FeastSucc:  
 | 
            if not PlayerFamilyRedPacket.CreatRedPacketByID(curPlayer, redPacketID):  
 | 
                GameWorld.DebugAnswer(curPlayer, "###·¢Ëͺì°üʧ°Ü£¬Ïê¼ûµØÍ¼ÈÕÖ¾! %s" % redPacketID)  
 | 
            return  
 | 
        isSendGameServer = True  
 | 
          
 | 
    # ÉèÖÃÇÀºì°ü  
 | 
    elif paramA == 2 and len(paramList) == 4:  
 | 
        redPackFuncType, grabCount, grabMoney = paramList[1:]  
 | 
        __DoResetRedPackFunc(curPlayer, redPackFuncType, grabCount, grabMoney)  
 | 
        return  
 | 
    else:  
 | 
        return  
 | 
      
 | 
    return isSendGameServer  
 | 
  
 | 
def __DOResetSuccRedPack(curPlayer):  
 | 
    ## ÖØÖúì°ü³É¾Í·¢·Å¼Ç¼£¬²»ÖØÖýø¶È  
 | 
    resetList = []  
 | 
    ipyDataMgr = IpyGameDataPY.IPY_Data()  
 | 
    for index in xrange(ipyDataMgr.GetSuccessCount()):  
 | 
        succData = ipyDataMgr.GetSuccessByIndex(index)  
 | 
        succID = succData.ID  
 | 
        succType = succData.Type  
 | 
        condition = succData.Condition  
 | 
        if not succData.RedPacketID:  
 | 
            continue  
 | 
        if not PlayerSuccess.GetSuccFinishValue(curPlayer, succType, condition):  
 | 
            continue  
 | 
        #SetSuccFinishValue(curPlayer, succType, condition, 0)  
 | 
        if PlayerSuccess.GetSuccHasGot(curPlayer, succID):  
 | 
            PlayerSuccess.SetSuccFinish(curPlayer, succID, True)  
 | 
            PlayerSuccess.SetSuccHasGot(curPlayer, succID, False)  
 | 
            resetList.append(succID)  
 | 
              
 | 
    if resetList:  
 | 
        PlayerSuccess.Sync_SuccTypeIndexAwardRecord(curPlayer, resetList, True)  
 | 
        PlayerSuccess.Sync_SuccessInfo(curPlayer, resetList, True)  
 | 
          
 | 
    return  
 | 
  
 | 
def __DoResetRedPackFunc(curPlayer, redPackFuncType, grabCount, grabMoney):  
 | 
    if redPackFuncType == 1:  
 | 
        pass  
 | 
    elif redPackFuncType == 2:  
 | 
        if not isinstance(grabCount, int):  
 | 
            grabCount = IpyGameDataPY.GetFuncCfg('FeastRedPacket', 1)  
 | 
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastRedPacketCanGrabCnt, grabCount)  
 | 
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastRedPacketGrabMoney, grabMoney)  
 | 
        PlayerFeastRedPacket.Sync_FeastRedPackInfo(curPlayer)  
 | 
    return  
 | 
  
 | 
  
 |