Commit 0889982f67e8650efffbabf5f8929da151b6bcb1

Authored by zhouhaihai
1 parent 1103490d

优化角色技能等级

src/ProtocolCode.lua
... ... @@ -69,7 +69,7 @@ actionCodes = {
69 69 Hero_levelUpRpc = 203,
70 70 Hero_breakRpc = 204,
71 71 Hero_wakeRpc = 205,
72   - Hero_skillUpRpc = 206,
  72 +
73 73 Hero_talentRpc = 207,
74 74 Hero_likeHeroRpc = 208,
75 75 Hero_commentHeroRpc = 209,
... ...
src/actions/HeroAction.lua
... ... @@ -72,24 +72,8 @@ function _M.wakeRpc(agent, data)
72 72 return 4
73 73 end
74 74  
75   - local skills = {}
76   - for _,v in pairs(wakeData.skill:toArray(true,"=") ) do
77   - local skillSet = hero:getSkillData(v)
78   - if skillSet and next(skillSet) then
79   - local skillLv = hero:getSkillLevel(v)+1
80   - local skillData = skillSet[skillLv]
81   - if skillData and next(skillData) then
82   - skills[v] = skillLv
83   - else
84   - return 5
85   - end
86   - end
87   - end
88   -
89 75 role:costItems(cost, {log = {desc = "heroWake", int1 = msg.id, int2 = hero:getProperty("type")}})
90   - for k,v in pairs(skills) do
91   - hero:updateProperty({field = "skillL", value = hero:getProperty("skillL"):setv(k, v)})
92   - end
  76 +
93 77 hero:updateProperty({field = "wakeL", delta = 1})
94 78  
95 79 local curLevel = hero:getProperty("wakeL")
... ... @@ -104,22 +88,6 @@ function _M.wakeRpc(agent, data)
104 88 return true
105 89 end
106 90  
107   --- 已取消技能升级功能,觉醒时自动升级技能
108   -function _M.skillUpRpc(agent, data)
109   - local role = agent.role
110   - local msg = MsgPack.unpack(data)
111   - local index = msg.skillIdx -- 第几个技能 -- 1 2 3
112   - local hero = role.heros[msg.id]
113   - if not hero then return end
114   - local curLevel = hero:getSkillLevel(index)
115   - if hero:getLSPoint() <= 0 or curLevel >= #hero:getSkillData(index) then return end
116   - hero:updateProperty({field = "skillL", value = hero:getProperty("skillL"):setv(index, curLevel + 1)})
117   -
118   - hero:log({desc = "skillUp", int1 = index, int2 = curLevel + 1})
119   -
120   - SendPacket(actionCodes.Hero_skillUpRpc, '')
121   - return true
122   -end
123 91  
124 92 function _M.talentRpc(agent, data)
125 93 local role = agent.role
... ...
src/models/Hero.lua
... ... @@ -9,7 +9,6 @@ Hero.schema = {
9 9 level = {"number", 1}, -- 等级
10 10 breakL = {"number", 0}, -- 突破等级
11 11 wakeL = {"number", 1}, -- 觉醒等级
12   - skillL = {"string", ""}, -- 技能等级 1=1 2=1 3=1
13 12 talent = {"string", ""}, -- 0=阶段 1=1 2=1 3=1 4=1 四个天赋当前阶段的等级 阶段默认为1 等级默认为0
14 13 battleV = {"number", 0}, -- 保存战斗力
15 14 -- loveExp = {"number", 0}, --好感度经验
... ... @@ -97,7 +96,6 @@ function Hero:data()
97 96 level = self:getProperty("level"),
98 97 breakL = self:getProperty("breakL"),
99 98 wakeL = self:getProperty("wakeL"),
100   - skillL = self:getProperty("skillL"),
101 99 talent = self:getProperty("talent"),
102 100 battleV = self:getProperty("battleV"),
103 101 -- loveExp = self:getProperty("loveExp"),
... ...
src/models/HeroPlugin.lua
... ... @@ -18,24 +18,6 @@ function HeroPlugin.bind(Hero)
18 18 return math.min(#csvdb["unit_expCsv"], csvdb["unit_breakCsv"][self:getProperty("breakL")].levelLimit)
19 19 end
20 20  
21   - function Hero:getSPoint()
22   - local point = 0
23   - for i = 0, self:getProperty("wakeL") do
24   - if csvdb["unit_wakeCsv"][i] then
25   - point = point + csvdb["unit_wakeCsv"][i].sp
26   - end
27   - end
28   - return point
29   - end
30   -
31   - function Hero:getLSPoint()
32   - local point = self:getSPoint()
33   - for skill, level in pairs(self:getProperty("skillL"):toNumMap()) do
34   - point = point - (level - 1)
35   - end
36   - return point
37   - end
38   -
39 21 --角色属性值 = 基础属性值(unit)* [ 1 + 升级属性(unit_exp)+ 突破属性(unit_break)] * [ 1 + 觉醒属性(unit_wake)+ 天赋属性(unit_talent)]
40 22 function Hero:getBaseAttrs(params)
41 23 params = params or {}
... ... @@ -211,7 +193,16 @@ function HeroPlugin.bind(Hero)
211 193  
212 194 -- 技能1234 对应必杀技,冒险技,被动技,战斗技
213 195 function Hero:getSkillLevel(idx)
214   - return self:getProperty("skillL"):getv(idx, 1)
  196 + local level = 1
  197 + for wakeL = 1, self:getProperty("wakeL") do
  198 + local wakeData = csvdb["unit_wakeCsv"][wakeL]
  199 + for _, slot in ipairs(wakeData.skill:toArray(true,"=")) do
  200 + if slot == idx then
  201 + level = level + 1
  202 + end
  203 + end
  204 + end
  205 + return level
215 206 end
216 207  
217 208 function Hero:getSkillData(idx)
... ...