#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#-------------------------------------------------------------------------------  
 | 
#  
 | 
##@package Player.PlayerFlashGiftbag  
 | 
#  
 | 
# @todo:ÏÞʱÀñ°ü  
 | 
# @author hxp  
 | 
# @date 2018-7-20  
 | 
# @version 1.0  
 | 
#  
 | 
# ÏêϸÃèÊö: ÏÞʱÀñ°ü  
 | 
#  
 | 
#-------------------------------------------------------------------------------  
 | 
#"""Version = 2018-7-20 17:30"""  
 | 
#-------------------------------------------------------------------------------  
 | 
  
 | 
import PyGameData  
 | 
import ShareDefine  
 | 
import PlayerControl  
 | 
import IpyGameDataPY  
 | 
import NetPackCommon  
 | 
import ChPyNetSendPack  
 | 
import DataRecordPack  
 | 
import ItemControler  
 | 
import PlayerWeekParty  
 | 
import GameWorld  
 | 
import ChConfig  
 | 
import CommFunc  
 | 
  
 | 
  
 | 
def GetGiftbagTypeList(cfgID, dayIndex, woldLV):  
 | 
    if cfgID == None or dayIndex == None:  
 | 
        return []  
 | 
    ipyData = IpyGameDataPY.GetIpyGameData("ActFlashGiftbag", cfgID)  
 | 
    if not ipyData:  
 | 
        return []  
 | 
    giftbagTypeList = GameWorld.GetDictValueByRangeKey(ipyData.GetGiftbagTypeList(), woldLV, [])  
 | 
    todayGiftbag = giftbagTypeList[-1] if dayIndex >= len(giftbagTypeList) else giftbagTypeList[dayIndex]  
 | 
    return todayGiftbag  
 | 
  
 | 
def OnPlayerLogin(curPlayer):  
 | 
      
 | 
    TransferPlayerActDBKeyValue(curPlayer)  
 | 
      
 | 
    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FlashGiftbag, {}).values():  
 | 
        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)  
 | 
        isReset = __CheckPlayerFlashGiftbagAction(curPlayer, actNum)  
 | 
        if not isReset:  
 | 
            pass  
 | 
          
 | 
    return  
 | 
  
 | 
def TransferPlayerActDBKeyValue(curPlayer):  
 | 
    ## Íæ¼ÒµÇ¼ʱµ÷Óã¬¾É°æ±¾Íæ¼Ò»î¶¯Êý¾Ý×ªÒÆµ½Ð°汾×ֵ䣬ÏßÉϰ汾ά»¤Ö®ºóµÄ°æ±¾¿Éɾ³ý´Ë´úÂ룬ÏßÉϰ汾·ÖÖ§ gt_1.100.4  
 | 
      
 | 
    ##ÏÞʱÀñ°ü»î¶¯  
 | 
    Def_PDict_FlashGiftbagID = "FlashGiftbagID"  # Íæ¼ÒÉíÉϵÄÏÞʱÀñ°ü»î¶¯ID£¬Î¨Ò»±êʶ£¬È¡»î¶¯¿ªÊ¼ÈÕÆÚtime  
 | 
    Def_PDict_FlashGiftbagBuyCount = "FlashGiftbagBuyCount_%s"  # ÏÞʱÀñ°üÒѹºÂò´ÎÊý£¬²ÎÊý£¨Àñ°üID£©  
 | 
    Def_PDict_FlashGiftbagMailState = "FlashGiftbagMailState"  # Íæ¼ÒÉíÉϵĻ¸üÐÂÌáÐÑÓʼþ״̬  
 | 
      
 | 
    playerActID = curPlayer.NomalDictGetProperty(Def_PDict_FlashGiftbagID)  
 | 
    if not playerActID:  
 | 
        return  
 | 
      
 | 
    tagActNum = 10  
 | 
      
 | 
    playerMailState = curPlayer.NomalDictGetProperty(Def_PDict_FlashGiftbagMailState) # Íæ¼ÒÉíÉϵĻÌáÐÑÓʼþ״̬  
 | 
      
 | 
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashGiftbagID % tagActNum, playerActID)  
 | 
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashGiftbagMailState % tagActNum, playerMailState)  
 | 
      
 | 
    PlayerControl.NomalDictSetProperty(curPlayer, Def_PDict_FlashGiftbagID, 0)  
 | 
    PlayerControl.NomalDictSetProperty(curPlayer, Def_PDict_FlashGiftbagMailState, 0)  
 | 
      
 | 
    GameWorld.Log("ÏÞʱÀñ°ü×ªÒÆÍæ¼Ò»î¶¯×Öµä¼Ç¼: playerActID=%s,tagActNum=%s" % (playerActID, tagActNum), curPlayer.GetPlayerID())  
 | 
      
 | 
    ipyMgr = IpyGameDataPY.IPY_Data()  
 | 
    for index in xrange(ipyMgr.GetFlashGiftbagCount()):  
 | 
        ipyData = ipyMgr.GetFlashGiftbagByIndex(index)  
 | 
        giftbagID = ipyData.GetGiftbagID()  
 | 
          
 | 
        buyCount = curPlayer.NomalDictGetProperty(Def_PDict_FlashGiftbagBuyCount % giftbagID)  
 | 
        if buyCount <= 0:  
 | 
            continue  
 | 
          
 | 
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashGiftbagBuyCount % (tagActNum, giftbagID), buyCount)  
 | 
        PlayerControl.NomalDictSetProperty(curPlayer, Def_PDict_FlashGiftbagBuyCount % giftbagID, 0)  
 | 
        GameWorld.Log("    ×ªÒƹºÂò´ÎÊý: giftbagID=%s,buyCount=%s" % (giftbagID, buyCount), curPlayer.GetPlayerID())  
 | 
          
 | 
    return  
 | 
  
 | 
