From ca11e79c7981d66e3d8bdbe12b3f2b44b3ae7063 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 26 一月 2026 16:18:36 +0800
Subject: [PATCH] 438 【方案】方案预设-服务端(武将方案切换时如果为空方案则复制当前武将方案;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPreset.py | 30 +++++++++++++++++++++++-------
1 files changed, 23 insertions(+), 7 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPreset.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPreset.py
index 4029904..d1fab9c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPreset.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPreset.py
@@ -23,6 +23,7 @@
import IPY_GameWorld
import NetPackCommon
import PlayerOnline
+import PlayerHero
import GameWorld
import ChConfig
@@ -178,7 +179,7 @@
curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
batPresetID = clientData.BatPresetID
funcPresetType = clientData.FuncPresetType
- funcPresetID = clientData.PresetID
+ toPresetID = clientData.PresetID
if funcPresetType == ShareDefine.FuncPreset_Battle:
GameWorld.DebugLog("全局战斗预设不在此修改,请使用B263封包修改全局预设方案! funcPresetType=%s" % (funcPresetType))
@@ -188,16 +189,31 @@
GameWorld.DebugLog("全局预设未解锁! batPresetID=%s" % batPresetID)
return
- if not GetFuncPresetIDState(curPlayer, funcPresetID, funcPresetType):
- GameWorld.DebugLog("功能预设未解锁! funcPresetID=%s,funcPresetType=%s" % (funcPresetID, funcPresetType))
+ if not GetFuncPresetIDState(curPlayer, toPresetID, funcPresetType):
+ GameWorld.DebugLog("功能预设未解锁! toPresetID=%s,funcPresetType=%s" % (toPresetID, funcPresetType))
return
- if GetFuncPresetID(curPlayer, batPresetID, funcPresetType) == funcPresetID:
- GameWorld.DebugLog("功能预设不变不处理! batPresetID=%s,funcPresetType=%s,funcPresetID=%s" % (batPresetID, funcPresetType, funcPresetID))
+ nowPresetID = GetFuncPresetID(curPlayer, batPresetID, funcPresetType)
+ if nowPresetID == toPresetID:
+ GameWorld.DebugLog("功能预设不变不处理! batPresetID=%s,funcPresetType=%s,toPresetID=%s" % (batPresetID, funcPresetType, toPresetID))
return
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PresetFuncID % (batPresetID, funcPresetType), funcPresetID)
- GameWorld.DebugLog("功能预设方案切换: batPresetID=%s,funcPresetType=%s,funcPresetID=%s" % (batPresetID, funcPresetType, funcPresetID))
+ GameWorld.DebugLog("功能预设方案切换: batPresetID=%s,funcPresetType=%s,nowPresetID=%s,toPresetID=%s" % (batPresetID, funcPresetType, nowPresetID, toPresetID))
+
+ # 武将方案检查是否空,空的话强制复制当前
+ if funcPresetType == ShareDefine.FuncPreset_Hero:
+ olPlayer = PlayerOnline.GetOnlinePlayer(curPlayer)
+ heroPreset = olPlayer.GetHeroPreset(toPresetID)
+ if not heroPreset.heroItemDict:
+ nowHeroPreset = olPlayer.GetHeroPreset(nowPresetID)
+ itemIndexPosDict = {}
+ itemIndexPosDict.update(nowHeroPreset.heroItemDict)
+ GameWorld.DebugLog("该武将方案为空直接先复制当前方案! nowPresetID=%s,itemIndexPosDict=%s" % (nowPresetID, itemIndexPosDict))
+ PlayerHero.DoSaveHeroPreset(curPlayer, toPresetID, itemIndexPosDict)
+
+ heroPreset.OnSwitch()
+
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PresetFuncID % (batPresetID, funcPresetType), toPresetID)
# 刷属性
PlayerOnline.GetOnlinePlayer(curPlayer).RefreshBatPreset(batPresetID)
--
Gitblit v1.8.0