ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
@@ -302,6 +302,14 @@
        return posNum
    return 0
def InMainLineup(heroItem):
    ## 是否在主阵容中
    for lpIndex in range(heroItem.GetUserAttrCount(ShareDefine.Def_IudetHeroLineup)):
        lineupValue = heroItem.GetUserAttrByIndex(ShareDefine.Def_IudetHeroLineup, lpIndex)
        if GetLineupValue(lineupValue)[0] == ShareDefine.Lineup_Main:
            return True
    return False
#// B2 30 武将升级 #tagCSHeroLVUP
#
#struct    tagCSHeroLVUP
@@ -323,12 +331,8 @@
    quality = heroIpyData.GetQuality()
    breakLV = heroItem.GetUserAttr(ShareDefine.Def_IudetHeroBreakLV)
    heroLV = heroItem.GetUserAttr(ShareDefine.Def_IudetHeroLV)
    LVMax = GetHeroLVMax(heroItem)
    GameWorld.DebugLog("请求武将升级: itemIndex=%s,heroID=%s,heroLV=%s,quality=%s,breakLV=%s,LVMax=%s"
                       % (itemIndex, heroID, heroLV, quality, breakLV, LVMax), playerID)
    if heroLV >= LVMax:
        GameWorld.DebugLog("该武将已满级!LVMax=%s" % (LVMax), playerID)
        return
    GameWorld.DebugLog("请求武将升级: itemIndex=%s,heroID=%s,heroLV=%s,quality=%s,breakLV=%s"
                       % (itemIndex, heroID, heroLV, quality, breakLV), playerID)
    qualityLVIpyData = IpyGameDataPY.GetIpyGameData("HeroQualityLV", quality, heroLV)
    if not qualityLVIpyData:
        return
@@ -367,12 +371,10 @@
    if not heroIpyData:
        return 0
    quality = heroIpyData.GetQuality()
    breakLV = heroItem.GetUserAttr(ShareDefine.Def_IudetHeroBreakLV)
    qualityBreakIpyData = IpyGameDataPY.GetIpyGameData("HeroQualityBreak", quality, breakLV)
    if not qualityBreakIpyData:
    lvIpyDataList = IpyGameDataPY.GetIpyGameDataByCondition("HeroQualityLV", {"Quality":quality}, True)
    if not lvIpyDataList:
        return 0
    LVMax = qualityBreakIpyData.GetLVMax()
    return LVMax
    return len(lvIpyDataList)
#// B2 31 武将升星 #tagCSHeroStarUP
#
@@ -630,26 +632,24 @@
    ipyData = IpyGameDataPY.GetIpyGameData("HeroQualityBreak", quality, breakLV)
    if not ipyData:
        return
    LVMax = ipyData.GetLVMax()
    if heroLV < LVMax:
        GameWorld.DebugLog("未满级,无法突破: heroLV=%s < %s" % (heroLV, LVMax), playerID)
    UPLVNeed = ipyData.GetUPLVNeed()
    if heroLV < UPLVNeed:
        GameWorld.DebugLog("武将等级不足,无法突破: heroLV=%s < %s" % (heroLV, UPLVNeed), playerID)
        return
    nextBreakLV = breakLV + 1
    if not IpyGameDataPY.GetIpyGameData("HeroQualityBreak", quality, nextBreakLV):
        GameWorld.DebugLog("突破等级已满级: quality=%s,breakLV=%s" % (quality, breakLV), playerID)
        return
    costItemInfo = ipyData.GetUPCostItem()
    if not costItemInfo:
        return
    costItemID, costItemCount = costItemInfo
    if not costItemID or not costItemCount:
    costItemList = ipyData.GetUPCostItemList()
    if not costItemList:
        return
    itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
    hasEnough, itemIndexList = ItemCommon.GetItem_FromPack_ByID(costItemID, itemPack, costItemCount)
    if not hasEnough:
        GameWorld.DebugLog("材料不足,武将无法突破! costItemID=%s, costItemCount=%s" % (costItemID, costItemCount))
    lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList(costItemList, itemPack)
    if lackItemDict:
        GameWorld.DebugLog("材料不足,武将无法突破! quality=%s,breakLV=%s,lackItemDict=%s" % (quality, breakLV, lackItemDict), playerID)
        return
    ItemCommon.ReduceItem(curPlayer, itemPack, itemIndexList, costItemCount, True, "HeroBreak")
    ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, "HeroBreak")
    GameWorld.DebugLog("武将突破: itemIndex=%s,heroID=%s,nextBreakLV=%s" % (itemIndex, heroID, nextBreakLV), playerID)
    SetHeroBreakLV(curPlayer, heroItem, nextBreakLV)
    
@@ -1305,6 +1305,7 @@
    ratio = IpyGameDataPY.GetFuncCfg("HeroRebirth", 5)
    dismissItemList = []
    returnItemDict = {}
    olPlayer = PlayerOnline.GetOnlinePlayer(curPlayer)
    curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptHero)
    for itemIndex in itemIndexList:
        if itemIndex < 0 or itemIndex >= curPack.GetCount():
@@ -1325,6 +1326,10 @@
            GameWorld.DebugLog("上阵中的武将无法遣散! itemIndex=%s,lineupValueList=%s" % (itemIndex, lineupValueList))
            continue
        heroID = heroItem.GetItemTypeID()
        _, effItemIndex, _ = olPlayer.GetHeroEffectiveCard(heroID)
        if itemIndex == effItemIndex:
            GameWorld.DebugLog("生效中的卡牌无法遣散! itemIndex=%s,heroID=%s,effItemIndex=%s" % (itemIndex, heroID, effItemIndex))
            continue
        heroIpyData = IpyGameDataPY.GetIpyGameData("Hero", heroID)
        if not heroIpyData:
            continue
@@ -1445,8 +1450,13 @@
    for syncItem in syncItemDict.values():
        syncItem.Sync_Item()
        
    lineup = PlayerOnline.GetOnlinePlayer(curPlayer).GetLineup(lineupID, False)
    olPlayer = PlayerOnline.GetOnlinePlayer(curPlayer)
    lineup = olPlayer.GetLineup(lineupID, False)
    lineup.UpdLineup(heroItemDict, shapeType)
    # 主阵容调整,重载生效的卡牌
    if lineupID == ShareDefine.Lineup_Main:
        PlayerOnline.reloadEffHeroCard(curPlayer, olPlayer)
    return
def ComLineupValue(lineupID, shapeType, posNum): return lineupID * 10000 + shapeType * 100 + posNum