def RefreshFlashGiftbagActionInfo(actNum):  
 | 
    ## ÊÕµ½GameServerͬ²½µÄ»î¶¯ÐÅÏ¢£¬Ë¢Ð»ÐÅÏ¢  
 | 
    playerManager = GameWorld.GetPlayerManager()  
 | 
    for index in xrange(playerManager.GetPlayerCount()):  
 | 
        curPlayer = playerManager.GetPlayerByIndex(index)  
 | 
        if curPlayer.GetID() == 0:  
 | 
            continue  
 | 
        __CheckPlayerFlashGiftbagAction(curPlayer, actNum)  
 | 
    return  
 | 
  
 | 
def __CheckPlayerFlashGiftbagAction(curPlayer, actNum):  
 | 
    ## ¼ì²éÍæ¼ÒÏÔʾÀñ°ü»î¶¯Êý¾ÝÐÅÏ¢  
 | 
      
 | 
    playerID = curPlayer.GetPlayerID()  
 | 
      
 | 
    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_FlashGiftbag, actNum)  
 | 
    actID = actInfo.get(ShareDefine.ActKey_ID, 0)  
 | 
    state = actInfo.get(ShareDefine.ActKey_State, 0)  
 | 
    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)  
 | 
      
 | 
    playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashGiftbagID % actNum) # Íæ¼ÒÉíÉϵĻID  
 | 
    giftbagTypeList = [] if not cfgID else GetGiftbagTypeList(cfgID, actInfo.get(ShareDefine.ActKey_DayIndex, 0), actInfo.get(ShareDefine.ActKey_WorldLV, 0))  
 | 
    isReset = False  
 | 
    if actID != playerActID:  
 | 
        isReset = True  
 | 
        Sync_FlashGiftbagActionInfo(curPlayer, actNum)  
 | 
        __ResetGiftbagItemBuyCount(curPlayer, giftbagTypeList, actNum)  
 | 
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashGiftbagID % actNum, actID)  
 | 
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashGiftbagMailState % actNum, 0)  
 | 
        GameWorld.DebugLog("ÏÞʱÀñ°üÖØÖÃ! actNum=%s,actID=%s,playerActID=%s,state=%s,giftbagTypeList=%s"   
 | 
                           % (actNum, actID, playerActID, state, giftbagTypeList), playerID)  
 | 
    else:  
 | 
        GameWorld.DebugLog("ÏÞʱÀñ°ü»î¶¯ID²»±ä£¬²»´¦Àí£¡actNum=%s,playerActID=%s" % (actNum, playerActID), curPlayer.GetPlayerID())  
 | 
          
 | 
    playerMailState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashGiftbagMailState % actNum) # Íæ¼ÒÉíÉϵĻÌáÐÑÓʼþ״̬  
 | 
    if actID and state and state != playerMailState:  
 | 
        flashGiftbagIpyData = IpyGameDataPY.GetIpyGameData("ActFlashGiftbag", cfgID)  
 | 
        if flashGiftbagIpyData and flashGiftbagIpyData.GetMailKey() and curPlayer.GetLV() >= flashGiftbagIpyData.GetLVLimit():  
 | 
            PlayerControl.SendMailByKey(flashGiftbagIpyData.GetMailKey(), [playerID], flashGiftbagIpyData.GetMailItemPrize())  
 | 
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashGiftbagMailState % actNum, state)  
 | 
            GameWorld.DebugLog("    ·¢ËÍÐÂÏÞʱÀñ°üÓʼþÌáÐÑ! state=%s,playerMailState=%s" % (state, playerMailState), playerID)  
 | 
              
 | 
    if not isReset and cfgID:  
 | 
        Sync_FlashGiftbagActionInfo(curPlayer, actNum)  
 | 
        if giftbagTypeList:  
 | 
            SyncFlashGiftbagBuyCount(curPlayer, actNum, giftbagTypeList=giftbagTypeList)  
 | 
    return isReset  
 | 
  
 | 
