From 5fbb5f807ca75fa69fba14ad2563892f08b4588d Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 10 二月 2026 18:28:22 +0800
Subject: [PATCH] 66 【公会】基础主体-服务端(修复改名没有同步更新名字映射关系bug;)

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

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
index e783b37..aa0880c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
@@ -1019,6 +1019,10 @@
     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
     itemIndex = clientData.ItemIndex
     skinIndex = clientData.SkinIndex
+    DoHeroWearSkin(curPlayer, itemIndex, skinIndex)
+    return
+
+def DoHeroWearSkin(curPlayer, itemIndex, skinIndex):
     heroItem = GetHeroItem(curPlayer, itemIndex)
     if not heroItem:
         return
@@ -1038,7 +1042,7 @@
     heroItem.SetUserAttr(ShareDefine.Def_IudetHeroSkin, skinIndex)
     
     PlayerOnline.GetOnlinePlayer(curPlayer).OnHeroItemUpate(heroItem) # 切换皮肤
-    return
+    return True
 
 def ActiveHeroSkin(curPlayer, heroID, skinIndex, isActive=True):
     skinState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HeroSkin % heroID)
@@ -1409,31 +1413,39 @@
 #{
 #    tagHead        Head;
 #    BYTE        PresetID;        //阵容方案预设ID
-#    BYTE        ShapeType;    //本阵容阵型,0为默认阵型,可扩展不同的阵型
 #    BYTE        PosCnt;
 #    tagCSHeroPresetPos    HeroPosList[PosCnt];    // 保存的阵容,只发送最终的阵容武将位置即可
 #};
 def OnHeroPresetSave(index, clientData, tick):
     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
     presetID = clientData.PresetID
-    shapeType = clientData.ShapeType
+    shapeType = 0#clientData.ShapeType
     heroPosList = clientData.HeroPosList
     
-    heroPosDict = {}
-    indexList = []
+    itemIndexPosDict = {}
     for posInfo in heroPosList:
         posNum = posInfo.PosNum
         itemIndex = posInfo.ItemIndex
+        itemIndexPosDict[itemIndex] = posNum
+        
+    DoSaveHeroPreset(curPlayer, presetID, itemIndexPosDict, shapeType)
+    return
+
+def DoSaveHeroPreset(curPlayer, presetID, itemIndexPosDict, shapeType=0):
+        
+    if not PlayerPreset.GetFuncPresetIDState(curPlayer, presetID, ShareDefine.FuncPreset_Hero):
+        GameWorld.DebugLog("该武将阵容预设不可用! presetID=%s" % presetID)
+        return
+    
+    heroPosDict = {}
+    indexList = []
+    for itemIndex, posNum in itemIndexPosDict.items():
         if itemIndex in indexList:
             # 单武将只能一个位置,一个位置只能对应唯一武将单位
             continue
         indexList.append(itemIndex)
         heroPosDict[posNum] = itemIndex
         
-    if not PlayerPreset.GetFuncPresetIDState(curPlayer, presetID, ShareDefine.FuncPreset_Hero):
-        GameWorld.DebugLog("该武将阵容预设不可用! presetID=%s" % presetID)
-        return
-    
     GameWorld.DebugLog("保存武将预设阵容: presetID=%s, %s" % (presetID, heroPosDict), curPlayer.GetPlayerID())
     curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptHero)
     # 直接重置旧阵型
@@ -1790,7 +1802,7 @@
                 heroItemIndexList.append(0)
         preset = ChPyNetSendPack.tagSCHeroPreset()
         preset.PresetID = heroPresetID
-        preset.ShapeType = heroPreset.shapeType
+        #preset.ShapeType = heroPreset.shapeType
         preset.HeroItemIndexList = heroItemIndexList
         preset.HeroCnt = len(preset.HeroItemIndexList)
         presetList.append(preset)

--
Gitblit v1.8.0