From 46f1b3554ca7c3eeea118aaf80fe756bebdfde93 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 09 二月 2026 13:46:54 +0800
Subject: [PATCH] 121 【武将】武将系统-服务端(修复武将修改皮肤战斗时不生效bug;Hero命令增加切换皮肤;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py   |    6 +++++-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py |    6 ++----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Hero.py    |    9 +++++++++
 3 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Hero.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Hero.py
index 934d56f..3188e94 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Hero.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Hero.py
@@ -42,6 +42,7 @@
         GameWorld.DebugAnswer(curPlayer, "重置图鉴: Hero t 0 [重置阵容推荐]")
         GameWorld.DebugAnswer(curPlayer, "重置重生: Hero r")
         GameWorld.DebugAnswer(curPlayer, "武将皮肤: Hero sk 武将ID 皮肤索引 是否解锁")
+        GameWorld.DebugAnswer(curPlayer, "切换皮肤: Hero ss 背包位置 皮肤索引")
         GameWorld.DebugAnswer(curPlayer, "重置宿缘: Hero sy 0")
         GameWorld.DebugAnswer(curPlayer, "设置宿缘: Hero sy 宿缘ID 等级 [是否激活]")
         GameWorld.DebugAnswer(curPlayer, "新增武将: MakeItemCount 英雄ID [个数]")
@@ -232,6 +233,14 @@
         PlayerHero.SetHeroAwakeLV(heroItem, awakeLV)
         GameWorld.DebugAnswer(curPlayer, "设置武将觉醒: %s,itemIndex=%s" % (awakeLV, itemIndex))
         
+    # 切换皮肤
+    elif value == "ss":
+        skinIndex = msgList[2] if len(msgList) > 2 else 0
+        PlayerHero.ActiveHeroSkin(curPlayer, heroID, skinIndex, 1)
+        if not PlayerHero.DoHeroWearSkin(curPlayer, itemIndex, skinIndex):
+            GameWorld.DebugAnswer(curPlayer, "切换皮肤失败查看地图日志")
+        return
+    
     PlayerOnline.GetOnlinePlayer(curPlayer).OnHeroItemUpate(heroItem) # GM修改
     return
 
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 fbeee25..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)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py
index bd832cd..fc590a6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py
@@ -365,8 +365,6 @@
             
             effCardAddPerAft = heroPreset.GetEffCardAddPer()
             
-            if effCardAddPerBef == effCardAddPerAft:
-                continue
             heroPresetID = heroPreset.heroPresetID
             GameWorld.DebugLog("武将物品变化影响: itemIndex=%s,heroPresetID=%s,effCardAddPerBef=%s,effCardAddPerAft=%s" 
                                % (itemIndex, heroPresetID, effCardAddPerBef, effCardAddPerAft), self.playerID)
@@ -782,9 +780,9 @@
         skinID = 0
         skinIDList = heroIpyData.GetSkinIDList()
         if skinIndex < 0 or skinIndex >= len(skinIDList):
-            skinID = skinIDList[skinIndex]
-        elif skinIDList:
             skinID = skinIDList[0]
+        elif skinIDList:
+            skinID = skinIDList[skinIndex]
             
         lineupHero = presetLineup.GetLineupHero(posNum)
         #if False:

--
Gitblit v1.8.0