From 750ff5ee6204bb088713b0ce10d53d05f22679e0 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 16 一月 2026 19:32:27 +0800
Subject: [PATCH] 438 【方案】方案预设-服务端

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Hero.py |  134 +-------------------------------------------
 1 files changed, 4 insertions(+), 130 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 9f66fe3..934d56f 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
@@ -44,11 +44,7 @@
         GameWorld.DebugAnswer(curPlayer, "武将皮肤: Hero sk 武将ID 皮肤索引 是否解锁")
         GameWorld.DebugAnswer(curPlayer, "重置宿缘: Hero sy 0")
         GameWorld.DebugAnswer(curPlayer, "设置宿缘: Hero sy 宿缘ID 等级 [是否激活]")
-        #GameWorld.DebugAnswer(curPlayer, "清空武将: ClearPack 35")
         GameWorld.DebugAnswer(curPlayer, "新增武将: MakeItemCount 英雄ID [个数]")
-        GameWorld.DebugAnswer(curPlayer, "阵容上阵: Hero f 阵容ID [武将ID ...]")
-        GameWorld.DebugAnswer(curPlayer, "阵容武将: Hero h 阵容ID 武将ID 等级 星级 突破等级 觉醒等级 皮肤")
-        GameWorld.DebugAnswer(curPlayer, "阵容满级: Hero h 阵容ID 1")
         GameWorld.DebugAnswer(curPlayer, "一键满级: Hero max [指定等级 星级 突破 觉醒]")
         GameWorld.DebugAnswer(curPlayer, "清空武将: Hero clear [是否包含生效卡]")
         return
@@ -58,19 +54,9 @@
     value = msgList[0]
     value2 = msgList[1] if len(msgList) > 1 else 0
     
-    # 阵容上阵
-    if value == "f":
-        __oneKeyLineup(curPlayer, msgList)
-        return
-    
     # 一键满级
     if value == "max":
         __oneKeyMax(curPlayer, msgList)
-        return
-    
-    # 阵容武将
-    if value == "h":
-        __lineupHero(curPlayer, msgList)
         return
     
     # 图鉴
@@ -143,12 +129,12 @@
             if not curItem or curItem.IsEmpty():
                 continue
             if not isAll:
-                if curItem.GetUserAttr(ShareDefine.Def_IudetHeroCardEffective):
+                if curItem.GetUserAttrCount(ShareDefine.Def_IudetHeroEffPresetID):
                     continue
             curItem.Clear()
             
         if isAll:
-            PlayerOnline.GetOnlinePlayer(curPlayer).SetEffectiveCardDict({}) # 清空生效缓存
+            PlayerOnline.GetOnlinePlayer(curPlayer).ReCalcAllAttr()
         return
         
     # 宿缘
@@ -204,6 +190,8 @@
     if value == 0:
         PlayerHero.InitHeroItem(heroItem.GetItem())
         heroItem.Sync_Item()
+        if heroItem.GetUserAttr(ShareDefine.Def_IudetHeroCardEffective):
+            heroItem.SetUserAttr(ShareDefine.Def_IudetHeroCardEffective, 0)
         GameWorld.DebugAnswer(curPlayer, "重置武将: itemIndex=%s" % (itemIndex))
         
     # 等级
@@ -285,120 +273,6 @@
     GameWorld.DebugAnswer(curPlayer, "一键OK!")
     return
 
