From 7060867c004c3312f409a320623b40b42186f9af Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 20 十月 2025 09:29:43 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(A922同步等级信息)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Success.py |  129 +++++++++++++++----------------------------
 1 files changed, 45 insertions(+), 84 deletions(-)

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
index b2491a0..718f47b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Success.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Success.py
@@ -15,135 +15,96 @@
 #"""Version = 2020-03-31 18:00"""
 #-------------------------------------------------------------------------------
 
-import ChConfig
 import ShareDefine
 import PlayerSuccess
+import IpyGameDataPY
 import GameWorld
-import PlayerControl
 
-#逻辑实现
-## 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 类型 进度 条件(选填)")
+        GameWorld.DebugAnswer(curPlayer, "重置成就: Success 0 [类型 ...]")
+        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
+        succType = msgList[1] if len(msgList) > 1 else 0
+        addValue = msgList[2] if len(msgList) > 2 else 1
+        conds = msgList[3:]
+        GameWorld.DebugAnswer(curPlayer, "增加成就进度: T:%s,V:%s,C:%s" % (succType, addValue, conds))
+        PlayerSuccess.DoAddSuccessProgress(curPlayer, succType, addValue, conds)
     # 更新进度
     elif cmdType == "u":
-        pass
-    
+        succType = msgList[1] if len(msgList) > 1 else 0
+        newCnt = msgList[2] if len(msgList) > 2 else 1
+        conds = msgList[3:]
+        GameWorld.DebugAnswer(curPlayer, "更新成就进度: T:%s,V:%s,C:%s" % (succType, addValue, conds))
+        PlayerSuccess.UptateSuccessProgress(curPlayer, succType, newCnt, conds)
     return
 
-def __DoResetSuccess(curPlayer, msgList):
+def __DoResetSuccess(curPlayer, msgList, resetValue=True):
     ## 重置成就数据
     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.SetSuccPassportAwardHasGot(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)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Success_ScoreAward, 0)
-    PlayerSuccess.Sync_SuccessScoreAward(curPlayer)
-    GameWorld.DebugAnswer(curPlayer, "重置成就类型:%s" % resetTypeList)
-    return
-
-def __DoResetSuccessAward(curPlayer, msgList):
-    ## 重置成就领奖
-    if len(msgList) > 1:
-        typeList = [msgList[1]]
+        typeList = msgList[1:]
     else:
         typeList = ShareDefine.SuccessTypeList
         
-    resetIDList = []
+    succIDList = []
+    syncTypeCondList = []
     for succType in typeList:
-        succDataList = PlayerSuccess.GetSuccDataMng().GetSuccDataByType(succType)
-        if not succDataList:
+        ipyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("Success", succType)
+        if not ipyDataList:
             continue
-        
-        for succDataObj in succDataList:
-            succID = succDataObj.succID
-            if not PlayerSuccess.GetSuccHasGot(curPlayer, succID) and not PlayerSuccess.GetSuccPassportAwardHasGot(curPlayer, succID):
-                continue
-            PlayerSuccess.SetSuccHasGot(curPlayer, succID, False)
-            PlayerSuccess.SetSuccPassportAwardHasGot(curPlayer, succID, False)
-            PlayerSuccess.SetSuccFinish(curPlayer, succID) # 有重置领奖的ID需要重新设置为已完成
-            resetIDList.append(succID)
+        for ipyData in ipyDataList:
+            succID = ipyData.GetSuccID()
+            conds = ipyData.GetCondition()
             
-    # 同步成就领奖记录
-    PlayerSuccess.Sync_SuccTypeIndexAwardRecord(curPlayer, resetIDList, True)
-    GameWorld.DebugAnswer(curPlayer, "重置成就ID领奖:%s" % resetIDList)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Success_ScoreAward, 0)
-    PlayerSuccess.Sync_SuccessScoreAward(curPlayer)
+            if PlayerSuccess.GetSuccHasGot(curPlayer, succID):
+                succIDList.append(succID)
+                PlayerSuccess.SetSuccHasGot(curPlayer, succID, False)
+                
+            if [succType, conds] not in syncTypeCondList:
+                syncTypeCondList.append([succType, conds])
+                PlayerSuccess.SetSuccValue(curPlayer, succType, conds, 0)
+                
+    PlayerSuccess.SyncSuccessInfo(curPlayer, syncTypeCondList, True)
+    PlayerSuccess.SyncSuccessAwardRecord(curPlayer, succIDList, True)
+    GameWorld.DebugAnswer(curPlayer, "重置成就类型:%s" % typeList)
     return
 
 def __DoPrintSuccess(curPlayer, msgList):
     ## 输出成就数据
     if len(msgList) > 1:
-        typeList = [msgList[1]]
+        typeList = msgList[1:]
     else:
         typeList = ShareDefine.SuccessTypeList
     GameWorld.DebugAnswer(curPlayer, "--- 输出有进度的成就数据 ---")
     for succType in typeList:
-        succDataList = PlayerSuccess.GetSuccDataMng().GetSuccDataByType(succType)
-        if not succDataList:
+        ipyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("Success", succType)
+        if not ipyDataList:
             continue
         printType = False
-        for succDataObj in succDataList:
-            succID = succDataObj.succID
-            value = PlayerSuccess.GetSuccFinishValue(curPlayer, succType, succDataObj.condition)
+        for ipyData in ipyDataList:
+            succID = ipyData.GetSuccID()
+            conds = ipyData.GetCondition()
+            needCnt = ipyData.GetNeedCnt()
+            value = PlayerSuccess.GetSuccValue(curPlayer, succType, conds)
             if not value:
                 continue
             if not printType:
                 printType = True
-                GameWorld.DebugAnswer(curPlayer, "成就类型: %s" % succType)
-            isFinish = PlayerSuccess.GetSuccIsFinish(curPlayer, succID)
+                GameWorld.DebugAnswer(curPlayer, "----- 成就类型: %s" % succType)
             hasGot = PlayerSuccess.GetSuccHasGot(curPlayer, succID)
-            passportHasGot = PlayerSuccess.GetSuccPassportAwardHasGot(curPlayer, succID)
-            GameWorld.DebugAnswer(curPlayer, "    id=%s 条件:%s 进度:%s/%s 完成:%s 领奖:%s %s" 
-                                  % (succID, succDataObj.condition, value, succDataObj.needCnt, isFinish, hasGot, passportHasGot))
+            GameWorld.DebugAnswer(curPlayer, "ID:%s,C:%s,V:%s/%s,奖:%s" % (succID, conds, value, needCnt, hasGot))
             
     return
-
 

--
Gitblit v1.8.0