| | |
| | | #"""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
|
| | |
|
| | |
|