From bb652eeae4e39ee66f342975a2804ae305f0f969 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 11 十二月 2020 10:26:41 +0800 Subject: [PATCH] 4869 【主干】【长尾】【BT】七日巡礼重置逻辑优化;运营活动所处天索引逻辑优化; --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWeekParty.py | 129 +++++++++++++++++++------------------------ 1 files changed, 57 insertions(+), 72 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWeekParty.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWeekParty.py index 58b713d..68531db 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWeekParty.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWeekParty.py @@ -41,6 +41,7 @@ # 活动中同步活动信息 SyncFeastWeekPartyInfo(curPlayer) if actCostRebateInfo.get(ShareDefine.ActKey_State): + AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Login, 1, False, False, False) SyncFeastWeekPartyPlayerInfo(curPlayer) return @@ -60,36 +61,32 @@ playerID = curPlayer.GetPlayerID() actFeastWeekPartyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastWeekParty, {}) - #FeastWeekPartyID = actFeastWeekPartyInfo.get(ShareDefine.ActKey_ID, 0) state = actFeastWeekPartyInfo.get(ShareDefine.ActKey_State, 0) + actID = actFeastWeekPartyInfo.get(ShareDefine.ActKey_ID, 0) cfgID = actFeastWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0) - passlv = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TrialTower_PassLV) - if state: - #每天都要触发 - AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Tower, passlv, False, True, False) - AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Login, 1, False, False) - AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Stone, Operate_EquipStone.GetTotalStoneLV(curPlayer), False, True, False) - AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_GodWeapon, PlayerGodWeapon.GetGodWeaponTotalLV(curPlayer), False, True, False) - SyncFeastWeekPartyPlayerInfo(curPlayer) - playerFeastWeekPartyID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyID, 0, ChConfig.Def_PDictType_FeastWeekParty) # 玩家身上的活动ID + playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyActID, 0, ChConfig.Def_PDictType_FeastWeekParty) # 玩家身上的活动ID + playerFeastWeekPartyID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyID, 0, ChConfig.Def_PDictType_FeastWeekParty) # 玩家身上的活动配置ID # 活动ID 相同的话不处理 - if cfgID == playerFeastWeekPartyID: - #GameWorld.DebugLog("节日巡礼活动ID不变,不处理!", curPlayer.GetPlayerID()) + if actID == playerActID: + GameWorld.DebugLog("节日巡礼活动ID不变,不处理!playerActID=%s" % playerActID, curPlayer.GetPlayerID()) + if state: + CheckFeastWeekPartyActionCnt(curPlayer, True) return - CheckFeastWeekPartyActionCnt(curPlayer) # 未领取的奖励邮件发放 if playerFeastWeekPartyID: __SendFeastWeekPartyMail(curPlayer, playerFeastWeekPartyID) - - if not cfgID: - GameWorld.DebugLog(' 节日巡礼活动重置!') - curPlayer.ClearNomalDict(ChConfig.Def_PDictType_FeastWeekParty) - - GameWorld.DebugLog("节日巡礼变更! state=%s,cfgID=%s,playerFeastWeekPartyID=%s" % (state, cfgID, playerFeastWeekPartyID), playerID) - - PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWeekPartyID, cfgID, ChConfig.Def_PDictType_FeastWeekParty) - SyncFeastWeekPartyInfo(curPlayer) + GameWorld.DebugLog(' 节日巡礼活动重置!') + curPlayer.ClearNomalDict(ChConfig.Def_PDictType_FeastWeekParty) + + GameWorld.DebugLog("节日巡礼变更! state=%s,actID=%s,cfgID=%s,playerFeastWeekPartyID=%s" % (state, actID, cfgID, playerFeastWeekPartyID), playerID) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyActID, actID, ChConfig.Def_PDictType_FeastWeekParty) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWeekPartyID, cfgID, ChConfig.Def_PDictType_FeastWeekParty) + if state: + CheckFeastWeekPartyActionCnt(curPlayer, False) + SyncFeastWeekPartyInfo(curPlayer) + SyncFeastWeekPartyPlayerInfo(curPlayer) + return True @@ -149,8 +146,9 @@ if not cfgID: return - if not state and actionID not in ChConfig.AheadFinishWPActList: + if not state: return + actBossIpyData = IpyGameDataPY.GetIpyGameData("ActFeastWeekParty", cfgID) if not actBossIpyData: return @@ -158,27 +156,6 @@ dayIndex = actFeastWeekPartyInfo.get(ShareDefine.ActKey_DayIndex, 0) if dayIndex >= len(templateIDList): return - if actionID in ChConfig.AheadFinishWPActList: - isFind = False - for day, dayTidList in enumerate(templateIDList[dayIndex:]): - findTid = 0 - for tid in dayTidList: - if tid / 100 == actionID: - findTid = tid - break - if not findTid: - continue - ipyData = IpyGameDataPY.GetIpyGameData('FeastWeekParty', findTid) - if not ipyData: - continue - totalTimes = ipyData.GetTotalTimes() - if addCnt != totalTimes: - continue - dayIndex = day + dayIndex - isFind = True - break - if not isFind: - return dayTidList = templateIDList[dayIndex] findTid = 0 @@ -217,35 +194,43 @@ SyncFeastWeekPartyPlayerInfo(curPlayer, dayIndex, findTid) return True - -def CheckFeastWeekPartyActionCnt(curPlayer): +def CheckFeastWeekPartyActionCnt(curPlayer, isSync): + ## 同步活动状态时需要触发的 + + # 灵宠激活 + 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) + AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Pet, petNPCID, False, isSync=isSync) + + # 出战神兽 ipyDataMgr = IpyGameDataPY.IPY_Data() - for actionType in ChConfig.AheadFinishWPActList: - if 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) - AddFeastWeekPartyActionCnt(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): - AddFeastWeekPartyActionCnt(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() - AddFeastWeekPartyActionCnt(curPlayer, actionType, itemColor, False) + for i in xrange(ipyDataMgr.GetDogzCount()): + ipyData = ipyDataMgr.GetDogzByIndex(i) + if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, i): + AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Dogz, ipyData.GetDogzID(), False, isSync=isSync) + + # 穿戴某品质符印 + 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() + AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Rune, itemColor, False, isSync=isSync) + + AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Login, 1, False, False, isSync) + passlv = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TrialTower_PassLV) + AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Tower, passlv, False, True, isSync) + AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Stone, Operate_EquipStone.GetTotalStoneLV(curPlayer), False, True, isSync) + AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_GodWeapon, PlayerGodWeapon.GetGodWeaponTotalLV(curPlayer), False, True, isSync) return def GetFeastWeekPartyActionAward(curPlayer, day, templateID): -- Gitblit v1.8.0