hxp
2025-08-08 e67b6768b97dd18a398334f210c3056fc233e146
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py
@@ -30,7 +30,7 @@
import time
class LineupHero():
    ## 阵容战斗武将,注意:同一个武将在不同阵容中可能属性不一样
    ## 阵容武将,注意:同一个武将在不同阵容中可能属性不一样
    
    def __init__(self):
        self.Clear()
@@ -39,6 +39,7 @@
    def Clear(self):
        self.itemIndex = 0
        self.heroID = 0
        self.skinID = 0
        self.posNum = 0
        self.heroBatAttrDict = {} # 武将的最终战斗属性字典, {attrID:value, ...}
        self.heroSkillIDList = [] # 武将拥有的技能ID列表 [skillID, ...]
@@ -62,7 +63,7 @@
        self.fightPower = 0 # 阵容总战力
        return
    
    def UpdLineup(self, heroItemDict, shapeType=0, refreshForce=False):
    def UpdLineup(self, heroItemDict, shapeType=0, refreshForce=False, syncLineup=True):
        '''变更阵容时更新
        @param heroItemDict: 武将背包索引信息  {itemIndex:posNum, ...}
        @param shapeType: 阵型
@@ -72,6 +73,8 @@
        self.heroItemDict = heroItemDict
        GameWorld.DebugLog("更新阵容: lineupID=%s,%s" % (self.lineupID, heroItemDict), self.playerID)
        self.RefreshLineupAttr(refreshForce)
        if syncLineup and self.olPlayer.curPlayer:
            PlayerHero.Sync_Lineup(self.olPlayer.curPlayer, self.lineupID)
        return
    
    def FreeLineupHero(self):
@@ -151,7 +154,7 @@
        return
    
    def OnClear(self):
        self.mainFight.clear()
        self.mainFight.turnFight.clearFight()
        return
    
    def SetPlayer(self, curPlayer):
@@ -384,8 +387,9 @@
        # 获取其他绑定该阵容的功能,如红颜、灵兽等
        
        shapeType = lineShapeTypeDict.get(lineupID, 0)
        lineup.UpdLineup(heroItemDict, shapeType)
        lineup.UpdLineup(heroItemDict, shapeType, syncLineup=False)
        
    PlayerHero.Sync_Lineup(curPlayer)
    return
def doCalcAllAttr(curPlayer):
@@ -450,7 +454,15 @@
        star = heroItem.GetUserAttr(ShareDefine.Def_IudetHeroStar)
        breakLV = heroItem.GetUserAttr(ShareDefine.Def_IudetHeroBreakLV)
        awakeLV = heroItem.GetUserAttr(ShareDefine.Def_IudetHeroAwakeLV)
        skinIndex = heroItem.GetUserAttr(ShareDefine.Def_IudetHeroSkin)
        
        skinID = 0
        skinIDList = heroIpyData.GetSkinIDList()
        if skinIndex < 0 or skinIndex >= len(skinIDList):
            skinID = skinIDList[skinIndex]
        elif skinIDList:
            skinID = skinIDList[0]
        InitAddPer += qualityIpyData.GetInitAddPer()
        LVAddPer += qualityIpyData.GetLVAddPer() * heroLV
        BreakLVAddPer += qualityIpyData.GetBreakLVAddPer() * breakLV
@@ -462,6 +474,7 @@
        lineupHero.itemIndex = itemIndex
        lineupHero.posNum = posNum
        lineupHero.heroID = heroID
        lineupHero.skinID = skinID
        lineupHero.heroBatAttrDict = {}
        lineupHero.heroSkillIDList = []
        lineupHero.fightPower = 0
@@ -692,7 +705,7 @@
        GameWorld.DebugLog("    fightPower=%s,heroSkillIDList=%s" % (fightPower, lineupHero.heroSkillIDList))
        skillTypeIDDict = {}
        for skillID in lineupHero.heroSkillIDList:
            skillData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
            skillData = IpyGameDataPY.GetIpyGameData("Skill", skillID)
            if not skillData:
                continue
            skillTypeID = skillData.GetSkillTypeID()