-def __oneKeyLineup(curPlayer, msgList):
-    ## 阵容上阵: Hero f 阵容ID [武将ID ...]
-    lineupID = msgList[1] if len(msgList) > 1 else 0
-    heroIDList = []
-    for heroID in msgList[2:]: # 去重,单阵容武将ID不能重复
-        if heroID not in heroIDList:
-            heroIDList.append(heroID)
-    if lineupID not in ShareDefine.LineupList:
-        GameWorld.DebugAnswer(curPlayer, "不存在该阵容: %s" % lineupID)
-        return
-    
-    if not heroIDList:
-        GameWorld.DebugAnswer(curPlayer, "没有指定阵容武将ID列表!")
-        return
-    
-    for heroID in heroIDList:
-        if not GameWorld.GetGameData().GetItemByTypeID(heroID):
-            GameWorld.DebugAnswer(curPlayer, "不存在该武将: %s" % heroID)
-            return
-        
-    shapeType = 0
-    haveHeroIDList = []
-    curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptHero)
-    # 直接重置旧阵型
-    syncItemDict = {}
-    for index in range(curPack.GetCount()):
-        heroItem = curPack.GetAt(index)
-        if not heroItem or heroItem.IsEmpty():
-            continue
-        heroID = heroItem.GetItemTypeID()
-        if heroID in heroIDList and heroID not in haveHeroIDList:
-            haveHeroIDList.append(heroID)
-        lineupCount = heroItem.GetUserAttrCount(ShareDefine.Def_IudetHeroLineup)
-        if not lineupCount:
-            continue
-        item = heroItem.GetItem()
-        for lpIndex in range(lineupCount)[::-1]:
-            lineupValue = item.GetUserAttrByIndex(ShareDefine.Def_IudetHeroLineup, lpIndex)
-            if PlayerHero.GetLineupValue(lineupValue)[0] != lineupID:
-                continue
-            item.DelUserAttr(ShareDefine.Def_IudetHeroLineup, lineupValue)
-            syncItemDict[index] = heroItem
-            
-    # 给没有的武将
-    for heroID in heroIDList:
-        if heroID in haveHeroIDList:
-            continue
-        if not ItemControler.GivePlayerItem(curPlayer, heroID, 1, False):
-            break
-        
-    # 更新新阵型
-    heroItemDict = {}
-    updHeroIDList = []
-    for index in range(curPack.GetCount()):
-        heroItem = curPack.GetAt(index)
-        if not heroItem or heroItem.IsEmpty():
-            continue
-        heroID = heroItem.GetItemTypeID()
-        if heroID not in heroIDList:
-            continue
-        if heroID in updHeroIDList:
-            # 已经上过该武将了
-            continue
-        updHeroIDList.append(heroID)
-        posNum = heroIDList.index(heroID) + 1
-        item = heroItem.GetItem()
-        lineupValue = PlayerHero.ComLineupValue(lineupID, shapeType, posNum)
-        item.AddUserAttr(ShareDefine.Def_IudetHeroLineup, lineupValue)
-        if index not in syncItemDict:
-            syncItemDict[index] = heroItem
-        heroItemDict[index] = posNum
-        
-    for syncItem in syncItemDict.values():
-        syncItem.Sync_Item()
-        
-    lineup = PlayerOnline.GetOnlinePlayer(curPlayer).GetLineup(lineupID, False)
-    lineup.UpdLineup(heroItemDict, shapeType)
-    GameWorld.DebugAnswer(curPlayer, "阵容(%s)上阵OK: %s" % (lineupID, heroItemDict))
-    return
-
-def __lineupHero(curPlayer, msgList):
-    #阵容武将: Hero h 阵容ID 武将ID 等级 星级 突破等级 觉醒等级 皮肤
-    #阵容满级: Hero h 阵容ID 1
-    lineupID = msgList[1] if len(msgList) > 1 else 0
-    heroID = msgList[2] if len(msgList) > 2 else 0
-    setLV = msgList[3] if len(msgList) > 3 else None
-    setStar = msgList[4] if len(msgList) > 4 else None
-    setBreakLV = msgList[5] if len(msgList) > 5 else None
-    setAwakeLV = msgList[6] if len(msgList) > 6 else None
-    setSkinID = msgList[7] if len(msgList) > 7 else None
-    
-    olPlayer = PlayerOnline.GetOnlinePlayer(curPlayer)
-    lineup = olPlayer.GetLineup(lineupID)
-    if heroID == 1:
-        setIndexList = lineup.heroItemDict.keys()
-    else:
-        lineupHero = lineup.GetLineupHeroByID(heroID)
-        if not lineupHero:
-            GameWorld.DebugAnswer(curPlayer, "该阵容不存在该武将: %s" % heroID)
-            return
-        setIndexList = [lineupHero.itemIndex]
-        
-    curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptHero)
-    for itemIndex in setIndexList:
-        if itemIndex < 0 or itemIndex >= curPack.GetCount():
-            continue
-        heroItem = curPack.GetAt(itemIndex)
-        if not heroItem or heroItem.IsEmpty():
-            continue
-        __setHeroItem(curPlayer, heroItem, setLV, setStar, setBreakLV, setAwakeLV, setSkinID)
-        
-    GameWorld.DebugAnswer(curPlayer, "设置阵容武将OK")
-    return
-        
 def __setHeroItem(curPlayer, heroItem, setLV=None, setStar=None, setBreakLV=None, setAwakeLV=None, setSkinID=None):
     heroID = heroItem.GetItemTypeID()
     heroIpyData = IpyGameDataPY.GetIpyGameData("Hero", heroID)

--
Gitblit v1.8.0