| | |
| | | import datetime
|
| | | import time
|
| | | import math
|
| | | import ChEquip
|
| | | import PlayerRune
|
| | | import Operate_EquipStone
|
| | | import Operate_EquipWash
|
| | | import Operate_EquipSuitCompose
|
| | | import PlayerDogz
|
| | | import QuestCommon
|
| | |
|
| | |
|
| | | ## 获取成就字典信息值
|
| | |
| | | 正式上线后,成就的修改或者增加,一般是增加新成就,则需要对老玩家成就版本进行校正,检查成就完成情况
|
| | | 成就版本号递增
|
| | | '''
|
| | | 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()
|
| | |
| | | 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))
|