From 550cdd31f78c640d7baf9766b7492e0fb2c55970 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 20 二月 2025 19:38:54 +0800 Subject: [PATCH] 10403 【越南】【BT】【GM】【英文】【GM版本】境界相关修改(增加境界任务类型7:完成xx主线任务) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py | 52 ++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 36 insertions(+), 16 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py index da87f73..a5b812d 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py @@ -35,6 +35,7 @@ import ChPyNetSendPack import NetPackCommon import EventShell +import IpyGameDataPY #--------------------------------------------------------------------- #所有任务的索引 FindQuestFunc = None @@ -366,23 +367,39 @@ DataRecordPack.DR_DeleteMission(curPlayer, curMissionID) return +def GetMainTaskIDList(): + ## 获取主线任务ID顺序列表 + MainTaskIDList = IpyGameDataPY.GetConfigEx("MainTaskIDList") + if not MainTaskIDList: + MainTaskIDList = [] + ipyDataMgr = IpyGameDataPY.IPY_Data() + for index in range(ipyDataMgr.GetTaskListCount()): + ipyData = ipyDataMgr.GetTaskListByIndex(index) + MainTaskIDList.append(ipyData.GetTaskID()) + IpyGameDataPY.SetConfigEx("MainTaskIDList", MainTaskIDList) + GameWorld.DebugLog("加载主线任务ID顺序列表: %s" % MainTaskIDList) + return MainTaskIDList + def GetHadFinishMainMission(curPlayer, missionID): ''' 检查是否已经完成该主线任务 ''' curMission = curPlayer.FindMission(missionID) if curMission != None: - #GameWorld.DebugLog("当前任务未完成...missionID=%s" % missionID) + GameWorld.DebugLog("当前任务中未完成...missionID=%s" % missionID) return curMission.GetState() == ChConfig.Def_Mission_State_Over - curMissionData = FindQuestFunc(missionID) - if not curMissionData: + mainTaskIDList = GetMainTaskIDList() + if not mainTaskIDList: + GameWorld.DebugLog("没有主线任务列表! missionID=%s" % missionID) return False - # 非主线不判断 - if curMissionData.Type not in Def_MainTask_Type_List: - #GameWorld.DebugLog("非主线不判断...missionID=%s" % missionID) + if missionID not in mainTaskIDList: + GameWorld.DebugLog("非主线任务ID! missionID=%s" % missionID) return False + taskIDIndex = mainTaskIDList.index(missionID) + nowTaskID = 0 + nowTaskIDIndex = -1 # 不存在该任务,则判断同类型的任务ID for i in range(curPlayer.GetMissionCount()): mission = curPlayer.GetMissionByIndex(i) @@ -391,17 +408,20 @@ if not missionData: continue - taskType = missionData.Type - if taskType not in Def_MainTask_Type_List: + if taskID not in mainTaskIDList: continue - - # 由于主线任务ID是按任务顺序递增的,故只要存在大于该任务ID的主线任务则代表该主线任务已完成 - if taskID > missionID: - #GameWorld.DebugLog("存在主线任务 %s > missionID=%s" % (taskID, missionID)) - return True - - #GameWorld.DebugLog("该主线任务未完成...missionID=%s" % missionID) - return False + nowTaskID = taskID + nowTaskIDIndex = mainTaskIDList.index(taskID) + break + + if not nowTaskID: + GameWorld.DebugLog("当前身上没有主线任务! missionID=%s" % missionID) + return False + + isFinish = nowTaskIDIndex > taskIDIndex + GameWorld.DebugLog("判断主线任务是否已完成! missionID=%s(%s),isFinish=%s,nowTaskID=%s(%s)" + % (missionID, taskIDIndex, isFinish, nowTaskID, nowTaskIDIndex), curPlayer.GetPlayerID()) + return isFinish ##任务是否被删除 # @param None -- Gitblit v1.8.0