8405 【后端】成就系统开发(优化按境界阶更新成就进度逻辑;增加多成就条件向下适配更新成就进度模式;坐骑成就修改;增加天星塔成就)
| | |
| | | SuccType_KirinHomeEx, #通关麒麟之府X次成就7
|
| | | SuccType_GodWeapon, # x神器达到X级成就8
|
| | | SuccType_XXX9, # 废弃9
|
| | | SuccType_HorseAllLV, # X坐骑等级达到XX级 10
|
| | | SuccType_HorseAllLV, # 坐骑等级达到X级 10
|
| | | SuccType_XXX11, # 废弃11
|
| | | SuccType_KillBossHomeBoss, # BOSS之家BOSS击杀成就12
|
| | | SuccType_XXX13, # 废弃13
|
| | |
| | | SuccType_XXX23 , # 废弃23
|
| | | SuccType_XXX24 , # 废弃24
|
| | | SuccType_XXX25, # 废弃25
|
| | | SuccType_EquipPlus, # 强化x次成就26
|
| | | SuccType_EquipPlusLV, # x件装备强化等级达到x级27 (已废弃)
|
| | | SuccType_EquipPlus, # x件x阶x强化等级 26
|
| | | SuccType_XXX27, # 废弃27
|
| | | SuccType_KillWorldBoss, # 击杀世界bossx次成就(有伤害就算)28
|
| | | SuccType_XXX29, # 废弃29
|
| | | SuccType_PassWagicWeapon, # 通关法宝副本30
|
| | |
| | | SuccType_Pray, # 祈祷x次35
|
| | | SuccType_KillSpecificNPC, # 击杀特定NPC36
|
| | | SuccType_XXX37, # 废弃37
|
| | | SuccType_XXX38, # 废弃38
|
| | | SuccType_EquipColorItem, #穿戴某阶某品质的装备成就39
|
| | | SuccType_EquipPlace, # x件x阶x部位 38
|
| | | SuccType_EquipColorItem, # x件x阶x品质 39
|
| | | SuccType_XXX40, #废弃40
|
| | | SuccType_XXX41, #废弃41
|
| | | SuccType_PassRuneTower, #通关符印塔成就42
|
| | |
| | | SuccType_ChaosDemon, #混乱妖域X人以上队伍X评级通关67
|
| | | SuccType_XXX68, #废弃68
|
| | | SuccType_CompoundItemEx, #物品X的合成成功X次69
|
| | | SuccType_EquipWashLV1, #武器洗练X级(主手+副手)70
|
| | | SuccType_EquipWashLV2, #防具洗练X级(防具5件)71
|
| | | SuccType_EquipWashLV3, #仙器洗练X级(仙器3件)72
|
| | | SuccType_EquipWash, #x件x阶x洗练等级 70
|
| | | SuccType_XXX71, #废弃71
|
| | | SuccType_XXX72, #废弃72
|
| | | SuccType_XXX73, #废弃73
|
| | | SuccType_XXX74, #废弃74
|
| | | SuccType_XXX75, #废弃75
|
| | |
| | | SuccType_DujieFBHelpPass, #渡劫助战成功X次 79
|
| | | SuccType_XXX80, #废弃 80
|
| | | SuccType_FBEncourage, #x副本累计鼓舞X次 81
|
| | | SuccType_EquipArmor, #穿戴X颜色X星级X阶防具一套(5件防具) 82
|
| | | SuccType_EquipWeapon, #穿戴X颜色X星级X阶武器一套(主手+副手) 83
|
| | | SuccType_EquipStar, #x件x阶x星 82
|
| | | SuccType_XXX83, #废弃 83
|
| | | SuccType_XXX84, #废弃 84
|
| | | SuccType_XXX85, #废弃85
|
| | | SuccType_XXX86, #废弃 86
|
| | | SuccType_XXX87, #废弃 87
|
| | | SuccType_XXX88, #废弃 88
|
| | | SuccType_XXX89, #仙盟宴会答题X题 89
|
| | | SuccType_EquipWing, #穿戴X阶X品质羽翼 90
|
| | | SuccType_XXX89, #废弃 89
|
| | | SuccType_XXX90, #废弃 90
|
| | | SuccType_MWSkillUp, #X法宝潜力技能提升X级 91
|
| | | SuccType_EquipSuit, #套装 X件X阶普通(强化)防具套装 92
|
| | | SuccType_EquipSuit, # X件X阶套装 92
|
| | | SuccType_TalkFamily, # 仙盟频道发言93
|
| | | SuccType_UseItem, # 使用X物品X次94
|
| | | SuccType_XXX95, # 废弃95
|
| | |
| | | SuccType_FeastRedPack_Dice, # 节日红包 - 天机摇骰子x次 140
|
| | | SuccType_FeastRedPack_CrossPK, # 节日红包 - 跨服PK x次 141
|
| | | SuccType_FeastRedPack_FBSweep, # 节日红包 - 副本扫荡 x次 142
|
| | | ) = range(1, 143)
|
| | | SuccType_PassSkyTower, #通关天星塔 143
|
| | | ) = range(1, 144)
|
| | |
|
| | | # 节日红包成就类型
|
| | | FeastRedPackSuccessTypeList = range(SuccType_FeastRedPack_TalkWorld, SuccType_FeastRedPack_FBSweep + 1)
|
| | |
| | |
|
| | | # 不向下适配检查的成就类型(指相对较高成就条件不会增加较低成就条件的进度)
|
| | | UnDownCheckSuccessTypeList = [
|
| | | SuccType_EquipPlusLV, SuccType_GodWeapon,
|
| | | SuccType_GodWeapon,
|
| | | SuccType_MainTaskNode,SuccType_PassWagicWeapon,
|
| | | SuccType_KillSpecificNPC, SuccType_UseStoveBylv,
|
| | | SuccType_Pray,SuccType_PetClassLV,
|
| | | SuccType_HorseAllLV, SuccType_QueenRelics,SuccType_XMZZConWin,
|
| | | SuccType_EquipSuit,SuccType_Collect,SuccType_DogzBattle,
|
| | | SuccType_QueenRelics,SuccType_XMZZConWin,
|
| | | SuccType_Collect,SuccType_DogzBattle,
|
| | | SuccType_UseItem,SuccType_FamilyTechLV,
|
| | | SuccType_GetSpecialItem,SuccType_GetMagicWeapon,SuccType_FBEncourage,SuccType_XBXZ,
|
| | | SuccType_FeastRedPack_KillSpecificNPC,SuccType_FeastRedPack_KillBoss,
|
| | | SuccType_FeastRedPack_EnterMap, SuccType_FeastRedPack_FBSweep,
|
| | | ]
|
| | |
|
| | | # 部分参数不向下适配检查的成就类型,此配置的类型不能在 UnDownCheckSuccessTypeList 里 {类型:[不向下适配的参数索引, ...], ...}
|
| | | PartUnDownCheckSuccessTypeInfo = {
|
| | | SuccType_EquipSuit:[0], # 阶不向下适配
|
| | | SuccType_EquipPlace:[0,1], # 阶、部位不向下适配
|
| | | SuccType_EquipColorItem:[0], # 阶不向下适配
|
| | | SuccType_EquipPlus:[0], # 阶不向下适配
|
| | | SuccType_EquipWash:[0], # 阶不向下适配
|
| | | SuccType_EquipStar:[0], # 阶不向下适配
|
| | | }
|
| | |
|
| | | #传进来的条件满足配置的条件列表中的一个就行的成就类型
|
| | | ContainSuccessTypeList = [SuccType_CompoundItemEx, SuccType_PickUpItem, SuccType_MWSkillUp]
|
| | |
|
| | |
| | |
|
| | | #增加进度前需要重置的成就类型
|
| | | NeedResetSuccessTypeList = [
|
| | | SuccType_InlayStone1,SuccType_InlayStone2,SuccType_EquipSuit,SuccType_InlayRune,
|
| | | SuccType_EquipColorItem,SuccType_EquipArmor,SuccType_EquipWeapon,SuccType_DogzEquipPlus,
|
| | | SuccType_HorseAllLV, SuccType_EquipPlusLV,SuccType_PetClassLV,SuccType_InlayGatherSoul,
|
| | | SuccType_InlayStone1,SuccType_InlayStone2,SuccType_InlayRune,
|
| | | SuccType_DogzEquipPlus,
|
| | | SuccType_PetClassLV,SuccType_InlayGatherSoul,
|
| | | ]
|
| | |
|
| | | # 聊天类型, 从100开始, 前100个给c++用
|
| | |
| | | PlayerControl.WorldNotify(0, "StrengthenCongratulation", msgParamList)
|
| | |
|
| | | classLV = ItemCommon.GetItemClassLV(curEquip)
|
| | | # 成就
|
| | | #PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipPlusLV, 1, [updPlusLV])
|
| | |
|
| | | DoLogic_OnEquipPartStarLVChange(curPlayer, packType, classLV)
|
| | | # 增加强化成就
|
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipPlus, 1)
|
| | | # 强化成就
|
| | | __UpdateEquipPlusSuccess(curPlayer, classLV)
|
| | | EventShell.EventRespons_EquipPlus(curPlayer, classLV, updPlusLV)
|
| | |
|
| | | # 开服活动数据
|
| | | #OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_Plus, ChEquip.GetTotalPlusLV(curPlayer))
|
| | | return
|
| | |
|
| | | def __UpdateEquipPlusSuccess(curPlayer, classLV):
|
| | | ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'ClassLV':classLV}, True)
|
| | | if not ipyDataList:
|
| | | return
|
| | | |
| | | packType = IPY_GameWorld.rptEquip
|
| | | plusLVCountDict = {}
|
| | | for ipyData in ipyDataList:
|
| | | index = ipyData.GetGridIndex()
|
| | | plusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
|
| | | if not plusLV:
|
| | | continue
|
| | | conditionKey = (classLV, plusLV)
|
| | | plusLVCountDict[conditionKey] = plusLVCountDict.get(conditionKey, 0) + 1
|
| | | |
| | | #GameWorld.DebugLog("强化成就数据: classLV=%s,plusLVCountDict=%s" % (classLV, plusLVCountDict))
|
| | | PlayerSuccess.UpdateSuccessProgressByConditions(curPlayer, ShareDefine.SuccType_EquipPlus, plusLVCountDict)
|
| | | return
|
| | |
|
| | | def DoLogic_OnEquipPartStarLVChange(curPlayer, packType, classLV):
|
| | | #先刷装备BUFF 再计算属性
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrActivatyNotify, ChConfig.Def_AttrActivatyNotify_Plus)
|
| | |
| | | import DataRecordPack
|
| | | import PlayerAuctionHouse
|
| | | import IpyGameDataPY
|
| | | import PlayerSuccess
|
| | | import GameWorld
|
| | | import EventShell
|
| | | import ChConfig
|
| | |
| | | updPartStar = ChEquip.GetEquipPartStar(curPlayer, equipPackIndex)
|
| | | GameWorld.DebugLog(" 装备升星 equipPackIndex=%s result=%s,curPartStar=%s,updPartStar=%s" % (equipPackIndex, result, curPartStar, updPartStar), playerID)
|
| | |
|
| | | # 成就
|
| | | EquipStarSuccess(curPlayer, classLV)
|
| | | |
| | | # 星级变更时处理
|
| | | # 刷新属性
|
| | | ChEquip.RefreshPlayerEquipAttribute(curPlayer, classLV)
|
| | |
| | | return curRate, delEquipGUIDDict, delItemInfoDict, lackItemCostMoney
|
| | |
|
| | |
|
| | | def EquipStarSuccess(curPlayer, classLV):
|
| | | ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'ClassLV':classLV}, True)
|
| | | if not ipyDataList:
|
| | | return
|
| | | |
| | | starCountDict = {}
|
| | | for ipyData in ipyDataList:
|
| | | index = ipyData.GetGridIndex()
|
| | | equipStar = ChEquip.GetEquipPartStar(curPlayer, index)
|
| | | if not equipStar:
|
| | | continue
|
| | | conditionKey = (classLV, equipStar)
|
| | | starCountDict[conditionKey] = starCountDict.get(conditionKey, 0) + 1
|
| | | |
| | | #GameWorld.DebugLog("升星成就数据: classLV=%s,starCountDict=%s" % (classLV, starCountDict))
|
| | | PlayerSuccess.UpdateSuccessProgressByConditions(curPlayer, ShareDefine.SuccType_EquipStar, starCountDict)
|
| | | return
|
| | |
|
| | |
| | |
|
| | | # 记录开服活动宝石总等级
|
| | | OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_StoneLV, totalStoneLV)
|
| | | PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_StoneTotalLV, totalStoneLV)
|
| | | #PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_StoneTotalLV, totalStoneLV)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Stone, totalStoneLV, False, True)
|
| | | return
|
| | |
|
| | |
| | | if CheckEquipWashLVUp(curPlayer, curEquip, equipPackindex, washLV, washData):
|
| | | RefreshEquipWashAttr(curPlayer, classLV)
|
| | | Sycn_EquipWashInfo(curPlayer, equipPackindex)
|
| | | EquipWashSuccess(curPlayer)
|
| | | EquipWashSuccess(curPlayer, classLV)
|
| | | else:
|
| | | GameWorld.DebugLog("升级失败,有属性未达到最大值,无法升级!", playerID)
|
| | | return
|
| | |
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
|
| | | return
|
| | |
|
| | | def EquipWashSuccess(curPlayer):
|
| | | # succList = [ShareDefine.SuccType_EquipWashLV1,ShareDefine.SuccType_EquipWashLV2,ShareDefine.SuccType_EquipWashLV3]
|
| | | # for washType in range(1, Def_EquipWashMaxType + 1):
|
| | | # washTypeLV = 999
|
| | | # placeList = GetEquipWashPlaceList(washType)
|
| | | # for equipPlace in placeList:
|
| | | # washLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipWashLV % equipPlace)
|
| | | # washTypeLV = min(washTypeLV, washLV)
|
| | | # |
| | | # if not washTypeLV:
|
| | | # continue
|
| | | # PlayerSuccess.DoAddSuccessProgress(curPlayer, succList[washType-1], 1, [washTypeLV])
|
| | | def EquipWashSuccess(curPlayer, classLV):
|
| | | ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'ClassLV':classLV}, True)
|
| | | if not ipyDataList:
|
| | | return
|
| | | |
| | | washLVCountDict = {}
|
| | | for ipyData in ipyDataList:
|
| | | index = ipyData.GetGridIndex()
|
| | | washLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipWashLV % index)
|
| | | if not washLV:
|
| | | continue
|
| | | conditionKey = (classLV, washLV)
|
| | | washLVCountDict[conditionKey] = washLVCountDict.get(conditionKey, 0) + 1
|
| | | |
| | | #GameWorld.DebugLog("洗练成就数据: classLV=%s,washLVCountDict=%s" % (classLV, washLVCountDict))
|
| | | PlayerSuccess.UpdateSuccessProgressByConditions(curPlayer, ShareDefine.SuccType_EquipWash, washLVCountDict)
|
| | | return
|
| | |
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package GM.Commands.Success
|
| | | #
|
| | | # @todo:成就
|
| | | # @author hxp
|
| | | # @date 2020-03-31
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 成就
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2020-03-31 18:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import ChConfig
|
| | | import ShareDefine
|
| | | import PlayerSuccess
|
| | | import GameWorld
|
| | |
|
| | | #逻辑实现
|
| | | ## GM命令执行入口
|
| | | # @param curPlayer 当前玩家
|
| | | # @param msgList 参数列表 [npcID]
|
| | | # @return None
|
| | | # @remarks 函数详细说明.
|
| | | def OnExec(curPlayer, msgList):
|
| | | if not msgList:
|
| | | GameWorld.DebugAnswer(curPlayer, "重置所有成就: Success 0")
|
| | | GameWorld.DebugAnswer(curPlayer, "重置指定成就: Success 0 类型")
|
| | | GameWorld.DebugAnswer(curPlayer, "重置成就领奖: Success w 类型")
|
| | | GameWorld.DebugAnswer(curPlayer, "输出成就数据: Success p 类型")
|
| | | #GameWorld.DebugAnswer(curPlayer, "增加成就进度: Success a 类型 进度 条件(选填)")
|
| | | #GameWorld.DebugAnswer(curPlayer, "更新成就进度: Success u 类型 进度 条件(选填)")
|
| | | return
|
| | | |
| | | cmdType = msgList[0]
|
| | | # 重置数据
|
| | | if cmdType == 0:
|
| | | __DoResetSuccess(curPlayer, msgList)
|
| | | # 重置领奖
|
| | | elif cmdType == "w":
|
| | | __DoResetSuccessAward(curPlayer, msgList)
|
| | | # 输出数据
|
| | | elif cmdType == "p":
|
| | | __DoPrintSuccess(curPlayer, msgList)
|
| | | # 增加进度
|
| | | elif cmdType == "a":
|
| | | pass
|
| | | # 更新进度
|
| | | elif cmdType == "u":
|
| | | pass
|
| | | |
| | | return
|
| | |
|
| | | def __DoResetSuccess(curPlayer, msgList):
|
| | | ## 重置成就数据
|
| | | if len(msgList) > 1:
|
| | | typeList = [msgList[1]]
|
| | | else:
|
| | | typeList = ShareDefine.SuccessTypeList
|
| | | resetTypeList = []
|
| | | for succType in typeList:
|
| | | succDataList = PlayerSuccess.GetSuccDataMng().GetSuccDataByType(succType)
|
| | | if not succDataList:
|
| | | continue
|
| | | |
| | | for succDataObj in succDataList:
|
| | | succID = succDataObj.succID
|
| | | if succType not in resetTypeList:
|
| | | resetTypeList.append(succType)
|
| | | PlayerSuccess.SetSuccHasGot(curPlayer, succID, False)
|
| | | PlayerSuccess.SetSuccFinish(curPlayer, succID, False)
|
| | | PlayerSuccess.SetPDictValue(curPlayer, ChConfig.Def_PDict_Success_LastDay % (succID), 0)
|
| | | PlayerSuccess.SetSuccFinishValue(curPlayer, succType, succDataObj.condition, 0)
|
| | | |
| | | # 老玩家上线检查情况
|
| | | PlayerSuccess.SetPDictValue(curPlayer, ChConfig.Def_PDict_Success_CheckVersion, 0)
|
| | | # 同步成就信息
|
| | | PlayerSuccess.Sync_SuccessInfo(curPlayer, [], True)
|
| | | # 同步成就领奖记录
|
| | | PlayerSuccess.Sync_SuccTypeIndexAwardRecord(curPlayer, [], True)
|
| | | GameWorld.DebugAnswer(curPlayer, "重置成就类型:%s" % resetTypeList)
|
| | | return
|
| | |
|
| | | def __DoResetSuccessAward(curPlayer, msgList):
|
| | | ## 重置成就领奖
|
| | | if len(msgList) > 1:
|
| | | typeList = [msgList[1]]
|
| | | else:
|
| | | typeList = ShareDefine.SuccessTypeList
|
| | | |
| | | resetIDList = []
|
| | | for succType in typeList:
|
| | | succDataList = PlayerSuccess.GetSuccDataMng().GetSuccDataByType(succType)
|
| | | if not succDataList:
|
| | | continue
|
| | | |
| | | for succDataObj in succDataList:
|
| | | succID = succDataObj.succID
|
| | | if not PlayerSuccess.GetSuccHasGot(curPlayer, succID):
|
| | | continue
|
| | | PlayerSuccess.SetSuccHasGot(curPlayer, succID, False)
|
| | | resetIDList.append(succID)
|
| | | |
| | | # 同步成就领奖记录
|
| | | PlayerSuccess.Sync_SuccTypeIndexAwardRecord(curPlayer, resetIDList, True)
|
| | | GameWorld.DebugAnswer(curPlayer, "重置成就ID领奖:%s" % resetIDList)
|
| | | return
|
| | |
|
| | | def __DoPrintSuccess(curPlayer, msgList):
|
| | | ## 输出成就数据
|
| | | if len(msgList) > 1:
|
| | | typeList = [msgList[1]]
|
| | | else:
|
| | | typeList = ShareDefine.SuccessTypeList
|
| | | GameWorld.DebugAnswer(curPlayer, "--- 输出有进度的成就数据 ---")
|
| | | for succType in typeList:
|
| | | succDataList = PlayerSuccess.GetSuccDataMng().GetSuccDataByType(succType)
|
| | | if not succDataList:
|
| | | continue
|
| | | printType = False
|
| | | for succDataObj in succDataList:
|
| | | succID = succDataObj.succID
|
| | | value = PlayerSuccess.GetSuccFinishValue(curPlayer, succType, succDataObj.condition)
|
| | | if not value:
|
| | | continue
|
| | | if not printType:
|
| | | printType = True
|
| | | GameWorld.DebugAnswer(curPlayer, "成就类型: %s" % succType)
|
| | | isFinish = PlayerSuccess.GetSuccIsFinish(curPlayer, succID)
|
| | | hasGot = PlayerSuccess.GetSuccHasGot(curPlayer, succID)
|
| | | GameWorld.DebugAnswer(curPlayer, " id=%s 条件:%s 进度:%s/%s 完成:%s 领奖:%s" |
| | | % (succID, succDataObj.condition, value, succDataObj.needCnt, isFinish, hasGot))
|
| | | |
| | | return
|
| | |
|
| | |
|
| | |
| | | import ChPlayer
|
| | | import PlayerActivity
|
| | | import PlayerBillboard
|
| | | import PlayerSuccess
|
| | |
|
| | |
|
| | | g_runeTypeDict = {}
|
| | |
| | |
|
| | | #任务
|
| | | EventShell.EventRespons_SkyTowerCnt(curPlayer, floorID)
|
| | | #通关符印塔成就
|
| | | PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_PassSkyTower, floorID)
|
| | | GameWorld.DebugLog(' 更新天星塔已通关数 %s' % floorID)
|
| | | return
|
| | |
|
| | |
| | | if not self.PlayerCanEquipItem(curItem, True):
|
| | | return -1
|
| | |
|
| | | classLV = ItemCommon.GetItemClassLV(curItem)
|
| | | equipPlace = curItem.GetEquipPlace()
|
| | |
|
| | | curPlayer = self.__Player
|
| | |
| | | result = self.SwitchEquip(curItem, equipPackIndex)
|
| | | if result:
|
| | | #穿戴某阶某品质的装备成就
|
| | | PlayerSuccess.DoEquipSuccessLogic(curPlayer)
|
| | | PlayerSuccess.DoEquipSuccessLogic(curPlayer, classLV)
|
| | | #换装宝石处理
|
| | | Operate_EquipStone.DoMoveEquipStone(curPlayer, equipPackIndex)
|
| | | EventShell.EventRespons_EquipItem(curPlayer)
|
| | |
| | | import EventShell
|
| | | import IpyGameDataPY
|
| | | import CrossPlayerData
|
| | | import PlayerSuccess
|
| | | import PlayerPet
|
| | |
|
| | |
|
| | |
| | | DataRecordPack.DR_NewHorseByClassUp(curPlayer, updClassLV, 0)
|
| | | # 记录开服活动马匹阶级
|
| | | #OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_Horse, updClassLV)
|
| | | PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_HorseAllLV, updClassLV)
|
| | |
|
| | | Sync_HorseClassData(curPlayer)
|
| | | # 刷属性,更新排行榜
|
| | |
| | | def __CheckOldPlayerSuccess(curPlayer):
|
| | | ''' 成就版本更新老玩家检查 每次启动服务后 玩家第一次上线检查成就完成情况
|
| | | '''
|
| | | #Versions = 2 #版本号,往上增加
|
| | | initGameWorldTime = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_InitGameWorldTime)
|
| | | # 上线需要检查老玩家成就完成情况类型{成就类型:维护版本号, ...}
|
| | | # 上线需要检查老玩家成就完成情况类型
|
| | | NeedCheckSuccTypeList = [
|
| | | ShareDefine.SuccType_GetMagicWeapon,
|
| | | ShareDefine.SuccType_PassRuneTower,
|
| | | ShareDefine.SuccType_GodWeapon,
|
| | | ShareDefine.SuccType_HorseAllLV,
|
| | | #ShareDefine.SuccType_EquipPlusLV,
|
| | | ShareDefine.SuccType_EquipColorItem,
|
| | | ShareDefine.SuccType_EquipArmor,
|
| | | ShareDefine.SuccType_EquipWeapon,
|
| | | ShareDefine.SuccType_InlayRune,
|
| | | ShareDefine.SuccType_RuneLvUp,
|
| | | ShareDefine.SuccType_RealmlvUp,
|
| | | ShareDefine.SuccType_PetClassLV,
|
| | | ShareDefine.SuccType_InlayStone1,
|
| | | ShareDefine.SuccType_InlayStone2,
|
| | | ShareDefine.SuccType_XJMJGetExp,
|
| | | ShareDefine.SuccType_EquipWashLV1,
|
| | | ShareDefine.SuccType_EquipWashLV2,
|
| | | ShareDefine.SuccType_EquipWashLV3,
|
| | | ShareDefine.SuccType_EquipWing,
|
| | | ShareDefine.SuccType_MWSkillUp,
|
| | | ShareDefine.SuccType_EquipSuit,
|
| | | ShareDefine.SuccType_FamilyTechLV,
|
| | | ShareDefine.SuccType_AlchemyLV,
|
| | | ShareDefine.SuccType_VIPLV,
|
| | | ShareDefine.SuccType_StoneTotalLV,
|
| | | ShareDefine.SuccType_XBXZ,
|
| | | ShareDefine.SuccType_DogzBattle,
|
| | | ShareDefine.SuccType_DogzEquipPlus,
|
| | | ShareDefine.SuccType_MainTaskNode,
|
| | | ShareDefine.SuccType_InlayGatherSoul,
|
| | | ShareDefine.SuccType_GatherSoulLvUp,
|
| | | ShareDefine.SuccType_UseStoveBylv,
|
| | | ]
|
| | |
|
| | | curCheckVersion = GetPDictValue(curPlayer, ChConfig.Def_PDict_Success_CheckVersion)
|
| | |
| | | GameWorld.DebugLog("更新老玩家上线检查成就curCheckVersion=%s" % (curCheckVersion))
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for succType in NeedCheckSuccTypeList:
|
| | | if succType == ShareDefine.SuccType_GetMagicWeapon:
|
| | | |
| | | for i in xrange(ipyDataMgr.GetTreasureCount()):
|
| | | treasureIpyData = ipyDataMgr.GetTreasureByIndex(i)
|
| | | magicWeaponID = treasureIpyData.GetID()
|
| | | isActive = PlayerMagicWeapon.GetIsActiveMagicWeapon(curPlayer, magicWeaponID)
|
| | | if not isActive:
|
| | | continue
|
| | | curMWLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MagicWeaponLV % magicWeaponID)
|
| | | for lv in xrange(curMWLV+1):
|
| | | DoAddSuccessProgress(curPlayer, succType, 1, [magicWeaponID, lv])
|
| | | 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:
|
| | | ResetSuccessByType(curPlayer, succType)
|
| | | 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_EquipPlusLV:
|
| | | ResetSuccessByType(curPlayer, succType)
|
| | | for pType, indexList in ChConfig.Pack_EquipPart_CanPlusStar.items():
|
| | | for i in indexList:
|
| | | equipPartStarLV = ChEquip.GetEquipPartPlusLV(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 in [ShareDefine.SuccType_InlayGatherSoul, ShareDefine.SuccType_GatherSoulLvUp]:
|
| | | PlayerGatherSoul.DoGatherSoulSuccessLogic(curPlayer)
|
| | | elif succType == ShareDefine.SuccType_RealmlvUp:
|
| | | ResetSuccessByType(curPlayer, succType)
|
| | | 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:
|
| | | ResetSuccessByType(curPlayer, succType)
|
| | | 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:
|
| | | ResetSuccessByType(curPlayer, succType)
|
| | | 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:
|
| | | ResetSuccessByType(curPlayer, succType)
|
| | | 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])
|
| | | elif succType == ShareDefine.SuccType_UseStoveBylv:
|
| | | ResetSuccessByType(curPlayer, succType)
|
| | | for i in xrange(ipyDataMgr.GetAttrFruitCount()):
|
| | | ipyData = ipyDataMgr.GetAttrFruitByIndex(i)
|
| | | fruitItemID = ipyData.GetID()
|
| | | hasUseCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AttrFruitEatCnt % fruitItemID)
|
| | | if ipyData.GetFuncID() == ShareDefine.Def_AttrFruitFunc_Stove:
|
| | | itemData = GameWorld.GetGameData().GetItemByTypeID(fruitItemID)
|
| | | if not itemData:
|
| | | continue
|
| | | DoAddSuccessProgress(curPlayer, succType, hasUseCnt, [itemData.GetLV()])
|
| | | pass
|
| | |
|
| | | DataRecordPack.DR_CheckOldPlayerSuccess(curPlayer)
|
| | | SetPDictValue(curPlayer, ChConfig.Def_PDict_Success_CheckVersion, initGameWorldTime)
|
| | |
| | | SetSuccFinishValue(curPlayer, succType, condition, 0)
|
| | | return
|
| | |
|
| | | def DoEquipSuccessLogic(curPlayer):
|
| | | def DoEquipSuccessLogic(curPlayer, classLV):
|
| | | #玩家当前可装备的装备类型
|
| | | ResetSuccessByType(curPlayer, ShareDefine.SuccType_EquipColorItem)
|
| | | ResetSuccessByType(curPlayer, ShareDefine.SuccType_EquipArmor)
|
| | | ResetSuccessByType(curPlayer, ShareDefine.SuccType_EquipWeapon)
|
| | |
|
| | | packType = IPY_GameWorld.rptEquip
|
| | | ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'ClassLV':classLV}, True)
|
| | | if not ipyDataList:
|
| | | return
|
| | |
|
| | | playerEquip = curPlayer.GetItemManager().GetPack(packType)
|
| | | for equipIndex in xrange(playerEquip.GetCount()):
|
| | | if equipIndex not in ShareDefine.RoleEquipType :
|
| | | continue
|
| | | |
| | | placeCountDict, colorCountDict, suitCountDict = {}, {}, {}
|
| | | playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
|
| | | for ipyData in ipyDataList:
|
| | | equipIndex = ipyData.GetGridIndex()
|
| | | curEquip = playerEquip.GetAt(equipIndex)
|
| | | if curEquip.IsEmpty():
|
| | | continue
|
| | | itemColor = curEquip.GetUserAttr(ShareDefine.Def_IudetItemColor)
|
| | | if not itemColor:
|
| | | itemPlace = curEquip.GetEquipPlace()
|
| | | |
| | | # 套装、颜色 成就 统计基础部位
|
| | | if itemPlace in ChConfig.EquipPlace_Base:
|
| | | itemColor = curEquip.GetItemColor()
|
| | | colorConditionKey = (classLV, itemColor)
|
| | | colorCountDict[colorConditionKey] = colorCountDict.get(colorConditionKey, 0) + 1
|
| | |
|
| | | itemQuality = curEquip.GetItemQuality()
|
| | | classLV = ItemCommon.GetItemClassLV(curEquip)
|
| | | if equipIndex not in [ShareDefine.retWing,ShareDefine.retGuard1,ShareDefine.retGuard2,ShareDefine.retHorse]:
|
| | | DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipColorItem, 1, [classLV, itemColor])
|
| | | if equipIndex in ChConfig.EquipPlace_BaseWeapon:
|
| | | DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipWeapon, 1, [itemColor, itemQuality, classLV])
|
| | | elif equipIndex in ChConfig.EquipPlace_BaseArmor:
|
| | | DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipArmor, 1, [itemColor, itemQuality, classLV])
|
| | | # 统计套装数
|
| | | if curEquip.GetSuiteID():
|
| | | suitConditionKey = (classLV, )
|
| | | suitCountDict[suitConditionKey] = suitCountDict.get(suitConditionKey, 0) + 1
|
| | |
|
| | | elif equipIndex == ShareDefine.retWing:
|
| | | DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipWing, 1, [classLV, itemColor])
|
| | | # 部位 成就 统计特殊部位
|
| | | elif itemPlace in ChConfig.EquipPlace_Special:
|
| | | placeConditionKey = (classLV, itemPlace)
|
| | | placeCountDict[placeConditionKey] = placeCountDict.get(placeConditionKey, 0) + 1
|
| | | |
| | | # 更新成就
|
| | | #GameWorld.DebugLog("装备阶部位成就数据: classLV=%s,placeCountDict=%s" % (classLV, placeCountDict))
|
| | | UpdateSuccessProgressByConditions(curPlayer, ShareDefine.SuccType_EquipPlace, placeCountDict)
|
| | | |
| | | #GameWorld.DebugLog("装备阶颜色成就数据: classLV=%s,colorCountDict=%s" % (classLV, colorCountDict))
|
| | | UpdateSuccessProgressByConditions(curPlayer, ShareDefine.SuccType_EquipColorItem, colorCountDict)
|
| | | |
| | | #GameWorld.DebugLog("装备阶套装成就数据: classLV=%s,suitCountDict=%s" % (classLV, suitCountDict))
|
| | | UpdateSuccessProgressByConditions(curPlayer, ShareDefine.SuccType_EquipSuit, suitCountDict)
|
| | | return
|
| | |
|
| | | def UpdateSuccessProgressByConditions(curPlayer, successType, conditionCountDict):
|
| | | if successType not in ShareDefine.SuccessTypeList:
|
| | | return
|
| | | succInfoList = GetSuccDataMng().GetSuccDataByType(successType)
|
| | | if not succInfoList:
|
| | | return
|
| | | updIDList = []
|
| | | updsuccDataList = []
|
| | | updConditionDict = {}
|
| | | |
| | | for condition, newCount in conditionCountDict.items():
|
| | | addCondList = [] # 不同的成就ID条件可能相同,只是最大进度不同,故传入的条件计数针对相同成就条件只能累加一次
|
| | | for succDataObj in succInfoList:
|
| | | cond = succDataObj.condition
|
| | | |
| | | tupleCond = tuple(cond) # 作为字典key用
|
| | | succID = succDataObj.succID
|
| | | needCnt = succDataObj.needCnt
|
| | | |
| | | if tupleCond not in updConditionDict:
|
| | | updConditionDict[tupleCond] = [cond, 0, 0] # [条件, 更新值, 最大进度值]
|
| | | updInfo = updConditionDict[tupleCond]
|
| | | if updInfo[2] < needCnt:
|
| | | updInfo[2] = needCnt
|
| | | |
| | | if not __CheckCanAddSuccess(curPlayer, succDataObj, list(condition)):
|
| | | continue
|
| | | |
| | | if succID not in updIDList:
|
| | | updIDList.append(succID)
|
| | | updsuccDataList.append(succDataObj)
|
| | | |
| | | if tupleCond not in addCondList:
|
| | | addCondList.append(tupleCond)
|
| | | updConditionDict[tupleCond][1] = updConditionDict[tupleCond][1] + newCount # 更新进度值
|
| | | |
| | | # 没有找到更新目标不处理
|
| | | #GameWorld.DebugLog(" updConditionDict=%s" % updConditionDict)
|
| | | #GameWorld.DebugLog(" updIDList=%s" % updIDList)
|
| | | if not updIDList:
|
| | | return
|
| | | |
| | | isUpd = False
|
| | | # 先更新成就记录值后再判断完成与否
|
| | | for cond, updCnt, maxCnt in updConditionDict.values():
|
| | | if not updCnt:
|
| | | continue
|
| | | updCnt = min(maxCnt, updCnt)
|
| | | if GetSuccFinishValue(curPlayer, successType, cond) == updCnt:
|
| | | continue
|
| | | isUpd = True
|
| | | SetSuccFinishValue(curPlayer, successType, cond, updCnt)
|
| | | #GameWorld.DebugLog(" successType=%s,cond=%s,updCnt=%s,maxCnt=%s" % (successType, cond, updCnt, maxCnt))
|
| | | |
| | | if not isUpd:
|
| | | return
|
| | | |
| | | # 同步更新信息
|
| | | Sync_SuccessInfo(curPlayer, updIDList, False)
|
| | | |
| | | # 更新值后检查成就完成情况
|
| | | __DoCheckSuccessFinish(curPlayer, successType, updsuccDataList)
|
| | | return
|
| | |
|
| | |
|
| | |
| | | # 可向下增加进度的, 仅配置值 <= 该值的可增加进度
|
| | | if not isUnDownCheck:
|
| | | isbreak = False
|
| | | undowncheckIndexList = [] # 不向下检查的条件索引
|
| | | if successType in ShareDefine.PartUnDownCheckSuccessTypeInfo:
|
| | | undowncheckIndexList = ShareDefine.PartUnDownCheckSuccessTypeInfo[successType]
|
| | | for i, num in enumerate(cond):
|
| | | if i in undowncheckIndexList:
|
| | | if num != condition[i]:
|
| | | isbreak = True
|
| | | break
|
| | | if num > condition[i]:
|
| | | isbreak = True
|
| | | break
|
| | |
| | | # 更新翅膀精炼颜色
|
| | | wingColorDict = wingAttrIpyData.GetItemColorInfo()
|
| | | curColor = curWing.GetUserAttr(ShareDefine.Def_IudetItemColor)
|
| | | isColorChange = False
|
| | | #isColorChange = False
|
| | | for color in wingColorDict:
|
| | | if updWingProgress >= wingColorDict[color] and color > curColor:
|
| | | curColor = color
|
| | | curWing.SetUserAttr(ShareDefine.Def_IudetItemColor, curColor)
|
| | | GameWorld.DebugLog(" 更新翅膀颜色: updWingProgress=%s,curColor=%s" % (updWingProgress, curColor))
|
| | | isColorChange = True
|
| | | #isColorChange = True
|
| | | maxRefineExp = wingAttrIpyData.GetMaxRefineExp()
|
| | | if curPlayer and wingProgress < maxRefineExp <= updWingProgress:
|
| | | PlayerControl.WorldNotify(0, "WingsRefinePerfect", [curPlayer.GetPlayerName(), curItemID, curWing.GetUserData()])
|
| | | if curPlayer and isColorChange:
|
| | | PlayerSuccess.DoEquipSuccessLogic(curPlayer)
|
| | | #if curPlayer and isColorChange:
|
| | | # PlayerSuccess.DoEquipSuccessLogic(curPlayer)
|
| | | return
|
| | |
|
| | | def GetWingRefineAttrData(itemID):
|
| | |
| | | SuccType_KirinHomeEx, #通关麒麟之府X次成就7
|
| | | SuccType_GodWeapon, # x神器达到X级成就8
|
| | | SuccType_XXX9, # 废弃9
|
| | | SuccType_HorseAllLV, # X坐骑等级达到XX级 10
|
| | | SuccType_HorseAllLV, # 坐骑等级达到X级 10
|
| | | SuccType_XXX11, # 废弃11
|
| | | SuccType_KillBossHomeBoss, # BOSS之家BOSS击杀成就12
|
| | | SuccType_XXX13, # 废弃13
|
| | |
| | | SuccType_XXX23 , # 废弃23
|
| | | SuccType_XXX24 , # 废弃24
|
| | | SuccType_XXX25, # 废弃25
|
| | | SuccType_EquipPlus, # 强化x次成就26
|
| | | SuccType_EquipPlusLV, # x件装备强化等级达到x级27 (已废弃)
|
| | | SuccType_EquipPlus, # x件x阶x强化等级 26
|
| | | SuccType_XXX27, # 废弃27
|
| | | SuccType_KillWorldBoss, # 击杀世界bossx次成就(有伤害就算)28
|
| | | SuccType_XXX29, # 废弃29
|
| | | SuccType_PassWagicWeapon, # 通关法宝副本30
|
| | |
| | | SuccType_Pray, # 祈祷x次35
|
| | | SuccType_KillSpecificNPC, # 击杀特定NPC36
|
| | | SuccType_XXX37, # 废弃37
|
| | | SuccType_XXX38, # 废弃38
|
| | | SuccType_EquipColorItem, #穿戴某阶某品质的装备成就39
|
| | | SuccType_EquipPlace, # x件x阶x部位 38
|
| | | SuccType_EquipColorItem, # x件x阶x品质 39
|
| | | SuccType_XXX40, #废弃40
|
| | | SuccType_XXX41, #废弃41
|
| | | SuccType_PassRuneTower, #通关符印塔成就42
|
| | |
| | | SuccType_ChaosDemon, #混乱妖域X人以上队伍X评级通关67
|
| | | SuccType_XXX68, #废弃68
|
| | | SuccType_CompoundItemEx, #物品X的合成成功X次69
|
| | | SuccType_EquipWashLV1, #武器洗练X级(主手+副手)70
|
| | | SuccType_EquipWashLV2, #防具洗练X级(防具5件)71
|
| | | SuccType_EquipWashLV3, #仙器洗练X级(仙器3件)72
|
| | | SuccType_EquipWash, #x件x阶x洗练等级 70
|
| | | SuccType_XXX71, #废弃71
|
| | | SuccType_XXX72, #废弃72
|
| | | SuccType_XXX73, #废弃73
|
| | | SuccType_XXX74, #废弃74
|
| | | SuccType_XXX75, #废弃75
|
| | |
| | | SuccType_DujieFBHelpPass, #渡劫助战成功X次 79
|
| | | SuccType_XXX80, #废弃 80
|
| | | SuccType_FBEncourage, #x副本累计鼓舞X次 81
|
| | | SuccType_EquipArmor, #穿戴X颜色X星级X阶防具一套(5件防具) 82
|
| | | SuccType_EquipWeapon, #穿戴X颜色X星级X阶武器一套(主手+副手) 83
|
| | | SuccType_EquipStar, #x件x阶x星 82
|
| | | SuccType_XXX83, #废弃 83
|
| | | SuccType_XXX84, #废弃 84
|
| | | SuccType_XXX85, #废弃85
|
| | | SuccType_XXX86, #废弃 86
|
| | | SuccType_XXX87, #废弃 87
|
| | | SuccType_XXX88, #废弃 88
|
| | | SuccType_XXX89, #仙盟宴会答题X题 89
|
| | | SuccType_EquipWing, #穿戴X阶X品质羽翼 90
|
| | | SuccType_XXX89, #废弃 89
|
| | | SuccType_XXX90, #废弃 90
|
| | | SuccType_MWSkillUp, #X法宝潜力技能提升X级 91
|
| | | SuccType_EquipSuit, #套装 X件X阶普通(强化)防具套装 92
|
| | | SuccType_EquipSuit, # X件X阶套装 92
|
| | | SuccType_TalkFamily, # 仙盟频道发言93
|
| | | SuccType_UseItem, # 使用X物品X次94
|
| | | SuccType_XXX95, # 废弃95
|
| | |
| | | SuccType_FeastRedPack_Dice, # 节日红包 - 天机摇骰子x次 140
|
| | | SuccType_FeastRedPack_CrossPK, # 节日红包 - 跨服PK x次 141
|
| | | SuccType_FeastRedPack_FBSweep, # 节日红包 - 副本扫荡 x次 142
|
| | | ) = range(1, 143)
|
| | | SuccType_PassSkyTower, #通关天星塔 143
|
| | | ) = range(1, 144)
|
| | |
|
| | | # 节日红包成就类型
|
| | | FeastRedPackSuccessTypeList = range(SuccType_FeastRedPack_TalkWorld, SuccType_FeastRedPack_FBSweep + 1)
|
| | |
| | |
|
| | | # 不向下适配检查的成就类型(指相对较高成就条件不会增加较低成就条件的进度)
|
| | | UnDownCheckSuccessTypeList = [
|
| | | SuccType_EquipPlusLV, SuccType_GodWeapon,
|
| | | SuccType_GodWeapon,
|
| | | SuccType_MainTaskNode,SuccType_PassWagicWeapon,
|
| | | SuccType_KillSpecificNPC, SuccType_UseStoveBylv,
|
| | | SuccType_Pray,SuccType_PetClassLV,
|
| | | SuccType_HorseAllLV, SuccType_QueenRelics,SuccType_XMZZConWin,
|
| | | SuccType_EquipSuit,SuccType_Collect,SuccType_DogzBattle,
|
| | | SuccType_QueenRelics,SuccType_XMZZConWin,
|
| | | SuccType_Collect,SuccType_DogzBattle,
|
| | | SuccType_UseItem,SuccType_FamilyTechLV,
|
| | | SuccType_GetSpecialItem,SuccType_GetMagicWeapon,SuccType_FBEncourage,SuccType_XBXZ,
|
| | | SuccType_FeastRedPack_KillSpecificNPC,SuccType_FeastRedPack_KillBoss,
|
| | | SuccType_FeastRedPack_EnterMap, SuccType_FeastRedPack_FBSweep,
|
| | | ]
|
| | |
|
| | | # 部分参数不向下适配检查的成就类型,此配置的类型不能在 UnDownCheckSuccessTypeList 里 {类型:[不向下适配的参数索引, ...], ...}
|
| | | PartUnDownCheckSuccessTypeInfo = {
|
| | | SuccType_EquipSuit:[0], # 阶不向下适配
|
| | | SuccType_EquipPlace:[0,1], # 阶、部位不向下适配
|
| | | SuccType_EquipColorItem:[0], # 阶不向下适配
|
| | | SuccType_EquipPlus:[0], # 阶不向下适配
|
| | | SuccType_EquipWash:[0], # 阶不向下适配
|
| | | SuccType_EquipStar:[0], # 阶不向下适配
|
| | | }
|
| | |
|
| | | #传进来的条件满足配置的条件列表中的一个就行的成就类型
|
| | | ContainSuccessTypeList = [SuccType_CompoundItemEx, SuccType_PickUpItem, SuccType_MWSkillUp]
|
| | |
|
| | |
| | |
|
| | | #增加进度前需要重置的成就类型
|
| | | NeedResetSuccessTypeList = [
|
| | | SuccType_InlayStone1,SuccType_InlayStone2,SuccType_EquipSuit,SuccType_InlayRune,
|
| | | SuccType_EquipColorItem,SuccType_EquipArmor,SuccType_EquipWeapon,SuccType_DogzEquipPlus,
|
| | | SuccType_HorseAllLV, SuccType_EquipPlusLV,SuccType_PetClassLV,SuccType_InlayGatherSoul,
|
| | | SuccType_InlayStone1,SuccType_InlayStone2,SuccType_InlayRune,
|
| | | SuccType_DogzEquipPlus,
|
| | | SuccType_PetClassLV,SuccType_InlayGatherSoul,
|
| | | ]
|
| | |
|
| | | # 聊天类型, 从100开始, 前100个给c++用
|