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