def __ResetGiftbagItemBuyCount(curPlayer, giftbagTypeList, actNum):  
 | 
    ##ÖØÖÃÏÞʱÀñ°üÏÞ¹ºÎïÆ·´ÎÊý  
 | 
    syncIDList = []  
 | 
    ipyDataMgr = IpyGameDataPY.IPY_Data()  
 | 
    for i in xrange(ipyDataMgr.GetFlashGiftbagCount()):  
 | 
        giftbag = ipyDataMgr.GetFlashGiftbagByIndex(i)  
 | 
        if not giftbag.GetBuyCountLimit():  
 | 
            continue  
 | 
        if giftbag.GetGiftbagType() not in giftbagTypeList:  
 | 
            continue  
 | 
        buyCntKey = ChConfig.Def_PDict_FlashGiftbagBuyCount % (actNum, giftbag.GetGiftbagID())  
 | 
        if curPlayer.NomalDictGetProperty(buyCntKey) <= 0:  
 | 
            continue  
 | 
        PlayerControl.NomalDictSetProperty(curPlayer, buyCntKey, 0)  
 | 
        syncIDList.append(giftbag.GetGiftbagID())  
 | 
    if syncIDList:  
 | 
        SyncFlashGiftbagBuyCount(curPlayer, actNum, syncIDList)  
 | 
    return  
 | 
  
 | 
