From 50cabbbc229d1adc0e427df765cab2dc0889cdf1 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 15 一月 2020 15:58:20 +0800 Subject: [PATCH] 8369 境界修改(升级境界给技能格式改为json字典) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py | 67 +++++++++++++++++++++------------ 1 files changed, 43 insertions(+), 24 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py index a6cdc18..e283f46 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py +++ b/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 ## 玩家登录检查学习技能(上线) -- Gitblit v1.8.0