From 33c902a503e4da79612405176498e10dcb2cdb1f Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 31 三月 2020 17:29:12 +0800
Subject: [PATCH] 8405 【后端】成就系统开发(优化按境界阶更新成就进度逻辑;增加多成就条件向下适配更新成就进度模式;坐骑成就修改;增加天星塔成就)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py | 30 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStar.py | 22 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 52 ++-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py | 278 +++++++++---------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py | 25 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py | 2
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 52 ++-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Success.py | 140 ++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWing.py | 8
12 files changed, 383 insertions(+), 234 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 633607c..9ca39b5 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -1523,7 +1523,7 @@
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
@@ -1539,8 +1539,8 @@
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
@@ -1551,8 +1551,8 @@
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
@@ -1583,9 +1583,9 @@
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
@@ -1595,17 +1595,17 @@
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
@@ -1656,7 +1656,8 @@
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)
@@ -1666,17 +1667,28 @@
# 不向下适配检查的成就类型(指相对较高成就条件不会增加较低成就条件的进度)
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]
@@ -1685,9 +1697,9 @@
#增加进度前需要重置的成就类型
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++用
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py
index ba3dab5..662e287 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py
@@ -169,18 +169,35 @@
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)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStar.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStar.py
index 20f2fd9..d664808 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStar.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStar.py
@@ -24,6 +24,7 @@
import DataRecordPack
import PlayerAuctionHouse
import IpyGameDataPY
+import PlayerSuccess
import GameWorld
import EventShell
import ChConfig
@@ -180,6 +181,9 @@
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)
@@ -297,3 +301,21 @@
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
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py
index 3a6faf5..b74c219 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py
@@ -255,7 +255,7 @@
# 记录开服活动宝石总等级
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
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py
index 9ebc49c..3d369a6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py
@@ -344,7 +344,7 @@
if CheckEquipWashLVUp(curPlayer, curEquip, equipPackindex, washLV, washData):
RefreshEquipWashAttr(curPlayer, classLV)
Sycn_EquipWashInfo(curPlayer, equipPackindex)
- EquipWashSuccess(curPlayer)
+ EquipWashSuccess(curPlayer, classLV)
else:
GameWorld.DebugLog("升级失败,有属性未达到最大值,无法升级!", playerID)
return
@@ -472,17 +472,21 @@
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
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Success.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Success.py
new file mode 100644
index 0000000..f187085
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Success.py
@@ -0,0 +1,140 @@
+#!/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
+
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py
index 0cdbd58..f335794 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py
@@ -31,6 +31,7 @@
import ChPlayer
import PlayerActivity
import PlayerBillboard
+import PlayerSuccess
g_runeTypeDict = {}
@@ -89,6 +90,8 @@
#任务
EventShell.EventRespons_SkyTowerCnt(curPlayer, floorID)
+ #通关符印塔成就
+ PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_PassSkyTower, floorID)
GameWorld.DebugLog(' 更新天星塔已通关数 %s' % floorID)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
index ce582b0..1c341a0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -796,6 +796,7 @@
if not self.PlayerCanEquipItem(curItem, True):
return -1
+ classLV = ItemCommon.GetItemClassLV(curItem)
equipPlace = curItem.GetEquipPlace()
curPlayer = self.__Player
@@ -812,7 +813,7 @@
result = self.SwitchEquip(curItem, equipPackIndex)
if result:
#穿戴某阶某品质的装备成就
- PlayerSuccess.DoEquipSuccessLogic(curPlayer)
+ PlayerSuccess.DoEquipSuccessLogic(curPlayer, classLV)
#换装宝石处理
Operate_EquipStone.DoMoveEquipStone(curPlayer, equipPackIndex)
EventShell.EventRespons_EquipItem(curPlayer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
index cf72660..33034be 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
@@ -35,6 +35,7 @@
import EventShell
import IpyGameDataPY
import CrossPlayerData
+import PlayerSuccess
import PlayerPet
@@ -494,6 +495,7 @@
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)
# 刷属性,更新排行榜
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 aceaebe..1d4901f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
@@ -240,42 +240,9 @@
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)
@@ -285,120 +252,8 @@
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)
GameWorld.DebugLog("更新老玩家上线检查成就updCheckVersions=%s" % (initGameWorldTime), curPlayer.GetID())
@@ -529,37 +384,111 @@
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
+
+ # 统计套装数
+ if curEquip.GetSuiteID():
+ suitConditionKey = (classLV, )
+ suitCountDict[suitConditionKey] = suitCountDict.get(suitConditionKey, 0) + 1
+
+ # 部位 成就 统计特殊部位
+ 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))
- 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])
-
- elif equipIndex == ShareDefine.retWing:
- DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipWing, 1, [classLV, itemColor])
+ if not isUpd:
+ return
+
+ # 同步更新信息
+ Sync_SuccessInfo(curPlayer, updIDList, False)
+
+ # 更新值后检查成就完成情况
+ __DoCheckSuccessFinish(curPlayer, successType, updsuccDataList)
return
@@ -629,7 +558,14 @@
# 可向下增加进度的, 仅配置值 <= 该值的可增加进度
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
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWing.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWing.py
index eec57fe..e28e859 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWing.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWing.py
@@ -238,18 +238,18 @@
# 更新翅膀精炼颜色
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):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 633607c..9ca39b5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -1523,7 +1523,7 @@
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
@@ -1539,8 +1539,8 @@
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
@@ -1551,8 +1551,8 @@
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
@@ -1583,9 +1583,9 @@
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
@@ -1595,17 +1595,17 @@
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
@@ -1656,7 +1656,8 @@
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)
@@ -1666,17 +1667,28 @@
# 不向下适配检查的成就类型(指相对较高成就条件不会增加较低成就条件的进度)
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]
@@ -1685,9 +1697,9 @@
#增加进度前需要重置的成就类型
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++用
--
Gitblit v1.8.0