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",1501) -- 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)}) 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",1501) 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