hxp
2025-12-30 c0c57b36817a87c7f80ca67cb604f1f2c91cab30
16 卡牌服务端(Hero 命令增加一键满级;)
1个文件已修改
64 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Hero.py 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Hero.py
@@ -44,12 +44,13 @@
        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, "清未生效: Hero clear [是否包含生效卡]")
        #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
    
    PlayerOnline.GetOnlinePlayer(curPlayer).RefreshRoleAttr()
@@ -60,6 +61,11 @@
    # 阵容上阵
    if value == "f":
        __oneKeyLineup(curPlayer, msgList)
        return
    # 一键满级
    if value == "max":
        __oneKeyMax(curPlayer, msgList)
        return
    
    # 阵容武将
@@ -140,6 +146,9 @@
                if curItem.GetUserAttr(ShareDefine.Def_IudetHeroCardEffective):
                    continue
            curItem.Clear()
        if isAll:
            PlayerOnline.GetOnlinePlayer(curPlayer).SetEffectiveCardDict({}) # 清空生效缓存
        return
        
    # 宿缘
@@ -236,6 +245,44 @@
        GameWorld.DebugAnswer(curPlayer, "设置武将觉醒: %s,itemIndex=%s" % (awakeLV, itemIndex))
        
    PlayerOnline.GetOnlinePlayer(curPlayer).OnHeroItemUpate(heroItem) # GM修改
    return
def __oneKeyMax(curPlayer, msgList):
    ## 一键满级: Hero max [指定等级 星级 突破 觉醒]
    setLV = msgList[2] if len(msgList) > 2 else None
    setStar = msgList[3] if len(msgList) > 3 else None
    setBreakLV = msgList[4] if len(msgList) > 4 else None
    setAwakeLV = msgList[5] if len(msgList) > 5 else None
    heroIDList = []
    ipyDataMgr = IpyGameDataPY.IPY_Data()
    for index in range(ipyDataMgr.GetHeroCount()):
        ipyData = ipyDataMgr.GetHeroByIndex(index)
        if not ipyData.GetPlayerCanUse():
            continue
        heroIDList.append(ipyData.GetHeroID())
    curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptHero)
    for index in range(curPack.GetCount()):
        heroItem = curPack.GetAt(index)
        if not heroItem or heroItem.IsEmpty():
            continue
        heroID = heroItem.GetItemTypeID()
        if heroID in heroIDList:
            heroIDList.remove(heroID)
    # 给没有的武将
    for heroID in heroIDList:
        ItemControler.GivePlayerItem(curPlayer, heroID, 1, False)
    # 设置一键满
    for index in range(curPack.GetCount()):
        heroItem = curPack.GetAt(index)
        if not heroItem or heroItem.IsEmpty():
            continue
        __setHeroItem(curPlayer, heroItem, setLV, setStar, setBreakLV, setAwakeLV)
    GameWorld.DebugAnswer(curPlayer, "一键OK!")
    return
def __oneKeyLineup(curPlayer, msgList):
@@ -347,14 +394,20 @@
        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)
        if not heroIpyData:
            continue
        return
        quality = heroIpyData.GetQuality()
        qualityIpyData = IpyGameDataPY.GetIpyGameData("HeroQuality", quality)
        if not qualityIpyData:
            continue
        return
        singleItem = heroItem.GetItem()
        
        # 天赋        
@@ -376,6 +429,7 @@
        while awakeRandCnt and doCnt <= 10:
            doCnt += 1
            selectIndex = random.randint(0, awakeRandCnt - 1)
        itemIndex = heroItem.GetItemPlaceIndex()
            PlayerHero.doSelectAwakeTalent(curPlayer, itemIndex, selectIndex, False)
            awakeRandCnt = singleItem.GetUserAttrCount(ShareDefine.Def_IudetHeroTalentIDAwakeRand)
            
@@ -420,6 +474,4 @@
            
        heroItem.Sync_Item()
        PlayerOnline.GetOnlinePlayer(curPlayer).OnHeroItemUpate(heroItem) # GM修改阵容
    GameWorld.DebugAnswer(curPlayer, "设置阵容武将OK")
    return