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