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