From ccaf2f02905ec635332e2d22cb7bd5b77b6a7bbb Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期一, 22 十月 2018 21:10:34 +0800
Subject: [PATCH] 4282 【主干】【1.1.0】【后端】新增物品效果:获得X法宝X经验 4280 【主干】【1.1.0】【后端】开服触发成就类型

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py |  135 +++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 130 insertions(+), 5 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
index 7446ba6..c6ed964 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
@@ -37,6 +37,13 @@
 import datetime
 import time
 import math
+import ChEquip
+import PlayerRune
+import Operate_EquipStone
+import Operate_EquipWash
+import Operate_EquipSuitCompose
+import PlayerDogz
+import QuestCommon
 
 
 ## 获取成就字典信息值
@@ -234,22 +241,50 @@
         正式上线后,成就的修改或者增加,一般是增加新成就,则需要对老玩家成就版本进行校正,检查成就完成情况
         成就版本号递增
     '''
-    Versions = 1 #版本号,往上增加
+    Versions = 2 #版本号,往上增加
     
     # 上线需要检查老玩家成就完成情况类型{成就类型:维护版本号, ...}
     NeedCheckSuccTypeDict = {
-                            ShareDefine.SuccType_GetMagicWeapon:1,
-                            ShareDefine.SuccType_PassRuneTower:1,
+                            ShareDefine.SuccType_GetMagicWeapon:2,
+                            ShareDefine.SuccType_PassRuneTower:2,
+                            ShareDefine.SuccType_GodWeapon:2,
+                            ShareDefine.SuccType_HorseAllLV:2,
+                            ShareDefine.SuccType_EquipPlusLV:2,
+                            ShareDefine.SuccType_EquipColorItem:2,
+                            ShareDefine.SuccType_EquipArmor:2,
+                            ShareDefine.SuccType_EquipWeapon:2,
+                            ShareDefine.SuccType_InlayRune:2,
+                            ShareDefine.SuccType_RuneLvUp:2,
+                            ShareDefine.SuccType_RealmlvUp:2,
+                            ShareDefine.SuccType_PetClassLV:2,
+                            ShareDefine.SuccType_InlayStone1:2,
+                            ShareDefine.SuccType_InlayStone2:2,
+                            ShareDefine.SuccType_XJMJGetExp:2,
+                            ShareDefine.SuccType_EquipWashLV1:2,
+                            ShareDefine.SuccType_EquipWashLV2:2,
+                            ShareDefine.SuccType_EquipWashLV3:2,
+                            ShareDefine.SuccType_EquipWing:2,
+                            ShareDefine.SuccType_MWSkillUp:2,
+                            ShareDefine.SuccType_EquipSuit:2,
+                            ShareDefine.SuccType_FamilyTechLV:2,
+                            ShareDefine.SuccType_AlchemyLV:2,
+                            ShareDefine.SuccType_VIPLV:2,
+                            ShareDefine.SuccType_StoneTotalLV:2,
+                            ShareDefine.SuccType_XBXZ:2,
+                            ShareDefine.SuccType_DogzBattle:2,
+                            ShareDefine.SuccType_DogzEquipPlus:2,
+                            ShareDefine.SuccType_MainTaskNode:2,
                              }
     
     curCheckVersion = GetPDictValue(curPlayer, ChConfig.Def_PDict_Success_CheckVersion)
     GameWorld.DebugLog("更新老玩家上线检查成就curCheckVersion=%s" % (curCheckVersion))
+    ipyDataMgr = IpyGameDataPY.IPY_Data()
     for succType, version in NeedCheckSuccTypeDict.items():
         
         if curCheckVersion >= version:
             continue
         if succType == ShareDefine.SuccType_GetMagicWeapon:
-            ipyDataMgr = IpyGameDataPY.IPY_Data()
+            
             for i in xrange(ipyDataMgr.GetTreasureCount()):
                 treasureIpyData = ipyDataMgr.GetTreasureByIndex(i)
                 magicWeaponID = treasureIpyData.GetID()
@@ -262,8 +297,98 @@
         elif succType == ShareDefine.SuccType_PassRuneTower:
             passlv = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TrialTower_PassLV)
             DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_PassRuneTower, 1, [passlv])
+        elif succType == ShareDefine.SuccType_GodWeapon:
+            maxType = ipyDataMgr.GetGodWeaponByIndex(ipyDataMgr.GetGodWeaponCount()-1).GetType()
+            for i in xrange(1, maxType + 1):
+                weaponLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GodWeaponLV % i)
+                UptateSuccessProgress(curPlayer, succType, weaponLV, [i])
+        elif succType == ShareDefine.SuccType_HorseAllLV:
+            ResetSuccessByType(curPlayer, succType)
+            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 not lv:
+                    continue
+                for rlv in xrange(1, lv+1):
+                    DoAddSuccessProgress(curPlayer, succType, 1, [index, rlv])
+        elif succType == ShareDefine.SuccType_EquipPlusLV:
+            ResetSuccessByType(curPlayer, succType)
+            for pType, indexList in ChConfig.Pack_EquipPart_CanPlusStar.items():
+                for i in indexList:
+                    equipPartStarLV = ChEquip.GetEquipPartStarLV(curPlayer, pType, i)
+                    for pluslv in xrange(1, equipPartStarLV+1):
+                        DoAddSuccessProgress(curPlayer, succType, 1, [pluslv])
+                    
+        elif succType in [ShareDefine.SuccType_EquipColorItem, ShareDefine.SuccType_EquipArmor, ShareDefine.SuccType_EquipWeapon, ShareDefine.SuccType_EquipWing]:
+            DoEquipSuccessLogic(curPlayer)
+        elif succType in [ShareDefine.SuccType_InlayRune, ShareDefine.SuccType_RuneLvUp]:
+            PlayerRune.DoRuneSuccessLogic(curPlayer)
+        elif succType == ShareDefine.SuccType_RealmlvUp:
+            UptateSuccessProgress(curPlayer, succType, curPlayer.GetOfficialRank())
+        elif succType == ShareDefine.SuccType_PetClassLV:
+            ResetSuccessByType(curPlayer, succType)
+            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)
+                classLV = petItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV)
+                for lv in xrange(classLV+1):
+                    DoAddSuccessProgress(curPlayer, succType, 1, [petNPCID, lv+1])
+                    
+        elif succType in [ShareDefine.SuccType_InlayStone1, ShareDefine.SuccType_InlayStone2, ShareDefine.SuccType_StoneTotalLV]:
+            Operate_EquipStone.DoStoneSuccess(curPlayer)
+        elif succType == ShareDefine.SuccType_XJMJGetExp:
+            expPointRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BZZD_TotalFightExpPoint)
+            DoAddSuccessProgress(curPlayer, succType, 1, [expPointRecord])
+        elif succType in [ShareDefine.SuccType_EquipWashLV1,ShareDefine.SuccType_EquipWashLV2,ShareDefine.SuccType_EquipWashLV3]:
+            Operate_EquipWash.EquipWashSuccess(curPlayer)
+        elif succType == ShareDefine.SuccType_MWSkillUp:
+            skillManager = curPlayer.GetSkillManager()
+            for i in range(0, skillManager.GetSkillCount()):
+                curSkill = skillManager.GetSkillByIndex(i)
+                if curSkill.GetFuncType() in [ChConfig.Def_SkillFuncType_FbSkill,ChConfig.Def_SkillFuncType_FbSPSkill]:
+                    curSkillLV = curSkill.GetSkillLV()
+                    UptateSuccessProgress(curPlayer, succType, curSkillLV, [curSkill.GetSkillTypeID()])
+            
+        elif succType == ShareDefine.SuccType_EquipSuit:
+            Operate_EquipSuitCompose.DoSuiteSuccess(curPlayer)
+        elif succType == ShareDefine.SuccType_FamilyTechLV:
+            techNeedLVDict = IpyGameDataPY.GetFuncEvalCfg('FamilyTechNeedLV', 1, {})
+            techIDList = techNeedLVDict.keys()
+            for techID in techIDList:
+                techLV = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTechLV % techID)
+                UptateSuccessProgress(curPlayer, succType, techLV, [techID])
+        elif succType == ShareDefine.SuccType_AlchemyLV:
+            alchemyLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyLV)
+            UptateSuccessProgress(curPlayer, succType, alchemyLV)
+        elif succType == ShareDefine.SuccType_VIPLV:
+            DoAddSuccessProgress(curPlayer, succType, 1, [curPlayer.GetVIPLv()])
+        elif succType == ShareDefine.SuccType_XBXZ:
+            ResetSuccessByType(curPlayer, succType)
+            for i in xrange(ipyDataMgr.GetXBXZCount()):
+                ipyData = ipyDataMgr.GetXBXZByIndex(i)
+                if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_XBXZAwardRecord, ipyData.GetID()):
+                    DoAddSuccessProgress(curPlayer, succType, 1, [ipyData.GetMWID()])
 
-        
+        elif succType == ShareDefine.SuccType_DogzBattle:
+            for i in xrange(ipyDataMgr.GetDogzCount()):
+                ipyData = ipyDataMgr.GetDogzByIndex(i)
+                if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, i):
+                    DoAddSuccessProgress(curPlayer, succType, 1, [ipyData.GetDogzID()])
+                    
+        elif succType == ShareDefine.SuccType_DogzEquipPlus:
+            ResetSuccessByType(curPlayer, succType)
+            DoAddSuccessProgress(curPlayer, succType, PlayerDogz.GetFightDogzTotalPlusLv(curPlayer))
+        elif succType == ShareDefine.SuccType_MainTaskNode: #只能处理主线任务
+            succInfoList = GetSuccDataMng().GetSuccDataByType(succType)
+            for succData in succInfoList:
+                missionID = succData.condition[0]
+                if QuestCommon.GetHadFinishMainMission(curPlayer, missionID):
+                    DoAddSuccessProgress(curPlayer, succType, 1, [missionID])
+            
     SetPDictValue(curPlayer, ChConfig.Def_PDict_Success_CheckVersion, Versions)
     GameWorld.DebugLog("更新老玩家上线检查成就updCheckVersions=%s" % (Versions))
     return

--
Gitblit v1.8.0