xdh
2019-01-22 b61fe6ed796dfeb1a7ed718d8099d6edb05f36f6
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py
@@ -25,6 +25,8 @@
import PlayerControl
import ItemControler
import ChPyNetSendPack
import Operate_EquipStone
import PlayerGodWeapon
import NetPackCommon
import ShareDefine
import PyGameData
@@ -61,18 +63,22 @@
    state = actWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
    cfgID = actWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
    passlv = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TrialTower_PassLV)
    isOk = AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Tower, passlv, False)
    AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Login, 1)
    playerWeekPartyID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyID, 0, ChConfig.Def_PDictType_WeekParty)  # 玩家身上的活动ID
    if not isOk and state:
    if state:
        #每天都要触发
        AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Tower, passlv, False, True, False)
        AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Login, 1, False, False)
        AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Stone, Operate_EquipStone.GetTotalStoneLV(curPlayer), False, True, False)
        AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_GodWeapon, PlayerGodWeapon.GetGodWeaponTotalLV(curPlayer), False, True, False)
        SyncWeekPartyPlayerInfo(curPlayer)
    playerWeekPartyID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyID, 0, ChConfig.Def_PDictType_WeekParty)  # 玩家身上的活动ID
    # 活动ID 相同的话不处理
    if cfgID == playerWeekPartyID:
        #GameWorld.DebugLog("周狂欢活动ID不变,不处理!", curPlayer.GetPlayerID())
        return
    CheckWeekPartyActionCnt(curPlayer)
    # 未领取的奖励邮件发放
    __SendWeekPartyMail(curPlayer, playerWeekPartyID)
    if playerWeekPartyID:
        __SendWeekPartyMail(curPlayer, playerWeekPartyID)
    
    if not cfgID:
        GameWorld.DebugLog('    周狂欢活动重置!')
@@ -130,7 +136,7 @@
    return
def AddWeekPartyActionCnt(curPlayer, actionID, addCnt=1, isAdd=True):
def AddWeekPartyActionCnt(curPlayer, actionID, addCnt=1, isAdd=True, isCompatible=False, isSync=True):
    '''增加周狂欢相关活动完成次数'''
    #判断活动是否开启
    if not addCnt:
@@ -148,7 +154,7 @@
    dayIndex = actWeekPartyInfo.get(ShareDefine.ActKey_DayIndex, 0)
    if dayIndex >= len(templateIDList):
        return
    if actionID == ChConfig.Def_WPAct_GiftBag:
    if actionID in ChConfig.AheadFinishWPActList:
        isFind = False
        for day, dayTidList in enumerate(templateIDList[dayIndex:]):
            findTid = 0
@@ -189,6 +195,8 @@
            return
        updTimes = curTimes + addCnt
    else:
        if not isCompatible and addCnt != totalTimes:
            return
        updTimes = min(addCnt, totalTimes)
    realAddCnt = updTimes - curTimes
    if realAddCnt <= 0:
@@ -201,10 +209,48 @@
    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))
    SyncWeekPartyPlayerInfo(curPlayer, dayIndex, findTid)
    if isSync:
        SyncWeekPartyPlayerInfo(curPlayer, dayIndex, findTid)
    return True
def CheckWeekPartyActionCnt(curPlayer):
    ipyDataMgr = IpyGameDataPY.IPY_Data()
    for actionType in ChConfig.AheadFinishWPActList:
        if actionType == ChConfig.Def_WPAct_Horse:
            for i in xrange(ipyDataMgr.GetHorseCount()):
                ipyData = ipyDataMgr.GetHorseByIndex(i)
                index = ipyData.GetHorseID()
                lv = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Horser_LV % index, 0, ChConfig.Def_PDictType_Horse)
                if lv:
                    AddWeekPartyActionCnt(curPlayer, actionType, index, False)
        elif actionType == ChConfig.Def_WPAct_Pet:
            petDataPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptPet)
            for petDataIndex in range(petDataPack.GetCount()):
                petItem = petDataPack.GetAt(petDataIndex)
                if petItem.IsEmpty():
                    continue
                petNPCID = petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
                AddWeekPartyActionCnt(curPlayer, actionType, petNPCID, False)
        elif actionType == ChConfig.Def_WPAct_Dogz:
            for i in xrange(ipyDataMgr.GetDogzCount()):
                ipyData = ipyDataMgr.GetDogzByIndex(i)
                if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, i):
                    AddWeekPartyActionCnt(curPlayer, actionType, ipyData.GetDogzID(), False)
        elif actionType == ChConfig.Def_WPAct_Rune:
            runeHoleCnt = IpyGameDataPY.GetFuncCfg("RuneUnlock", 4)
            for holeNum in xrange(1, runeHoleCnt + 1):
                runeData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_Data % holeNum, 0)
                if not runeData:
                    continue
                runeItemID = ItemControler.GetRuneItemID(runeData)
                itemData = GameWorld.GetGameData().GetItemByTypeID(runeItemID)
                if not itemData:
                    continue
                itemColor = itemData.GetItemColor()
                AddWeekPartyActionCnt(curPlayer, actionType, itemColor, False)
    return
def GetWeekPartyActionAward(curPlayer, day, templateID):
    '''领取周狂欢活动奖励'''
    templateID = GameWorld.ToIntDef(templateID, 0)