hxp
2020-01-15 50cabbbc229d1adc0e427df765cab2dc0889cdf1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
@@ -188,42 +188,61 @@
    return
def GivePlayerSkillByJobSkillList(curPlayer, jobSkillList):
    ## 根据职业技能ID列表给玩家技能
def GivePlayerSkillByJobSkill(curPlayer, jobSkillInfo):
    ## 根据职业技能ID给玩家技能, 支持字典{"job":[skillID, ...], ...} {job:[skillID, ...], ...} 或 列表[skillID, ...]
    if not jobSkillInfo:
        return
    jobSkillList = []
    if isinstance(jobSkillInfo, dict):
        job = curPlayer.GetJob()
        if job in jobSkillInfo:
            jobSkillList = jobSkillInfo[job]
        elif str(job) in jobSkillInfo:
            jobSkillList = jobSkillInfo[str(job)]
    elif isinstance(jobSkillInfo, list) or isinstance(jobSkillInfo, tuple):
        jobSkillList = jobSkillInfo
    jobSkillList = list(jobSkillList)
    
    if not jobSkillList:
        return
    
    skillLV = 1
    giveSkill = None
    skillManager = curPlayer.GetSkillManager()
    playerControl = PlayerControl.PlayerControl(curPlayer)
    GameWorld.DebugLog("给玩家技能: %s" % jobSkillList)
    for skillID in jobSkillList:
        skillData = GameWorld.GetGameData().FindSkillByType(skillID, skillLV)
        skillData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
        if skillData == None:
            continue
        if not CheckSkillJob(curPlayer, skillData):
            continue
        if not SkillShell.CheckLearnSkillCondition(curPlayer, skillData):
            continue
        giveSkill = skillData
        break
    if not giveSkill:
        GameWorld.ErrLog("找不到可以给的技能!jobSkillList=%s" % str(jobSkillList))
        return
    skillTypeID = giveSkill.GetSkillTypeID()
    skillManager = curPlayer.GetSkillManager()
    if skillManager.FindSkillBySkillTypeID(skillTypeID):
        #GameWorld.DebugLog("已经有该技能!")
        return
    skillManager.LVUpSkillBySkillTypeID(skillTypeID)
    GameWorld.DebugLog("    给玩家技能: skillTypeID=%s" % (skillTypeID), curPlayer.GetID())
    if isPassiveSkill(giveSkill):
        PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEff(curPlayer, skillTypeID)
        
    DataRecordPack.DR_LearnORUPSkill(curPlayer, skillTypeID, skillLV)
    PlayerControl.PlayerControl(curPlayer).RefreshSkillFightPowerEx(skillTypeID, 0)
        if skillManager.FindSkillBySkillID(skillID):
            #GameWorld.DebugLog("已经有该技能!skillID=%s" % skillID)
            continue
        skillLV = skillData.GetSkillLV()
        skillTypeID = skillData.GetSkillTypeID()
        beforeFightPower = 0
        if skillLV > 1:
            befSkill = skillManager.FindSkillBySkillTypeID(skillTypeID)
            beforeFightPower = 0 if not befSkill else befSkill.GetFightPower()
        skillManager.LVUPSkillByID(skillID)
        GameWorld.DebugLog("    给玩家技能: skillTypeID=%s,skillID=%s,skillLV=%s" % (skillTypeID, skillID, skillLV), curPlayer.GetID())
        DataRecordPack.DR_LearnORUPSkill(curPlayer, skillTypeID, skillLV)
        if isPassiveSkill(skillData):
            pass
            #PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEff(curPlayer, skillTypeID)
        playerControl.RefreshSkillFightPowerEx(skillID, beforeFightPower, isRefreshState=False)
    playerControl.RefreshPlayerAttrState()
    return
## 玩家登录检查学习技能(上线)