def OnPlayerOrderGiftbag(curPlayer, giftbagIDList, addDRDict):  
 | 
    ## Íæ¼Ò¶©¹ºÏÞʱÀñ°ü  
 | 
      
 | 
    canBuy = False  
 | 
    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FlashGiftbag, {}).values():  
 | 
        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)  
 | 
          
 | 
        state = actInfo.get(ShareDefine.ActKey_State, 0)  
 | 
        if not state:  
 | 
            continue  
 | 
          
 | 
        giftbagTypeList = GetGiftbagTypeList(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0), actInfo.get(ShareDefine.ActKey_WorldLV, 0))  
 | 
        if not giftbagTypeList:  
 | 
            continue  
 | 
        actGiftbagType = giftbagTypeList[-1] if state > len(giftbagTypeList) else giftbagTypeList[state - 1]  
 | 
        giftbagIpyDataList = IpyGameDataPY.GetIpyGameDataByCondition("FlashGiftbag", {"GiftbagType":actGiftbagType}, True, True)  
 | 
        actGiftbagIDList = []  
 | 
        giftbagIpyData = None  
 | 
        for ipyData in giftbagIpyDataList:  
 | 
            actGiftbagIDList.append(ipyData.GetGiftbagID())  
 | 
            if ipyData.GetGiftbagID() in giftbagIDList:  
 | 
                giftbagIpyData = ipyData  
 | 
                break  
 | 
              
 | 
        if not giftbagIpyData:  
 | 
            continue  
 | 
          
 | 
        giftbagID = giftbagIpyData.GetGiftbagID()  
 | 
        giftItemList = __GetJobItemList(giftbagIpyData.GetGiftItemList(), curPlayer.GetJob())   
 | 
        addDRDict.update({"giftbagID":giftbagID, "giftItemList":giftItemList})  
 | 
        buyCountLimit = giftbagIpyData.GetBuyCountLimit()  
 | 
        buyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashGiftbagBuyCount % (actNum, giftbagID))  
 | 
        if buyCountLimit:  
 | 
            addDRDict.update({"buyCountLimit":buyCountLimit, "buyCount":buyCount})  
 | 
            if buyCount >= buyCountLimit:  
 | 
                DataRecordPack.DR_CTGError(curPlayer, "FlashGiftbag Pay count limit !buyCount=%s,buyCountLimit=%s"   
 | 
                                           % (buyCount, buyCountLimit), addDRDict)  
 | 
                return  
 | 
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashGiftbagBuyCount % (actNum, giftbagID), buyCount + 1)  
 | 
          
 | 
        if giftItemList:  
 | 
            ItemControler.GivePlayerItemOrMail(curPlayer, giftItemList, "", event=[ChConfig.ItemGive_CTG, True, addDRDict])  
 | 
          
 | 
        # È¡Íæ¼ÒAPPID£¬»ì·þʹÓà  
 | 
        appID = GameWorld.GetPlayerPlatform(curPlayer)  
 | 
        notifyKey = giftbagIpyData.GetNotifyKey()  
 | 
        if notifyKey:  
 | 
            orderIpyData = GetFlashGiftbagIDOrderInfoIpyData(giftbagID, appID)  
 | 
            rmb = "0" if not orderIpyData else str(orderIpyData.GetPayRMBNum()) # RMBÖ§³ÖСÊý£¬ÕâÀïÖ±½Óתstr¹ã²¥  
 | 
            PlayerControl.WorldNotify(0, notifyKey, [curPlayer.GetPlayerName(), rmb, giftbagIpyData.GetMainItemID()])  
 | 
          
 | 
        SyncFlashGiftbagBuyCount(curPlayer, actNum, [giftbagID])  
 | 
        PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_GiftBag, actGiftbagType, False)  
 | 
          
 | 
        canBuy = True  
 | 
        GameWorld.DebugLog("    ¹ºÂòÏÞʱÀñ°ü: actNum=%s,actGiftbagType=%s,giftbagID=%s,buyCount=%s"   
 | 
                           % (actNum, actGiftbagType, giftbagID, buyCount + 1))  
 | 
        break  
 | 
      
 | 
    if not canBuy:  
 | 
        DataRecordPack.DR_CTGError(curPlayer, "FlashGiftbag can not buy!", addDRDict)  
 | 
        return  
 | 
      
 | 
    return True  
 | 
  
 | 
def __GetJobItemList(itemList, job):  
 | 
    jobItemList = []  
 | 
    for itemID, itemCnt, isBind in itemList:  
 | 
        if type(itemID) == int:  
 | 
            jobItemList.append([itemID, itemCnt, isBind])  
 | 
        elif job in itemID:  
 | 
            jobItemList.append([itemID[job], itemCnt, isBind])  
 | 
    return jobItemList  
 | 
  
 | 
