Skill.lua 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. Skill = {}
  2. local this = {}
  3. -- 计算连击值
  4. function Skill.calculationComboValue(actor,skillCfgId,skillLevel,skill)
  5. local growthFactor = ConfigDataManager.getTableValue("cfg_skill_info","growthFactor","skillID",skillCfgId,"skillLevel",skillLevel)
  6. local comboValue = ConfigDataManager.getTableValue("cfg_skill","comboValue","id",skill)
  7. if string.isNullOrEmpty(comboValue) or string.isNullOrEmpty(growthFactor) then
  8. return 0
  9. end
  10. local add = math.ceil(tonumber(comboValue) * tonumber(growthFactor) / 10000)
  11. return add
  12. end
  13. -- 添加连击技能
  14. function Skill.ComboSkillUp(actor)
  15. local comboSkill = getrolefield(actor,"role.roleskill.comboskill")
  16. local skillLv = comboSkill.skillLv
  17. local skillCfgId = comboSkill.skillCfgId
  18. if skillCfgId == 0 then
  19. local comboSkillInfo = ConfigDataManager.getTableValue("cfg_global","value","id",GlobalConfigId.COMBO_SKILL_INFO)
  20. -- error(comboSkillInfo)
  21. local baseCareer = getbaseinfo(actor, "getbasecareer")
  22. local comboSkillTable = string.split(comboSkillInfo,"|")
  23. for index, careerComboSkill in pairs(comboSkillTable) do
  24. local careerComboSkillInfo = string.split(careerComboSkill,"#")
  25. if tonumber(careerComboSkillInfo[1]) == tonumber(baseCareer) then
  26. skillCfgId = tonumber(careerComboSkillInfo[2])
  27. end
  28. end
  29. skillLv = 0
  30. end
  31. skillLv = skillLv + 1
  32. local skillInfo = ConfigDataManager.getTable("cfg_skill_info","skillID",skillCfgId,"skillLevel",skillLv)
  33. if table.isEmpty(skillInfo) then
  34. -- error("没有找到连击技能的配置信息")
  35. return
  36. end
  37. local skill = skillInfo[1]
  38. local skillLevelUpItemID = skill.skilllevelupitemid
  39. if not string.isNullOrEmpty(skillLevelUpItemID) then
  40. local skillLevelUpItemTable = string.split(skillLevelUpItemID,"|")
  41. local cost = {}
  42. for index, skillLevelUpItem in pairs(skillLevelUpItemTable) do
  43. local itemInfo = string.split(skillLevelUpItem, "#")
  44. local itemCfgId = tonumber(itemInfo[1])
  45. local count = tonumber(itemInfo[2])
  46. local have = getbagitemcountbyid(actor,itemCfgId)
  47. if have < count then
  48. tipinfo(actor,"连击技能已经提升到最高等级,无法再升级了")
  49. -- noticeTip.noticeinfo(actor, StringIdConst.TEXT346)
  50. return
  51. end
  52. cost[tostring(itemCfgId)] = count
  53. end
  54. for index, costCount in pairs(cost) do
  55. removeitemfrombag(actor,index,costCount,0,9999,'连击技能')
  56. end
  57. end
  58. local nextSkillLevel = skillLv
  59. addcomboskill(actor,skillCfgId,nextSkillLevel)
  60. TaskHandler.TriggerTaskGoal(actor, TaskTargetType.ACTIVATE_COMBO_SKILL)
  61. OpenServerCompetition.updateRankData(actor, CompetitionType.COMBO_SKILL, nextSkillLevel)
  62. local rid = getbaseinfo(actor, "rid")
  63. sendrefluamsg(actor,LuaMessageIdToClient.RES_COMBO_SKILL_MODEL_VIEW,{ tostring(rid), tostring(skillCfgId) ,tostring(skillLv)})
  64. LogManager.RoleUpComboSkill(actor, nextSkillLevel)
  65. end
  66. -- 玩家进入是也发送连击技能视野包
  67. function Skill.playerequipview(actor, targetPlayer)
  68. local comboSkill = getrolefield(targetPlayer,"role.roleskill.comboskill")
  69. local skillLv = comboSkill.skillLv
  70. local skillCfgId = comboSkill.skillCfgId
  71. if skillCfgId == 0 then
  72. return
  73. end
  74. local rid = getbaseinfo(targetPlayer, "rid")
  75. sendluamsg(actor, LuaMessageIdToClient.RES_COMBO_SKILL_MODEL_VIEW, { tostring(rid), tostring(skillCfgId) ,tostring(skillLv)})
  76. end
  77. -- 判断是不是连击技能
  78. function Skill.isComboSkill(actor,skillId)
  79. local comboSkillInfo = ConfigDataManager.getTableValue("cfg_global","value","id",GlobalConfigId.COMBO_SKILL_INFO)
  80. local comboSkillTable = string.split(comboSkillInfo,"|")
  81. for index, careerComboSkill in pairs(comboSkillTable) do
  82. local careerComboSkillInfo = string.split(careerComboSkill,"#")
  83. if tonumber(careerComboSkillInfo[2]) == skillId then
  84. return true
  85. end
  86. end
  87. return false
  88. end
  89. --- 学习或升级技能
  90. function Skill.levelUp(actor,skillInfo)
  91. if skillInfo == SkillConfigId.DEMON_HERMIT_SKILL_ID then
  92. levelupskill(actor,SkillConfigId.DEMON_HERMIT_COMMON_ONE_SKILL_ID,1,0)
  93. levelupskill(actor,SkillConfigId.DEMON_HERMIT_COMMON_TWO_SKILL_ID,1,0)
  94. levelupskill(actor,SkillConfigId.DEMON_HERMIT_COMMON_THREE_SKILL_ID,1,0)
  95. end
  96. end
  97. function skilltest(actor)
  98. Skill.releaseSkill(actor,SkillConfigId.DEMON_HERMIT_SKILL_ID)
  99. end
  100. --- 技能生效前触发
  101. function Skill.releaseSkill(actor,skillid)
  102. if skillid == SkillConfigId.DEMON_HERMIT_SKILL_ID then
  103. setplaydef(actor, PlayerDefKey.skill.DEMON_HERMIT_SKILL, 1)
  104. local skillTable = {SkillConfigId.DEMON_HERMIT_COMMON_ONE_SKILL_ID,SkillConfigId.DEMON_HERMIT_COMMON_TWO_SKILL_ID,SkillConfigId.DEMON_HERMIT_COMMON_THREE_SKILL_ID}
  105. setskillopen(actor,skillTable,1)
  106. --setskillopen(actor,SkillConfigId.DEMON_HERMIT_COMMON_ONE_SKILL_ID,1)
  107. --setskillopen(actor,SkillConfigId.DEMON_HERMIT_COMMON_TWO_SKILL_ID,1)
  108. --setskillopen(actor,SkillConfigId.DEMON_HERMIT_COMMON_THREE_SKILL_ID,1)
  109. SceneMap.sendEnterViewInfoByType(actor, SceneMap.viewKey.DEMON_HERMIT_SKILL, 1)
  110. end
  111. end
  112. --- 关闭恶灵召唤技能
  113. function Skill.closeDemonHermitSkill(actor)
  114. local skill = getplaydef(actor, PlayerDefKey.skill.DEMON_HERMIT_SKILL)
  115. if skill and skill == 1 then
  116. local skillTable = {SkillConfigId.DEMON_HERMIT_COMMON_ONE_SKILL_ID,SkillConfigId.DEMON_HERMIT_COMMON_TWO_SKILL_ID,SkillConfigId.DEMON_HERMIT_COMMON_THREE_SKILL_ID}
  117. setskillopen(actor,skillTable,0)
  118. --setskillopen(actor,SkillConfigId.DEMON_HERMIT_COMMON_TWO_SKILL_ID,0)
  119. --setskillopen(actor,SkillConfigId.DEMON_HERMIT_COMMON_THREE_SKILL_ID,0)
  120. SceneMap.sendEnterViewInfoByType(actor, SceneMap.viewKey.DEMON_HERMIT_SKILL, 0)
  121. setplaydef(actor, PlayerDefKey.skill.DEMON_HERMIT_SKILL,0)
  122. info("关闭召唤恶灵")
  123. end
  124. end