hxp
2026-01-20 9bbff431b0f42a19ed6efe6b98164586b5984a20
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMingge.py
@@ -16,6 +16,7 @@
#-------------------------------------------------------------------------------
import GameWorld
import PlayerPreset
import PlayerControl
import ItemControler
import IpyGameDataPY
@@ -246,9 +247,8 @@
    isAutoDec = clientData.AutoDec
    GameWorld.DebugLog("命格装备替换: mgNum=%s,itemIndex=%s,isAutoDec=%s" % (mgNum, itemIndex, isAutoDec), playerID)
    
    openNum = IpyGameDataPY.GetFuncCfg("MinggeCfg", 1)
    if mgNum < 1 or mgNum > openNum:
        GameWorld.DebugLog("命格套编号不支持! mgNum=%s" % mgNum, playerID)
    if not PlayerPreset.GetFuncPresetIDState(curPlayer, mgNum, ShareDefine.FuncPreset_Mingge):
        GameWorld.DebugLog("命格套方案未解锁! mgNum=%s" % mgNum, playerID)
        return
    
    mgTuiyanPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptMGTuiyan)
@@ -291,7 +291,7 @@
        __doDecomposeMingge(curPlayer, [itemIndex])
        
    # 刷属性
    RefreshMinggeAttr(curPlayer)
    RefreshMinggeAttr(curPlayer, mgNum)
    return
#// B2 53 命格祈灵#tagCSMinggeQiling
@@ -338,12 +338,58 @@
    Sync_MinggeInfo(curPlayer)
    return
def RefreshMinggeAttr(curPlayer):
    #CalcMinggeAttr(curPlayer)
    PlayerOnline.GetOnlinePlayer(curPlayer).RefreshRoleAttr()
def RefreshMinggeAttr(curPlayer, mgNum=0):
    CalcMinggeAttr(curPlayer, mgNum)
    PlayerOnline.GetOnlinePlayer(curPlayer).RefreshByFuncPreset(ShareDefine.FuncPreset_Mingge, mgNum)
    return
def CalcMinggeAttr(curPlayer):
def GetMGNumPackIndexList(mgNum):
    mgCnt = len(ChConfig.Def_MGGuayuType)
    startIndex = (mgNum - 1) * mgCnt
    endIndex = startIndex + mgCnt
    return range(startIndex, endIndex)
def CalcMinggeAttr(curPlayer, mgNum=0):
    playerID = curPlayer.GetPlayerID()
    funcPresetType = ShareDefine.FuncPreset_Mingge
    if not mgNum:
        ipyDataList = IpyGameDataPY.GetIpyGameDataList("PresetUnlock", funcPresetType)
        mgPresetIDList = range(1, 1 + len(ipyDataList)) if ipyDataList else []
    else:
        mgPresetIDList = [mgNum]
    olPlayer = PlayerOnline.GetOnlinePlayer(curPlayer)
    equipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptMGGuayu)
    for mgPresetID in mgPresetIDList:
        attrDict, skillLVDict = {}, {}
        if not PlayerPreset.GetFuncPresetIDState(curPlayer, mgPresetID, funcPresetType):
            olPlayer.SetCalcAttr(ChConfig.Def_CalcAttr_Mingge, attrDict, skillLVDict, presetID=mgPresetID)
            continue
        for index in GetMGNumPackIndexList(mgPresetID):
            if index < 0 or index >= equipPack.GetCount():
                continue
            curEquip = equipPack.GetAt(index)
            if not curEquip or curEquip.IsEmpty():
                continue
            legendAttrIDCnt = curEquip.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrID)
            legendAttrValueCnt = curEquip.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValue)
            for i in xrange(min(legendAttrIDCnt, legendAttrValueCnt)):
                attrID = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrID, i)
                attrValue = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrValue, i)
                attrDict[attrID] = attrDict.get(attrID, 0) + attrValue
            for i in xrange(curEquip.GetUserAttrCount(ShareDefine.Def_IudetAddSkillID)):
                skillID = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetAddSkillID, i)
                if skillID:
                    skillLVDict[skillID] = skillLVDict.get(skillID, 0) + 1
        GameWorld.DebugLog("命格属性: %s,skillLVDict=%s,mgPresetID=%s" % (attrDict, skillLVDict, mgPresetID), playerID)
        olPlayer.SetCalcAttr(ChConfig.Def_CalcAttr_Mingge, attrDict, skillLVDict, presetID=mgPresetID)
    return
def Sync_MinggeInfo(curPlayer):