def SyncFlashGiftbagBuyCount(curPlayer, actNum, syncIDList=[], giftbagTypeList=[]):  
 | 
    ## Í¨ÖªÏÞʱÀñ°üÍæ¼Ò»î¶¯ÐÅÏ¢  
 | 
    giftbagBuyInfo = ChPyNetSendPack.tagMCFlashGiftbagPlayerInfo()  
 | 
    giftbagBuyInfo.ActNum = actNum  
 | 
    giftbagBuyInfo.BuyCountList = []  
 | 
    if syncIDList:  
 | 
        for giftID in syncIDList:  
 | 
            buyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashGiftbagBuyCount % (actNum, giftID))  
 | 
            buyCountInfo = ChPyNetSendPack.tagMCFlashGiftbagBuyCount()  
 | 
            buyCountInfo.GiftbagID = giftID  
 | 
            buyCountInfo.BuyCount = buyCnt  
 | 
            giftbagBuyInfo.BuyCountList.append(buyCountInfo)  
 | 
    else:  
 | 
        ipyDataMgr = IpyGameDataPY.IPY_Data()  
 | 
        for i in xrange(ipyDataMgr.GetFlashGiftbagCount()):  
 | 
            giftbag = ipyDataMgr.GetFlashGiftbagByIndex(i)  
 | 
            if not giftbag.GetBuyCountLimit():  
 | 
                continue  
 | 
            if giftbagTypeList and giftbag.GetGiftbagType() not in giftbagTypeList:  
 | 
                continue  
 | 
            giftID = giftbag.GetGiftbagID()  
 | 
            buyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashGiftbagBuyCount % (actNum, giftID))  
 | 
            if buyCnt <= 0:  
 | 
                continue  
 | 
            buyCountInfo = ChPyNetSendPack.tagMCFlashGiftbagBuyCount()  
 | 
            buyCountInfo.GiftbagID = giftID  
 | 
            buyCountInfo.BuyCount = buyCnt  
 | 
            giftbagBuyInfo.BuyCountList.append(buyCountInfo)  
 | 
    giftbagBuyInfo.Count = len(giftbagBuyInfo.BuyCountList)  
 | 
    NetPackCommon.SendFakePack(curPlayer, giftbagBuyInfo)  
 | 
    return  
 | 
  
 | 
