ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py
@@ -24,18 +24,19 @@
import DataRecordPack
import ItemControler
import IPY_GameWorld
import PlayerWeekParty
import ItemCommon
import GameWorld
import ChConfig
def GetGiftbagTypeList(cfgID, dayIndex):
def GetGiftbagTypeList(cfgID, dayIndex, woldLV):
    if cfgID == None or dayIndex == None:
        return []
    ipyData = IpyGameDataPY.GetIpyGameData("ActFlashGiftbag", cfgID)
    if not ipyData:
        return []
    giftbagTypeList = ipyData.GetGiftbagTypeList()
    giftbagTypeList = GameWorld.GetDictValueByRangeKey(ipyData.GetGiftbagTypeList(), woldLV, [])
    todayGiftbag = giftbagTypeList[-1] if dayIndex >= len(giftbagTypeList) else giftbagTypeList[dayIndex]
    return todayGiftbag
@@ -64,7 +65,7 @@
    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
    
    playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashGiftbagID) # 玩家身上的活动ID
    giftbagTypeList = [] if not cfgID else GetGiftbagTypeList(cfgID, actInfo.get(ShareDefine.ActKey_DayIndex, 0))
    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
@@ -122,7 +123,7 @@
        DataRecordPack.DR_CTGError(curPlayer, "FlashGiftbag state is 0!", addDRDict)
        return
    
    giftbagTypeList = GetGiftbagTypeList(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))
    giftbagTypeList = GetGiftbagTypeList(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0), actInfo.get(ShareDefine.ActKey_WorldLV, 0))
    if not giftbagTypeList:
        DataRecordPack.DR_CTGError(curPlayer, "FlashGiftbag GiftbagTypeList is null!", addDRDict)
        return
@@ -142,7 +143,7 @@
        return
    
    giftbagID = giftbagIpyData.GetGiftbagID()
    giftItemList = giftbagIpyData.GetGiftItemList()
    giftItemList = __GetJobItemList(giftbagIpyData.GetGiftItemList(), curPlayer.GetJob())
    addDRDict.update({"giftbagID":giftbagID, "giftItemList":giftItemList})
    buyCountLimit = giftbagIpyData.GetBuyCountLimit()
    buyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashGiftbagBuyCount % giftbagID)
@@ -161,19 +162,29 @@
            PlayerControl.SendMailByKey("", [curPlayer.GetPlayerID()], giftItemList)
        else:
            for itemID, itemCount, isBind in giftItemList:
                ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem],
                ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem],
                                             event=[ChConfig.ItemGive_CTG, True, addDRDict])
    
    # 取玩家APPID,混服使用
    appID = GameWorld.GetPlayerPlatform(curPlayer.GetAccID())
    appID = GameWorld.GetPlayerPlatform(curPlayer)
    notifyKey = giftbagIpyData.GetNotifyKey()
    if notifyKey:
        orderIpyData = GetFlashGiftbagIDOrderInfoIpyData(giftbagID, appID)
        rmb = 0 if not orderIpyData else int(orderIpyData.GetPayRMBNum())
        PlayerControl.WorldNotify(0, notifyKey, [curPlayer.GetPlayerName(), rmb, giftbagIpyData.GetMainItemID()])
    SyncFlashGiftbagBuyCount(curPlayer, [giftbagID])
    PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_GiftBag, actGiftbagType, False)
    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, syncIDList=[], giftbagTypeList=[]):
    ## 通知限时礼包玩家活动信息
@@ -219,7 +230,7 @@
    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
    if not cfgID:
        return
    giftbagTypeList = GetGiftbagTypeList(cfgID, actInfo.get(ShareDefine.ActKey_DayIndex, 0))
    giftbagTypeList = GetGiftbagTypeList(cfgID, actInfo.get(ShareDefine.ActKey_DayIndex, 0), actInfo.get(ShareDefine.ActKey_WorldLV, 0))
    
    if not giftbagTypeList:
        return
@@ -235,7 +246,7 @@
        return
    
    # 取玩家APPID,混服使用
    appID = GameWorld.GetPlayerPlatform(curPlayer.GetAccID())
    appID = GameWorld.GetPlayerPlatform(curPlayer)
    
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    packInfo = ChPyNetSendPack.tagMCFlashGiftbagInfo()
@@ -272,7 +283,7 @@
            giftBag.RMB = 0 if not orderIpyData else int(orderIpyData.GetPayRMBNum())
            giftBag.RMBOriginal = giftIpyData.GetOriginalRMB()
            giftBag.ItemInfo = []
            for itemID, itemCount, isBind in giftIpyData.GetGiftItemList():
            for itemID, itemCount, isBind in __GetJobItemList(giftIpyData.GetGiftItemList(), curPlayer.GetJob()):
                item = ChPyNetSendPack.tagMCFlashGiftbagItem()
                item.ItemID = itemID
                item.ItemCount = itemCount