Skill = {} local this = {} -- 计算连击值 function Skill.calculationComboValue(actor,skillCfgId,skillLevel,skill) local growthFactor = ConfigDataManager.getTableValue("cfg_skill_info","growthFactor","skillID",skillCfgId,"skillLevel",skillLevel) local comboValue = ConfigDataManager.getTableValue("cfg_skill","comboValue","id",skill) if string.isNullOrEmpty(comboValue) or string.isNullOrEmpty(growthFactor) then return 0 end local add = math.ceil(tonumber(comboValue) * tonumber(growthFactor) / 10000) return add end -- 添加连击技能 function Skill.ComboSkillUp(actor) local comboSkill = getrolefield(actor,"role.roleskill.comboskill") local skillLv = comboSkill.skillLv local skillCfgId = comboSkill.skillCfgId if skillCfgId == 0 then local comboSkillInfo = ConfigDataManager.getTableValue("cfg_global","value","id",GlobalConfigId.COMBO_SKILL_INFO) -- error(comboSkillInfo) local baseCareer = getbaseinfo(actor, "getbasecareer") local comboSkillTable = string.split(comboSkillInfo,"|") for index, careerComboSkill in pairs(comboSkillTable) do local careerComboSkillInfo = string.split(careerComboSkill,"#") if tonumber(careerComboSkillInfo[1]) == tonumber(baseCareer) then skillCfgId = tonumber(careerComboSkillInfo[2]) end end skillLv = 0 end skillLv = skillLv + 1 local skillInfo = ConfigDataManager.getTable("cfg_skill_info","skillID",skillCfgId,"skillLevel",skillLv) if table.isEmpty(skillInfo) then -- error("没有找到连击技能的配置信息") return end local skill = skillInfo[1] local skillLevelUpItemID = skill.skilllevelupitemid if not string.isNullOrEmpty(skillLevelUpItemID) then local skillLevelUpItemTable = string.split(skillLevelUpItemID,"|") local cost = {} for index, skillLevelUpItem in pairs(skillLevelUpItemTable) do local itemInfo = string.split(skillLevelUpItem, "#") local itemCfgId = tonumber(itemInfo[1]) local count = tonumber(itemInfo[2]) local have = getbagitemcountbyid(actor,itemCfgId) if have < count then tipinfo(actor,"连击技能已经提升到最高等级,无法再升级了") -- noticeTip.noticeinfo(actor, StringIdConst.TEXT346) return end cost[tostring(itemCfgId)] = count end for index, costCount in pairs(cost) do removeitemfrombag(actor,index,costCount,0,9999,'连击技能') end end local nextSkillLevel = skillLv addcomboskill(actor,skillCfgId,nextSkillLevel) TaskHandler.TriggerTaskGoal(actor, TaskTargetType.ACTIVATE_COMBO_SKILL) OpenServerCompetition.updateRankData(actor, CompetitionType.COMBO_SKILL, nextSkillLevel) local rid = getbaseinfo(actor, "rid") sendrefluamsg(actor,LuaMessageIdToClient.RES_COMBO_SKILL_MODEL_VIEW,{ tostring(rid), tostring(skillCfgId) ,tostring(skillLv)}) LogManager.RoleUpComboSkill(actor, nextSkillLevel) end -- 玩家进入是也发送连击技能视野包 function Skill.playerequipview(actor, targetPlayer) local comboSkill = getrolefield(targetPlayer,"role.roleskill.comboskill") local skillLv = comboSkill.skillLv local skillCfgId = comboSkill.skillCfgId if skillCfgId == 0 then return end local rid = getbaseinfo(targetPlayer, "rid") sendluamsg(actor, LuaMessageIdToClient.RES_COMBO_SKILL_MODEL_VIEW, { tostring(rid), tostring(skillCfgId) ,tostring(skillLv)}) end -- 判断是不是连击技能 function Skill.isComboSkill(actor,skillId) local comboSkillInfo = ConfigDataManager.getTableValue("cfg_global","value","id",GlobalConfigId.COMBO_SKILL_INFO) local comboSkillTable = string.split(comboSkillInfo,"|") for index, careerComboSkill in pairs(comboSkillTable) do local careerComboSkillInfo = string.split(careerComboSkill,"#") if tonumber(careerComboSkillInfo[2]) == skillId then return true end end return false end --- 学习或升级技能 function Skill.levelUp(actor,skillInfo) if skillInfo == SkillConfigId.DEMON_HERMIT_SKILL_ID then levelupskill(actor,SkillConfigId.DEMON_HERMIT_COMMON_ONE_SKILL_ID,1,0) levelupskill(actor,SkillConfigId.DEMON_HERMIT_COMMON_TWO_SKILL_ID,1,0) levelupskill(actor,SkillConfigId.DEMON_HERMIT_COMMON_THREE_SKILL_ID,1,0) end end function skilltest(actor) Skill.releaseSkill(actor,SkillConfigId.DEMON_HERMIT_SKILL_ID) end --- 技能生效前触发 function Skill.releaseSkill(actor,skillid) if skillid == SkillConfigId.DEMON_HERMIT_SKILL_ID then setplaydef(actor, PlayerDefKey.skill.DEMON_HERMIT_SKILL, 1) local skillTable = {SkillConfigId.DEMON_HERMIT_COMMON_ONE_SKILL_ID,SkillConfigId.DEMON_HERMIT_COMMON_TWO_SKILL_ID,SkillConfigId.DEMON_HERMIT_COMMON_THREE_SKILL_ID} setskillopen(actor,skillTable,1) --setskillopen(actor,SkillConfigId.DEMON_HERMIT_COMMON_ONE_SKILL_ID,1) --setskillopen(actor,SkillConfigId.DEMON_HERMIT_COMMON_TWO_SKILL_ID,1) --setskillopen(actor,SkillConfigId.DEMON_HERMIT_COMMON_THREE_SKILL_ID,1) SceneMap.sendEnterViewInfoByType(actor, SceneMap.viewKey.DEMON_HERMIT_SKILL, 1) end end --- 关闭恶灵召唤技能 function Skill.closeDemonHermitSkill(actor) local skill = getplaydef(actor, PlayerDefKey.skill.DEMON_HERMIT_SKILL) if skill and skill == 1 then local skillTable = {SkillConfigId.DEMON_HERMIT_COMMON_ONE_SKILL_ID,SkillConfigId.DEMON_HERMIT_COMMON_TWO_SKILL_ID,SkillConfigId.DEMON_HERMIT_COMMON_THREE_SKILL_ID} setskillopen(actor,skillTable,0) --setskillopen(actor,SkillConfigId.DEMON_HERMIT_COMMON_TWO_SKILL_ID,0) --setskillopen(actor,SkillConfigId.DEMON_HERMIT_COMMON_THREE_SKILL_ID,0) SceneMap.sendEnterViewInfoByType(actor, SceneMap.viewKey.DEMON_HERMIT_SKILL, 0) setplaydef(actor, PlayerDefKey.skill.DEMON_HERMIT_SKILL,0) info("关闭召唤恶灵") end end