def Sync_FlashGiftbagActionInfo(curPlayer, actNum):  
 | 
    ## Í¨ÖªÏÞʱÀñ°ü»î¶¯ÐÅÏ¢  
 | 
    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_FlashGiftbag, actNum)  
 | 
    if not actInfo:  
 | 
        return  
 | 
      
 | 
    #ÐèÒªÌáǰ֪ͨ£¬ËùÒÔÈ¥µô´ËÏÞÖÆ  
 | 
    #if not actInfo.get(ShareDefine.ActKey_State):  
 | 
    #    return  
 | 
      
 | 
    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)  
 | 
    if not cfgID:  
 | 
        return  
 | 
    giftbagTypeList = GetGiftbagTypeList(cfgID, actInfo.get(ShareDefine.ActKey_DayIndex, 0), actInfo.get(ShareDefine.ActKey_WorldLV, 0))  
 | 
      
 | 
    if not giftbagTypeList:  
 | 
        return  
 | 
      
 | 
    flashGiftbagIpyData = IpyGameDataPY.GetIpyGameData("ActFlashGiftbag", cfgID)  
 | 
    if not flashGiftbagIpyData:  
 | 
        return  
 | 
      
 | 
    startTimeList = flashGiftbagIpyData.GetStartTimeList()  
 | 
    endTimeList = flashGiftbagIpyData.GetEndTimeList()  
 | 
    if len(startTimeList) != len(endTimeList):  
 | 
        GameWorld.ErrLog("ÏÞʱÀñ°ü¿ª¹ØÊ±¼äʱ·ÖÅäÖôíÎó!cfgID=%s" % cfgID)  
 | 
        return  
 | 
      
 | 
    # È¡Íæ¼ÒAPPID£¬»ì·þʹÓà  
 | 
    appID = GameWorld.GetPlayerPlatform(curPlayer)  
 | 
      
 | 
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1  
 | 
    packInfo = ChPyNetSendPack.tagMCFlashGiftbagInfo()  
 | 
    packInfo.ActNum = actNum  
 | 
    packInfo.StartDate = GameWorld.GetOperationActionDateStr(flashGiftbagIpyData.GetStartDate(), openServerDay)  
 | 
    packInfo.EndtDate = GameWorld.GetOperationActionDateStr(flashGiftbagIpyData.GetEndDate(), openServerDay)  
 | 
    packInfo.AdvanceMinutes = flashGiftbagIpyData.GetAdvanceMinutes()  
 | 
    packInfo.ActivityTime = []  
 | 
    for i, startTime in enumerate(startTimeList):  
 | 
        timeInfo = ChPyNetSendPack.tagMCFlashGiftbagTime()  
 | 
        timeInfo.StartTime = startTime  
 | 
        timeInfo.EndtTime = endTimeList[i]  
 | 
        packInfo.ActivityTime.append(timeInfo)  
 | 
    packInfo.ActivityTimeCount = len(packInfo.ActivityTime)  
 | 
    packInfo.IsDayReset = flashGiftbagIpyData.GetIsDayReset()  
 | 
    packInfo.LimitLV = flashGiftbagIpyData.GetLVLimit()  
 | 
    packInfo.GiftbagTypeInfo = []  
 | 
    for giftbagType in giftbagTypeList:  
 | 
          
 | 
        giftbagIpyDataList = IpyGameDataPY.GetIpyGameDataByCondition("FlashGiftbag", {"GiftbagType":giftbagType}, True, True)  
 | 
        if not giftbagIpyDataList:  
 | 
            continue  
 | 
          
 | 
        giftType = ChPyNetSendPack.tagMCFlashGiftbagType()  
 | 
        giftType.GiftbagInfo = []  
 | 
          
 | 
        for giftIpyData in giftbagIpyDataList:  
 | 
            giftbagID = giftIpyData.GetGiftbagID()  
 | 
            orderIpyData = GetFlashGiftbagIDOrderInfoIpyData(giftbagID, appID)  
 | 
            giftBag = ChPyNetSendPack.tagMCFlashGiftbag()  
 | 
            giftBag.GiftID = giftbagID  
 | 
            giftBag.OrderInfo = "" if not orderIpyData else orderIpyData.GetOrderInfo()  
 | 
            giftBag.OrderInfoLen = len(giftBag.OrderInfo)  
 | 
            giftBag.BuyCountLimit = giftIpyData.GetBuyCountLimit()  
 | 
            giftBag.RMB = 0 if not orderIpyData else CommFunc.RMBToCoin(orderIpyData.GetPayRMBNum())  
 | 
            giftBag.RMBOriginal = CommFunc.RMBToCoin(giftIpyData.GetOriginalRMB())  
 | 
            giftBag.ItemInfo = []  
 | 
            for itemID, itemCount, isBind in __GetJobItemList(giftIpyData.GetGiftItemList(), curPlayer.GetJob()):  
 | 
                item = ChPyNetSendPack.tagMCFlashGiftbagItem()  
 | 
                item.ItemID = itemID  
 | 
                item.ItemCount = itemCount  
 | 
                item.IsBind = isBind  
 | 
                item.IsMainItem = int(itemID == giftIpyData.GetMainItemID())  
 | 
                giftBag.ItemInfo.append(item)  
 | 
            giftBag.GiftItemCount = len(giftBag.ItemInfo)  
 | 
            giftType.GiftbagInfo.append(giftBag)  
 | 
              
 | 
        giftType.GiftbagCount = len(giftType.GiftbagInfo)  
 | 
        packInfo.GiftbagTypeInfo.append(giftType)  
 | 
          
 | 
    packInfo.GiftbagTypeCount = len(packInfo.GiftbagTypeInfo)  
 | 
    NetPackCommon.SendFakePack(curPlayer, packInfo)  
 | 
    return  
 | 
  
 | 
def GetFlashGiftbagIDOrderInfoIpyData(giftbagID, appID):  
 | 
    ## »ñÈ¡Àñ°üID¶ÔӦʵ¼ÊÊÛ¼Û  
 | 
    key = "FlashGiftbagIDRMB"  
 | 
    FlashGiftbagIDRMBDict = IpyGameDataPY.GetConfigEx(key)  
 | 
    if not FlashGiftbagIDRMBDict:  
 | 
        FlashGiftbagIDRMBDict = {}  
 | 
        ipyDataMgr = IpyGameDataPY.IPY_Data()  
 | 
        for i in xrange(ipyDataMgr.GetOrderInfoCount()):  
 | 
            ipyData = ipyDataMgr.GetOrderInfoByIndex(i)  
 | 
            #if ipyData.GetAppID() != appID:  
 | 
            #    continue  
 | 
            if not ipyData.GetGiftbagID():  
 | 
                continue  
 | 
            FlashGiftbagIDRMBDict[(ipyData.GetGiftbagID(), ipyData.GetAppID())] = ipyData  
 | 
        IpyGameDataPY.SetConfigEx(key, FlashGiftbagIDRMBDict)  
 | 
    return FlashGiftbagIDRMBDict.get((giftbagID, appID))  
 | 
  
 |