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