ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py
@@ -26,6 +26,8 @@
import ItemControler
import ChPyNetSendPack
import Operate_EquipStone
import PlayerFeastWeekParty
import DataRecordPack
import PlayerGodWeapon
import NetPackCommon
import ShareDefine
@@ -129,6 +131,7 @@
            itemList = awardDict[point]
            for itemID, itemCnt, isBind in itemList:
                totalItemDict[itemID] = totalItemDict.get(itemID, 0) + itemCnt
            DataRecordPack.DR_WeekPartyPoint(curPlayer, day, point)
    if not totalItemDict:
        return
    totalItemList = [[itemID, itemCnt, 1] for itemID, itemCnt in totalItemDict.items()]
@@ -138,6 +141,7 @@
def AddWeekPartyActionCnt(curPlayer, actionID, addCnt=1, isAdd=True, isCompatible=False, isSync=True):
    '''增加周狂欢相关活动完成次数'''
    PlayerFeastWeekParty.AddFeastWeekPartyActionCnt(curPlayer, actionID, addCnt, isAdd, isCompatible, isSync)
    #判断活动是否开启
    if not addCnt:
        return
@@ -145,8 +149,11 @@
    state = actWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
    cfgID = actWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
    
    if not state or not cfgID:
    if not cfgID:
        return
    if not state and actionID not in ChConfig.AheadFinishWPActList:
        return
    actBossIpyData = IpyGameDataPY.GetIpyGameData("ActWeekParty", cfgID)
    if not actBossIpyData:
        return
@@ -177,40 +184,40 @@
            return
    
    dayTidList = templateIDList[dayIndex]
    findTid = 0
    findTidList = []
    for tid in dayTidList:
        if tid / 100 == actionID:
            findTid = tid
            break
    if not findTid:
            findTidList.append(tid)
    if not findTidList:
        return
    ipyData = IpyGameDataPY.GetIpyGameData('WeekParty', findTid)
    if not ipyData:
        return
    totalTimes = ipyData.GetTotalTimes()
    curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyCurTimes % (dayIndex, findTid), 0, ChConfig.Def_PDictType_WeekParty)
    if isAdd:
        addCnt = addCnt if totalTimes == 0 else min(totalTimes - curTimes, addCnt)
        if addCnt <= 0:
            return
        updTimes = curTimes + addCnt
    else:
        if not isCompatible and addCnt != totalTimes:
            return
        updTimes = min(addCnt, totalTimes)
    realAddCnt = updTimes - curTimes
    if realAddCnt <= 0:
        return
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyCurTimes % (dayIndex, findTid), updTimes, ChConfig.Def_PDictType_WeekParty)
    #加积分
    singleTimes = ipyData.GetSingleTimes()
    addPoint = (curTimes % singleTimes + realAddCnt)/singleTimes* ipyData.GetPoint()
    curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyPoint % dayIndex, 0, ChConfig.Def_PDictType_WeekParty)
    updPoint = curPoint + addPoint
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyPoint % dayIndex, updPoint, ChConfig.Def_PDictType_WeekParty)
    GameWorld.DebugLog('   增加周狂欢相关活动完成次数 dayIndex=%s, findTid=%s, realAddCnt=%s,addPoint=%s' % (dayIndex, findTid, realAddCnt, addPoint))
    if isSync:
        SyncWeekPartyPlayerInfo(curPlayer, dayIndex, findTid)
    for findTid in findTidList:
        ipyData = IpyGameDataPY.GetIpyGameData('WeekParty', findTid)
        if not ipyData:
            continue
        totalTimes = ipyData.GetTotalTimes()
        curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyCurTimes % (dayIndex, findTid), 0, ChConfig.Def_PDictType_WeekParty)
        if isAdd:
            curAddCnt = addCnt if totalTimes == 0 else min(totalTimes - curTimes, addCnt)
            if curAddCnt <= 0:
                continue
            updTimes = curTimes + curAddCnt
        else:
            if not isCompatible and addCnt != totalTimes:
                continue
            updTimes = min(addCnt, totalTimes)
        realAddCnt = updTimes - curTimes
        if realAddCnt <= 0:
            continue
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyCurTimes % (dayIndex, findTid), updTimes, ChConfig.Def_PDictType_WeekParty)
        #加积分
        singleTimes = ipyData.GetSingleTimes()
        addPoint = (curTimes % singleTimes + realAddCnt)/singleTimes* ipyData.GetPoint()
        curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyPoint % dayIndex, 0, ChConfig.Def_PDictType_WeekParty)
        updPoint = curPoint + addPoint
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyPoint % dayIndex, updPoint, ChConfig.Def_PDictType_WeekParty)
        GameWorld.DebugLog('   增加周狂欢相关活动完成次数 dayIndex=%s, findTid=%s, realAddCnt=%s,addPoint=%s' % (dayIndex, findTid, realAddCnt, addPoint))
        if isSync:
            SyncWeekPartyPlayerInfo(curPlayer, dayIndex, findTid)
    return True
@@ -277,7 +284,7 @@
    #GameWorld.Log('  actionID=%s,curTimes=%s,gotTimes=%s,singleTimes=%s,newGotTimes=%s'%(actionID, curTimes, gotTimes,singleTimes, newGotTimes))
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyGotTimes % (day, templateID), newGotTimes, ChConfig.Def_PDictType_WeekParty)
    for itemID, itemCnt in awardDict.items():
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 1, [IPY_GameWorld.rptItem])
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem])
    SyncWeekPartyPlayerInfo(curPlayer, day, templateID)
    return
@@ -314,20 +321,28 @@
        return
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyAwardRecord % day, awardRecord | pow(2, getIndex), ChConfig.Def_PDictType_WeekParty)
    for itemID, itemCnt, isBind in itemList:
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [IPY_GameWorld.rptItem])
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem])
    SyncWeekPartyPlayerInfo(curPlayer, day)
    DataRecordPack.DR_WeekPartyPoint(curPlayer, day, getPoint)
    return
def __GetAwardItem(curPlayer, ipyData, times=1):
    awardDict = {}
    for itemID, itemCnt, isbind in ipyData.GetReward():
    awardItemList = __GetAwardItemListByJob(curPlayer, ipyData)
    for itemID, itemCnt, isbind in awardItemList:
        if not itemID or not itemCnt:
            continue
        awardDict[itemID] = awardDict.get(itemID, 0) + itemCnt * times
        
    return awardDict
def __GetAwardItemListByJob(curPlayer, ipyData):
    ## 根据职业获取对应奖励
    rewardItemInfo = ipyData.GetReward()
    if isinstance(rewardItemInfo, dict):
        return rewardItemInfo.get(curPlayer.GetJob(), [])
    return rewardItemInfo
def SyncWeekPartyPlayerInfo(curPlayer, day=-1, templateID=-1):
    #通知当前次数、已领次数 
@@ -431,7 +446,8 @@
        tInfo.SingleTimes = ipyData.GetSingleTimes()
        tInfo.Point = ipyData.GetPoint()
        tInfo.ItemInfo = []
        for itemID, itemCnt, isBind in ipyData.GetReward():
        awardItemList = __GetAwardItemListByJob(curPlayer, ipyData)
        for itemID, itemCnt, isBind in awardItemList:
            awardItem = ChPyNetSendPack.tagMCWeekPartyItem()
            awardItem.ItemID = itemID
            awardItem.ItemCnt = itemCnt