Skill.lua 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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",1501)
  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. end
  65. -- 玩家进入是也发送连击技能视野包
  66. function Skill.playerequipview(actor, targetPlayer)
  67. local comboSkill = getrolefield(targetPlayer,"role.roleskill.comboskill")
  68. local skillLv = comboSkill.skillLv
  69. local skillCfgId = comboSkill.skillCfgId
  70. if skillCfgId == 0 then
  71. return
  72. end
  73. local rid = getbaseinfo(targetPlayer, "rid")
  74. sendluamsg(actor, LuaMessageIdToClient.RES_COMBO_SKILL_MODEL_VIEW, { tostring(rid), tostring(skillCfgId) ,tostring(skillLv)})
  75. end
  76. -- 判断是不是连击技能
  77. function Skill.isComboSkill(actor,skillId)
  78. local comboSkillInfo = ConfigDataManager.getTableValue("cfg_global","value","id",1501)
  79. local comboSkillTable = string.split(comboSkillInfo,"|")
  80. for index, careerComboSkill in pairs(comboSkillTable) do
  81. local careerComboSkillInfo = string.split(careerComboSkill,"#")
  82. if tonumber(careerComboSkillInfo[2]) == skillId then
  83. return true
  84. end
  85. end
  86. return false
  87. end