From 7c12351394b2f17bcc5b25ca58455f143119ca93 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 10 十一月 2025 11:34:03 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(主线战斗额外功能逻辑提到B425标记外处理并同步;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py |   32 ++++++++++++++++++++++----------
 1 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index d082054..68d42a3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -58,7 +58,7 @@
 import PlayerOnline
 import PlayerTask
 import PlayerMail
-import PlayerLLMJ
+import TurnAttack
 import ChPlayer
 import GameObj
 
@@ -2765,10 +2765,7 @@
                 unXiantaoCntBooty = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntBooty % itemID)
                 NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnXiantaoCntBooty % itemID, unXiantaoCntBooty + price)
                 
-        PlayerLLMJ.AddUseZhanchui(curPlayer, price)
-        PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_UseXiantao, price)
-        PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_CutTree, price)
-        PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_CutTree, price)
+        TurnAttack.GetMainFightMgr(curPlayer).useZhanchui += price
         
     unitPrice = price if quantity == 1 else int(math.ceil(price * 1.0 / quantity)) # 单价
     #reason_name = "Unknown" if not costType else costType
@@ -4304,10 +4301,25 @@
 
 def IsMainLevelPass(curPlayer, lvID):
     ## 判断玩家是否过关某个主线关卡ID
-    # @param lvID: 关卡唯一ID,与策划约定好 = 章节*100+关卡编号
-    passChapterID, passLevelNum, _ = GetMainLevelPassInfo(curPlayer)
-    passValue = passChapterID * 100 + passLevelNum # 因为pass的记录是带波数的,即当前关卡boss还没过关,所以只有大于该记录值的才算过关
-    return passValue > lvID
+    return GetPassMainLevelID(curPlayer) >= lvID
+def GetPassMainLevelID(curPlayer):
+    ## 获取已过关主线关卡ID
+    passChapterID, passLevelNum, _ = GetMainLevelPassInfo(curPlayer) # 当前过关进度包含波,所以需要取上一关的
+    passLVID = 0 # 关卡唯一ID,与策划约定好 = 章节*100+关卡编号
+    if passLevelNum > 1:
+        preLevelNum = passLevelNum - 1
+        passLVID = passChapterID * 100 + preLevelNum
+        GameWorld.DebugLog("非某章节的第1关直接减1即可: passLVID=%s,passChapterID=%s,passLevelNum=%s" % (passLVID, passChapterID, passLevelNum))
+        
+    elif passChapterID > 1: # 取上一章节
+        preChapterID = passChapterID - 1
+        levelDataList = IpyGameDataPY.GetIpyGameDataByCondition("MainLevel", {"ChapterID":preChapterID}, True)
+        levelCount = len(levelDataList) if levelDataList else 0
+        if levelCount:
+            passLVID = preChapterID * 100 + levelCount
+        GameWorld.DebugLog("取上一章节作为已过关关卡: passLVID=%s,preChapterID=%s,levelCount=%s,passChapterID=%s,passLevelNum=%s" 
+                           % (passLVID, preChapterID, levelCount, passChapterID, passLevelNum))
+    return passLVID
 
 ## 主线关卡过关进度值 = 章节*10000+关卡编号*100+第x波
 def GetMainLevelPassValue(curPlayer): return curPlayer.GetExAttr1()
@@ -4320,7 +4332,7 @@
     value = ComMainLevelValue(chapterID, levelNum, wave)
     SetMainLevelPassValue(curPlayer, value)
     if wave == 0:
-        lvID = chapterID * 100 + levelNum
+        lvID = GetPassMainLevelID(curPlayer)
         PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_MainLevel, lvID)
         PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_MainLevel)
         PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_MainLevel, lvID)

--
Gitblit v1.8.0