Commit 0889982f67e8650efffbabf5f8929da151b6bcb1

Authored by zhouhaihai
1 parent 1103490d

优化角色技能等级

src/ProtocolCode.lua
@@ -69,7 +69,7 @@ actionCodes = { @@ -69,7 +69,7 @@ actionCodes = {
69 Hero_levelUpRpc = 203, 69 Hero_levelUpRpc = 203,
70 Hero_breakRpc = 204, 70 Hero_breakRpc = 204,
71 Hero_wakeRpc = 205, 71 Hero_wakeRpc = 205,
72 - Hero_skillUpRpc = 206, 72 +
73 Hero_talentRpc = 207, 73 Hero_talentRpc = 207,
74 Hero_likeHeroRpc = 208, 74 Hero_likeHeroRpc = 208,
75 Hero_commentHeroRpc = 209, 75 Hero_commentHeroRpc = 209,
src/actions/HeroAction.lua
@@ -72,24 +72,8 @@ function _M.wakeRpc(agent, data) @@ -72,24 +72,8 @@ function _M.wakeRpc(agent, data)
72 return 4 72 return 4
73 end 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 role:costItems(cost, {log = {desc = "heroWake", int1 = msg.id, int2 = hero:getProperty("type")}}) 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 hero:updateProperty({field = "wakeL", delta = 1}) 77 hero:updateProperty({field = "wakeL", delta = 1})
94 78
95 local curLevel = hero:getProperty("wakeL") 79 local curLevel = hero:getProperty("wakeL")
@@ -104,22 +88,6 @@ function _M.wakeRpc(agent, data) @@ -104,22 +88,6 @@ function _M.wakeRpc(agent, data)
104 return true 88 return true
105 end 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 function _M.talentRpc(agent, data) 92 function _M.talentRpc(agent, data)
125 local role = agent.role 93 local role = agent.role
src/models/Hero.lua
@@ -9,7 +9,6 @@ Hero.schema = { @@ -9,7 +9,6 @@ Hero.schema = {
9 level = {"number", 1}, -- 等级 9 level = {"number", 1}, -- 等级
10 breakL = {"number", 0}, -- 突破等级 10 breakL = {"number", 0}, -- 突破等级
11 wakeL = {"number", 1}, -- 觉醒等级 11 wakeL = {"number", 1}, -- 觉醒等级
12 - skillL = {"string", ""}, -- 技能等级 1=1 2=1 3=1  
13 talent = {"string", ""}, -- 0=阶段 1=1 2=1 3=1 4=1 四个天赋当前阶段的等级 阶段默认为1 等级默认为0 12 talent = {"string", ""}, -- 0=阶段 1=1 2=1 3=1 4=1 四个天赋当前阶段的等级 阶段默认为1 等级默认为0
14 battleV = {"number", 0}, -- 保存战斗力 13 battleV = {"number", 0}, -- 保存战斗力
15 -- loveExp = {"number", 0}, --好感度经验 14 -- loveExp = {"number", 0}, --好感度经验
@@ -97,7 +96,6 @@ function Hero:data() @@ -97,7 +96,6 @@ function Hero:data()
97 level = self:getProperty("level"), 96 level = self:getProperty("level"),
98 breakL = self:getProperty("breakL"), 97 breakL = self:getProperty("breakL"),
99 wakeL = self:getProperty("wakeL"), 98 wakeL = self:getProperty("wakeL"),
100 - skillL = self:getProperty("skillL"),  
101 talent = self:getProperty("talent"), 99 talent = self:getProperty("talent"),
102 battleV = self:getProperty("battleV"), 100 battleV = self:getProperty("battleV"),
103 -- loveExp = self:getProperty("loveExp"), 101 -- loveExp = self:getProperty("loveExp"),
src/models/HeroPlugin.lua
@@ -18,24 +18,6 @@ function HeroPlugin.bind(Hero) @@ -18,24 +18,6 @@ function HeroPlugin.bind(Hero)
18 return math.min(#csvdb["unit_expCsv"], csvdb["unit_breakCsv"][self:getProperty("breakL")].levelLimit) 18 return math.min(#csvdb["unit_expCsv"], csvdb["unit_breakCsv"][self:getProperty("breakL")].levelLimit)
19 end 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 --角色属性值 = 基础属性值(unit)* [ 1 + 升级属性(unit_exp)+ 突破属性(unit_break)] * [ 1 + 觉醒属性(unit_wake)+ 天赋属性(unit_talent)] 21 --角色属性值 = 基础属性值(unit)* [ 1 + 升级属性(unit_exp)+ 突破属性(unit_break)] * [ 1 + 觉醒属性(unit_wake)+ 天赋属性(unit_talent)]
40 function Hero:getBaseAttrs(params) 22 function Hero:getBaseAttrs(params)
41 params = params or {} 23 params = params or {}
@@ -211,7 +193,16 @@ function HeroPlugin.bind(Hero) @@ -211,7 +193,16 @@ function HeroPlugin.bind(Hero)
211 193
212 -- 技能1234 对应必杀技,冒险技,被动技,战斗技 194 -- 技能1234 对应必杀技,冒险技,被动技,战斗技
213 function Hero:getSkillLevel(idx) 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 end 206 end
216 207
217 function Hero:getSkillData(idx) 208 function Hero:getSkillData(idx)