From b61fe6ed796dfeb1a7ed718d8099d6edb05f36f6 Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期二, 22 一月 2019 19:16:12 +0800 Subject: [PATCH] 6001 【后端】【1.5.100】七日巡礼增加条件 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py | 64 +++++++++++++++++++++++++++---- 1 files changed, 55 insertions(+), 9 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py index a5b411e..4dcdaaf 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py +++ b/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) -- Gitblit v1.8.0