Commit 9962b061fa40582d9c186888aa71bcddab4e8f96
1 parent
5af8b4aa
补充 挂机
Showing
4 changed files
with
66 additions
and
16 deletions
Show diff stats
src/ProtocolCode.lua
src/actions/HangAction.lua
... | ... | @@ -24,11 +24,11 @@ local function checkReward(role) |
24 | 24 | local carbonData = csvdb["idle_battleCsv"][hangInfo.carbonId] |
25 | 25 | local nowTime = math.min(skynet.timex(), hangInfo.endTime or 0) |
26 | 26 | |
27 | - local coinCount = math.max(0, math.floor((nowTime - hangInfo.coinTime) / 5)) | |
28 | - hangInfo.coinTime = hangInfo.coinTime + coinCount * 5 | |
27 | + local coinCount = math.max(0, math.floor((nowTime - hangInfo.coinTime) / globalCsv.idle_money_produce_cd)) | |
28 | + hangInfo.coinTime = hangInfo.coinTime + coinCount * globalCsv.idle_money_produce_cd | |
29 | 29 | |
30 | - local itemCount = math.max(0, math.floor((nowTime - hangInfo.itemTime) / 60)) | |
31 | - hangInfo.itemTime = hangInfo.itemTime + itemCount * 60 | |
30 | + local itemCount = math.max(0, math.floor((nowTime - hangInfo.itemTime) / globalCsv.idle_item_produce_cd)) | |
31 | + hangInfo.itemTime = hangInfo.itemTime + itemCount * globalCsv.idle_item_produce_cd | |
32 | 32 | |
33 | 33 | local items = role:getProperty("hangBag") |
34 | 34 | items[ItemId.Gold] = (items[ItemId.Gold] or 0) + coinCount * carbonData.money |
... | ... | @@ -38,9 +38,20 @@ local function checkReward(role) |
38 | 38 | for _, temp in pairs(carbonData.item:toArray()) do |
39 | 39 | table.insert(pool, temp:toArray(true, "=")) |
40 | 40 | end |
41 | + local curTypeCount = 0 | |
42 | + for id, _ in pairs(items) do | |
43 | + if id ~= ItemId.Gold and id ~= ItemId.Exp then | |
44 | + curTypeCount = curTypeCount + 1 | |
45 | + end | |
46 | + end | |
41 | 47 | for i = 1, itemCount do |
42 | 48 | local cur = pool[math.randWeight(pool, 3)] |
43 | - items[cur[1]] = (items[cur[1]] or 0) + cur[2] | |
49 | + if items[cur[1]] or curTypeCount < role:getProperty("hangBagLimit") then | |
50 | + if not items[cur[1]] then | |
51 | + curTypeCount = curTypeCount + 1 | |
52 | + end | |
53 | + items[cur[1]] = (items[cur[1]] or 0) + cur[2] | |
54 | + end | |
44 | 55 | end |
45 | 56 | |
46 | 57 | if coinCount > 0 or itemCount > 0 then |
... | ... | @@ -72,7 +83,7 @@ function _M.startRpc( agent, data ) |
72 | 83 | hangInfo.coinTime = nowTime |
73 | 84 | hangInfo.itemTime = nowTime |
74 | 85 | if isNew then |
75 | - hangInfo.endTime = nowTime + 12 * 3600 | |
86 | + hangInfo.endTime = nowTime + globalCsv.idle_producetime_max | |
76 | 87 | end |
77 | 88 | if not hangPass[carbonId] then |
78 | 89 | hangInfo.bossTime = nowTime + carbonData.idle_time |
... | ... | @@ -128,16 +139,13 @@ function _M.endBattleRpc(agent, data) |
128 | 139 | |
129 | 140 | -- reward |
130 | 141 | reward = {} |
131 | - local items = role:getProperty("hangBag") | |
132 | 142 | local carbonData = csvdb["idle_battleCsv"][hangInfo.carbonId] |
133 | - items[ItemId.Gold] = (items[ItemId.Gold] or 0) + carbonData.money_clear | |
134 | - items[ItemId.Exp] = (items[ItemId.Exp] or 0) + carbonData.exp_clear | |
135 | 143 | reward[ItemId.Gold] = carbonData.money_clear |
136 | 144 | reward[ItemId.Exp] = carbonData.exp_clear |
137 | 145 | for itemId, count in pairs(carbonData.item_clear:toNumMap()) do |
138 | - items[itemId] = (items[itemId] or 0) + count | |
139 | 146 | reward[itemId] = count |
140 | 147 | end |
148 | + reward = role:award(reward, {}) | |
141 | 149 | end |
142 | 150 | hangInfo.key = nil |
143 | 151 | role:updateProperty({field = "hangInfo", value = hangInfo}) |
... | ... | @@ -178,7 +186,7 @@ function _M.getRewardRpc(agent , data) |
178 | 186 | table.clear(items) |
179 | 187 | local hangInfo = role:getProperty("hangInfo") |
180 | 188 | local nowTime = skynet.timex() |
181 | - hangInfo.endTime = nowTime + 12 * 3600 | |
189 | + hangInfo.endTime = nowTime + globalCsv.idle_producetime_max | |
182 | 190 | hangInfo.coinTime = nowTime |
183 | 191 | hangInfo.itemTime = nowTime |
184 | 192 | role:updateProperty({field = "hangBag", value = items}) |
... | ... | @@ -190,4 +198,47 @@ function _M.getRewardRpc(agent , data) |
190 | 198 | return true |
191 | 199 | end |
192 | 200 | |
201 | + | |
202 | +function _M.quickRpc(agent , data) | |
203 | + local role = agent.role | |
204 | + | |
205 | + local hangInfo = role:getProperty("hangInfo") | |
206 | + if not hangInfo.carbonId then return end | |
207 | + local carbonData = csvdb["idle_battleCsv"][hangInfo.carbonId] | |
208 | + | |
209 | + local curCount = role.dailyData:getProperty("hangQC") + 1 | |
210 | + local costs = globalCsv.idle_quickproduce_cost:toArray(true, "=") | |
211 | + if not costs[curCount] then return end | |
212 | + if costs[curCount] > 0 then | |
213 | + if not role:checkItemEnough({[ItemId.Diamond] = costs[curCount]}) then return end | |
214 | + role:costItems({[ItemId.Diamond] = costs[curCount]}, {}) | |
215 | + end | |
216 | + | |
217 | + role.dailyData:updateProperty({field = "hangQC", value = curCount}) | |
218 | + | |
219 | + local time = globalCsv.idle_quickproduce_time | |
220 | + local reward = {} | |
221 | + | |
222 | + local coinCount = math.floor(time / globalCsv.idle_money_produce_cd) | |
223 | + local itemCount = math.floor(time / globalCsv.idle_item_produce_cd) | |
224 | + reward[ItemId.Gold] = (reward[ItemId.Gold] or 0) + coinCount * carbonData.money | |
225 | + reward[ItemId.Exp] = (reward[ItemId.Exp] or 0) + coinCount * carbonData.exp | |
226 | + | |
227 | + local pool = {} | |
228 | + for _, temp in pairs(carbonData.item:toArray()) do | |
229 | + table.insert(pool, temp:toArray(true, "=")) | |
230 | + end | |
231 | + for i = 1, itemCount do | |
232 | + local cur = pool[math.randWeight(pool, 3)] | |
233 | + reward[cur[1]] = (reward[cur[1]] or 0) + cur[2] | |
234 | + end | |
235 | + | |
236 | + reward = role:award(reward, {}) | |
237 | + | |
238 | + SendPacket(actionCodes.Hang_quickRpc, MsgPack.pack({ | |
239 | + reward = reward | |
240 | + })) | |
241 | + return true | |
242 | +end | |
243 | + | |
193 | 244 | return _M |
194 | 245 | \ No newline at end of file | ... | ... |
src/models/Daily.lua
... | ... | @@ -8,6 +8,7 @@ end |
8 | 8 | |
9 | 9 | Daily.schema = { |
10 | 10 | commentHero = {"string", ""}, --单日评论食灵记录 type=1 |
11 | + hangQC ={"number", 0}, -- 挂机快速次数 | |
11 | 12 | } |
12 | 13 | |
13 | 14 | function Daily:updateProperty(params) |
... | ... | @@ -41,6 +42,7 @@ end |
41 | 42 | function Daily:data() |
42 | 43 | return { |
43 | 44 | -- dailyTaskStatus = self:getProperty("dailyTaskStatus"), |
45 | + hangQC = self:getProperty("hangQC"), | |
44 | 46 | } |
45 | 47 | end |
46 | 48 | ... | ... |
src/models/Role.lua
... | ... | @@ -31,8 +31,6 @@ Role.schema = { |
31 | 31 | |
32 | 32 | -- roleInfo |
33 | 33 | level = {"number", 0}, |
34 | - diamond = {"number", 0}, | |
35 | - reDiamond = {"number", 0}, | |
36 | 34 | items = {"string", ""}, |
37 | 35 | loveStatus = {"string", ""}, --统计角色的最高 好感度等级 类型相关 -- type=loveL type=loveL |
38 | 36 | |
... | ... | @@ -47,7 +45,7 @@ Role.schema = { |
47 | 45 | hangTeam = {"table", {}}, -- 挂机队伍 |
48 | 46 | hangInfo = {"table", {}}, -- 当前挂机信息 |
49 | 47 | hangBag = {"table", {}}, -- 背包 |
50 | - hangBagLimit = {"number", 10}, --背包上限 | |
48 | + hangBagLimit = {"number", globalCsv.idle_field_origin}, --背包上限 | |
51 | 49 | |
52 | 50 | } |
53 | 51 | |
... | ... | @@ -147,8 +145,6 @@ function Role:data() |
147 | 145 | id = self:getProperty("id"), |
148 | 146 | name = self:getProperty("name"), |
149 | 147 | level = self:getProperty("level"), |
150 | - diamond = self:getProperty("diamond"), | |
151 | - reDiamond = self:getProperty("reDiamond"), | |
152 | 148 | items = self:getProperty("items"):toNumMap(), |
153 | 149 | loveStatus = self:getProperty("loveStatus"):toNumMap(), |
154 | 150 | ... | ... |