xdh
2019-06-18 d234a98ab0ad9f728165c766fa6d098a4fb0c537
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
@@ -1358,6 +1358,10 @@
    if curPlayer.GetHP() <= 0:
        return
    
    if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
        #GameWorld.DebugLog("自定义场景中,不检查!")
        return True
    #===========================================================================
    # if curPlayer.IsMoving():
    #    GameWorld.DebugLog("移动中不可使用技能")
@@ -2069,6 +2073,7 @@
#{
#    tagHead        Head;
#    DWORD    SkillTypeID;    // 专精技能ID
#    BYTE    DoType;    // 0-激活升级 1-使用
#};
def OnSelectSkillElement(index, clientData, tick):
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
@@ -2086,26 +2091,36 @@
    if not mainSkill:
        GameWorld.DebugLog('主技能未学习,无法选专精mainSkillID=%s'%mainSkillID)
        return
    doType = clientData.DoType
    curElementSkillID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SkillElementID % mainSkillID)
    activeSkillLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SkillElementLV % selectSkillID)
    #先判断是否可升级
    updSelectSkillLV = activeSkillLV
    nextSkill = GameWorld.GetGameData().FindSkillByType(selectSkillID, activeSkillLV + 1)
    if nextSkill:
        if CheckLearnSkillNeedAttr(curPlayer, nextSkill):
            updSelectSkillLV = activeSkillLV + 1
            skillElementType = GetSkillElementType(nextSkill)
    isChangeSkill = False #是否变更生效的技能
    if updSelectSkillLV != activeSkillLV:
    updSelectSkillLV = activeSkillLV
    #先判断是否可升级
    if doType is 0:
        nextSkill = GameWorld.GetGameData().FindSkillByType(selectSkillID, activeSkillLV + 1)
        if not nextSkill:
            return
        if not CheckLearnSkillNeedAttr(curPlayer, nextSkill):
            return
        updSelectSkillLV = activeSkillLV + 1
        skillElementType = GetSkillElementType(nextSkill)
        #可升级则激活升一级
        EventShell.EventRespons_ElementSkill(curPlayer, mainSkillID, skillElementType, updSelectSkillLV)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SkillElementLV % selectSkillID, updSelectSkillLV)
        if curElementSkillID == selectSkillID:
            #正在使用的专精技能,则立即生效
            isChangeSkill = True
    elif selectSkillID != curElementSkillID:
    else: # 使用
        if not activeSkillLV:
            #未激活不能使用
            return
        if selectSkillID == curElementSkillID:
            return
        isChangeSkill = True
    if isChangeSkill:
        #更换专精
        if not RefreshElementSkill(curPlayer, selectSkillID)[1]:
@@ -2113,10 +2128,9 @@
            return
        
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SkillElementID % mainSkillID, selectSkillID)
        if curElementSkillID:
            if curElementSkillID != selectSkillID:
                #原技能删除
                skillManager.DeleteSkillBySkillTypeID(curElementSkillID)
        if curElementSkillID and curElementSkillID != selectSkillID:
            #原技能删除
            skillManager.DeleteSkillBySkillTypeID(curElementSkillID)
        
    
        # 重刷被动技能