From 5831ac5f8c886bf92182a8a40267881784eb6b4e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 05 九月 2025 15:12:03 +0800
Subject: [PATCH] 16 卡牌服务端(优化功能开启命令限制的等级、境界;优化任务开启功能,完成任意任务可开启之前已完成任务可开启的功能;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/OpenFunc.py |   22 +++++++++++++++++-----
 1 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/OpenFunc.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/OpenFunc.py
index dd9af87..8cb4ac3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/OpenFunc.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/OpenFunc.py
@@ -95,25 +95,37 @@
     GameWorld.DebugLog("GM处理等级开启功能: openFuncID=%s,openFuncIDList=%s,needLV=%s" % (openFuncID, openFuncIDList, needLV), curPlayer.GetPlayerID())
     
     # 优先处理升级        
-    if needLV:
+    if needLV > 1:
         preLV = needLV - 1
         curPlayer.SetLV(preLV)
         PlayerControl.SetPlayerTotalExp(curPlayer, PlayerControl.GetTotalExpByPlayerLv(preLV))
         PlayerControl.PlayerControl(curPlayer).PlayerLvUp()
-
+        
+        # 获取等级需要的境界
+        ipyDataMgr = IpyGameDataPY.IPY_Data()
+        for index in range(ipyDataMgr.GetRealmCount()):
+            realmIpyData = ipyDataMgr.GetRealmByIndex(index)
+            if realmIpyData.GetLv() > needRealmLV:
+                needRealmLV = realmIpyData.GetLv()
+            if realmIpyData.GetLVMax() >= needLV:
+                break
+            
     GameWorld.DebugLog("GM处理境界开启功能: needRealmLV=%s" % needRealmLV, curPlayer.GetPlayerID())
     if needRealmLV:
         curPlayer.SetOfficialRank(max(ChConfig.Def_InitOfficialRank, needRealmLV - 1))
         PlayerPrestigeSys.DoRealmLVUpLogic(curPlayer)
         
+    for limitMissionID in needMissionIDList:
+        if not curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_MissionFinish % limitMissionID):
+            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_MissionFinish % limitMissionID, 1)
+            
     GameWorld.DebugLog("GM处理任务开启功能: needMissionIDList=%s" % needMissionIDList, curPlayer.GetPlayerID())
     #最后强制触发一次
-    #if needMissionIDList:
-    GameFuncComm.DoFuncOpenLogic(curPlayer, needMissionIDList)
+    GameFuncComm.DoFuncOpenLogic(curPlayer)
     return
 
 def __GetOpenFuncLimit(curPlayer, openFuncIDList):
-    maxLV = PlayerControl.GetPlayerMaxLV(curPlayer)
+    maxLV = PlayerControl.GetOpenMaxLV()
     needLV = 0
     needRealmLV = 0
     needMissionIDList = []

--
Gitblit v1.8.0