From 88a9eda1278acaa0b0f66b35e2319d59a3e38eca Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 29 八月 2025 16:03:35 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(修复主线战斗中重登时会自动重新开始战斗bug;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py |   28 ++++++++++++++++++++++------
 1 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py
index 6cb2c29..fba8115 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py
@@ -25,6 +25,7 @@
 import IPY_GameWorld
 import NetPackCommon
 import ItemCommon
+import PlayerTask
 import NPCCommon
 import ChEquip
 import ObjPool
@@ -91,7 +92,8 @@
 
 def __doMainDrop(curPlayer):
     # 装备掉落
-    __doDropEquip(curPlayer)
+    if __doDropEquip(curPlayer) == -1:
+        return
     
     playerID = curPlayer.GetPlayerID()
     DailyBootyUpperList = []
@@ -102,10 +104,16 @@
            
     GameWorld.DebugLog("可掉落战利品上限: chapterID=%s, %s" % (chapterID, DailyBootyUpperList), playerID)
     
+    # 战利品掉落默认不堆叠,故最多只能掉落剩余空格子个数的物品
+    spaceCount = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptIdentify)
+    
     # 其他战利品掉落
     bootyDropNeedDict = IpyGameDataPY.GetFuncEvalCfg("MainBootyDrop", 1, {})
     bootyDropCntDict = IpyGameDataPY.GetFuncEvalCfg("MainBootyDrop", 2, {})
     for itemID, dropUpper in DailyBootyUpperList:
+        if spaceCount <= 0:
+            GameWorld.DebugLog("掉落背包已满!", playerID)
+            break
         if dropUpper <= 0:
             continue
         todyDropCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BootyDropToday % itemID)
@@ -137,7 +145,8 @@
         if dropCntTotal <= 0:
             continue
         
-        GameWorld.DebugLog("掉落战利品! itemID=%s,unXiantaoCntBooty=%s,次数=%s,dropCntTotal=%s" % (itemID, unXiantaoCntBooty, dropBootyCnt, dropCntTotal), playerID)
+        GameWorld.DebugLog("掉落战利品! itemID=%s,unXiantaoCntBooty=%s,次数=%s,dropCntTotal=%s,spaceCount=%s" 
+                           % (itemID, unXiantaoCntBooty, dropBootyCnt, dropCntTotal, spaceCount), playerID)
         curItem = ItemControler.GetOutPutItemObj(itemID, dropCntTotal, False, curPlayer=curPlayer)
         if curItem == None:
             continue
@@ -147,23 +156,24 @@
         unXiantaoCntBooty = unXiantaoCntBooty % dropOneNeed
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnXiantaoCntBooty % itemID, unXiantaoCntBooty)
         SetBootyDropToday(curPlayer, itemID, todyDropCnt + dropCntTotal)
+        spaceCount -= 1
         
     return
 
 def __doDropEquip(curPlayer):
     ## 主线掉落装备
+    playerID = curPlayer.GetPlayerID()
     unXiantaoCntEquip = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntEquip)
     dropOneNeed = IpyGameDataPY.GetFuncCfg("MainEquipDrop", 1) # 每消耗X个战锤掉落一件装备
     dropEquipCnt = unXiantaoCntEquip / dropOneNeed
     if dropEquipCnt <= 0:
-        GameWorld.DebugLog("主线暂不能掉落! unXiantaoCntEquip=%s,dropOneNeed=%s,dropEquipCnt=%s" % (unXiantaoCntEquip, dropOneNeed, dropEquipCnt))
+        GameWorld.DebugLog("主线暂不能掉落! unXiantaoCntEquip=%s,dropOneNeed=%s,dropEquipCnt=%s" % (unXiantaoCntEquip, dropOneNeed, dropEquipCnt), playerID)
         return
     dropEquipCnt = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptIdentify, dropEquipCnt)
     if not dropEquipCnt:
-        GameWorld.DebugLog("掉落鉴定背包没有空间!")
-        return
+        GameWorld.DebugLog("掉落背包已满!", playerID)
+        return -1
     
-    playerID = curPlayer.GetPlayerID()    
     treeLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeLV)
     ipyData = IpyGameDataPY.GetIpyGameData("TreeLV", treeLV)
     if not ipyData:
@@ -251,6 +261,7 @@
     else:
         __doPickupMainItem(curPlayer, itemIndexList)
         
+    ItemCommon.SyncMakeItemAnswer(curPlayer, ShareDefine.Def_mitMainDropItemOP, ChConfig.Def_ComposeState_Sucess, opType)
     return
 
 def __doEquipMainEquip(curPlayer, itemIndexList, isAutoDecompose):
@@ -297,6 +308,8 @@
         
     # 刷属性
     ChEquip.RefreshRoleEquipAttr(curPlayer)
+    
+    PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_EquipColor)
     return
 
 def __doDecomposeMainEquip(curPlayer, itemIndexList):
@@ -310,6 +323,7 @@
     
     moneyTotal = 0
     
+    decomposeCnt = 0
     decomposeIndexList = []
     for itemIndex in itemIndexList:
         if itemIndex < 0 or itemIndex >= IdentifyPack.GetCount():
@@ -340,11 +354,13 @@
         
         ItemCommon.DelItem(curPlayer, curEquip, curEquip.GetCount(), True, ChConfig.ItemDel_EquipDecompose)
         decomposeIndexList.append(itemIndex)
+        decomposeCnt += 1
         
     if not moneyTotal:
         return
     
     PlayerControl.GiveMoney(curPlayer, moneyType, moneyTotal, "DecomposeMainEquip", isSysHint=False)
+    PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_EquipDecompose, decomposeCnt)
     return
 
 def __doPickupMainItem(curPlayer, itemIndexList):

--
Gitblit v1.8.0