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