| | |
| | |
|
| | | 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
|
| | |
|
| | | ## 玩家登录检查学习技能(上线)
|