Commit 0a421d342a1a68103bde99e461cb7c95470ff137

Authored by zhangqijia
1 parent 0eb317fb

fix: 一番赏奖励 刷新协议缺少roleId参数的bug

1. 修复刷新协议
2. goods id直接使用 配置表id
src/actions/CapsuleAction.lua
... ... @@ -135,8 +135,8 @@ function _M.drawRpc(agent, data)
135 135 return ret
136 136 end
137 137  
138   - dump(reward)
139   - dump(rewardByGoods)
  138 + --dump(rewardByGoods)
  139 + --dump(capsule)
140 140  
141 141 if ret == 5 then
142 142 SendPacket(actionCodes.Capsule_drawRpc, MsgPack.pack({change = reward, capsule = capsule}))
... ... @@ -153,15 +153,16 @@ function _M.drawRpc(agent, data)
153 153 return true
154 154 end
155 155  
156   -function _M.getData(agent, data)
  156 +function _M.getDataRpc(agent, data)
157 157 local role = agent.role
158 158 local msg = MsgPack.unpack(data)
159 159 local capsuleId = msg.capsule_id
160 160 local typ = msg.typ --0=独享,1= 公开
  161 + local roleId = role:getProperty("id")
161 162  
162 163 local capsule
163 164 if typ == 1 then
164   - capsule = skynet.call(agent.capsule_serv, "lua", "capsule_data", capsuleId)
  165 + capsule = skynet.call(agent.capsule_serv, "lua", "capsule_data", roleId, capsuleId)
165 166 else
166 167 capsule = role:getCapsuleData(capsuleId)
167 168 end
... ...
src/models/Capsule.lua
... ... @@ -86,7 +86,7 @@ function Capsule:init()
86 86 for _, data in pairs(csvdb["ichibankuji_goodsCsv"]) do
87 87 for _, val in pairs(data) do
88 88 if val.key == goods_id then
89   - goods[goods_id..val.id] = clone(val)
  89 + goods[goods_id] = clone(val)
90 90 end
91 91 end
92 92 end
... ... @@ -304,13 +304,41 @@ local function getSpecialRoleNotify(rewardRecord, count, award, spKey, typ, now)
304 304 return rewardByRole, count
305 305 end
306 306  
307   -function Capsule:getTop(record)
  307 +
  308 +local rewardToNtyFunc = function(notify, tmpReward)
  309 + for key, val in pairs(tmpReward or {}) do
  310 + if not notify[key] then
  311 + notify[key] = clone(val)
  312 + else
  313 + for k, v in pairs(val) do
  314 + if not notify[key][k] then
  315 + notify[key][k] = v
  316 + else
  317 + notify[key][k] = notify[key][k].amount + v.amount
  318 + end
  319 + end
  320 +
  321 + end
  322 + end
  323 +end
  324 +
  325 +local function getRecordAmount(record)
  326 + local amount = 0
  327 + for _, v in ipairs(record) do
  328 + amount = amount + v.amount
  329 + end
  330 + return amount
  331 +end
  332 +
  333 +
  334 +function Capsule:getTop(record, recordAmount,now)
308 335 local spKey, special = self:checkSpecialFlag(SpecialType.TOP)
309 336 if not special then return nil end
310 337 local specials = self:getProperty("specials") or {}
311 338 local specialsRecord = self:getProperty("specialsRecord") or {}
312 339  
313   - if #record < special["np"] then return nil end
  340 + if recordAmount < special["np"] then return nil end
  341 +
314 342 local topRecord = {}
315 343 local count = special["np"]
316 344 for _, v in ipairs(record) do
... ... @@ -332,18 +360,20 @@ function Capsule:getTop(record)
332 360 end
333 361 end
334 362  
335   - local rewardByRole, count = getSpecialRoleNotify(topRecord, special["amount"], special["award"], spKey, SpecialType.TOP)
  363 + local rewardByRole, count = getSpecialRoleNotify(topRecord, special["amount"], special["award"], spKey, SpecialType.TOP,now)
336 364  
337 365 special["amount"] = count
338 366 specials[spKey] = special
339   - specialsRecord[SpecialType.TOP] = rewardByRole
  367 +
  368 + rewardToNtyFunc(specialsRecord, rewardByRole)
  369 +
340 370 self:setProperties({specialsRecord = specialsRecord, specials = specials})
341 371 return rewardByRole
342 372  
343 373 end
344 374  
345 375 --TODO
346   -function Capsule:getCore(record)
  376 +function Capsule:getCore(record, recordAmount,now)
347 377 local spKey, special = self:checkSpecialFlag(SpecialType.CORE)
348 378 if not special then return nil end
349 379  
... ... @@ -353,10 +383,10 @@ function Capsule:getCore(record)
353 383 if self:getGoodsAmount() > 0 then return nil end
354 384  
355 385 local np = special["np"]
356   - if np > #record then return nil end
  386 + if np > recordAmount then return nil end
357 387  
358 388  
359   - local left = math.ceil((np - #record)/2) or 0
  389 + local left = math.ceil((np - recordAmount)/2) or 0
360 390 local count = np
361 391 local roleRecord = {}
362 392 for i, v in ipairs(record) do
... ... @@ -380,16 +410,17 @@ function Capsule:getCore(record)
380 410  
381 411 end
382 412  
383   - local rewardByRole, count = getSpecialRoleNotify(roleRecord, special["amount"], special["award"], SpecialType.CORE)
  413 + local rewardByRole, count = getSpecialRoleNotify(roleRecord, special["amount"], special["award"], spKey, SpecialType.CORE,now)
384 414  
385 415 special["amount"] = count
386 416 specials[spKey] = special
387   - specialsRecord[SpecialType.CORE] = rewardByRole
  417 +
  418 + rewardToNtyFunc(specialsRecord, rewardByRole)
388 419 self:setProperties({specialsRecord = specialsRecord, specials = specials})
389 420 return rewardByRole
390 421 end
391 422  
392   -function Capsule:getLast(record)
  423 +function Capsule:getLast(record,now)
393 424 local spKey, special = self:checkSpecialFlag(SpecialType.LAST)
394 425 if not special then return nil end
395 426  
... ... @@ -422,16 +453,17 @@ function Capsule:getLast(record)
422 453 end
423 454 end
424 455  
425   - local rewardByRole, count = getSpecialRoleNotify(roleRecord, special["amount"], special["award"], SpecialType.LAST)
  456 + local rewardByRole, count = getSpecialRoleNotify(roleRecord, special["amount"], special["award"], spKey, SpecialType.LAST,now)
426 457  
427 458 special["amount"] = count
428 459 specials[spKey] = special
429   - specialsRecord[SpecialType.LAST] = rewardByRole
  460 +
  461 + rewardToNtyFunc(specialsRecord, rewardByRole)
430 462 self:setProperties({specialsRecord = specialsRecord, specials = specials})
431 463 return rewardByRole
432 464 end
433 465  
434   -function Capsule:getJoker(record)
  466 +function Capsule:getJoker(record,now)
435 467 local spKey, special = self:checkSpecialFlag(SpecialType.JOKER)
436 468 if not special then return nil end
437 469  
... ... @@ -449,16 +481,17 @@ function Capsule:getJoker(record)
449 481 end
450 482 end
451 483  
452   - local rewardByRole, count = getSpecialRoleNotify(roleRecord, special["amount"], special["award"], SpecialType.JOKER)
  484 + local rewardByRole, count = getSpecialRoleNotify(roleRecord, special["amount"], special["award"], spKey, SpecialType.JOKER,now)
453 485  
454 486 special["amount"] = count
455 487 specials[spKey] = special
456   - specialsRecord[SpecialType.JOKER] = rewardByRole
  488 +
  489 + rewardToNtyFunc(specialsRecord, rewardByRole)
457 490 self:setProperties({specialsRecord = specialsRecord, specials = specials})
458 491 return rewardByRole
459 492 end
460 493  
461   -function Capsule:getKing(record)
  494 +function Capsule:getKing(record,now)
462 495 local spKey, special = self:checkSpecialFlag(SpecialType.KING)
463 496 if not special then return nil end
464 497  
... ... @@ -476,31 +509,15 @@ function Capsule:getKing(record)
476 509 end
477 510 end
478 511  
479   - local rewardByRole, count = getSpecialRoleNotify(roleRecord, special["amount"], special["award"], SpecialType.KING)
  512 + local rewardByRole, count = getSpecialRoleNotify(roleRecord, special["amount"], special["award"], spKey, SpecialType.KING,now)
480 513 special["amount"] = count
481 514 specials[spKey] = special
482   - specialsRecord[SpecialType.KING] = rewardByRole
  515 +
  516 + rewardToNtyFunc(specialsRecord, rewardByRole)
483 517 self:setProperties({specialsRecord = specialsRecord, specials = specials})
484 518 return rewardByRole
485 519 end
486 520  
487   -local rewardToNtyFunc = function(notify, tmpReward)
488   - for key, val in pairs(tmpReward or {}) do
489   - if not notify[key] then
490   - notify[key] = val
491   - else
492   - for k, v in pairs(val) do
493   - if not notify[key][k] then
494   - notify[key][k] = v
495   - else
496   - notify[key][k] = notify[key][k].amount + v.amount
497   - end
498   - end
499   -
500   - end
501   - end
502   -end
503   -
504 521 function Capsule:checkSpecialReward( now)
505 522 local specials = self:getProperty("specials") or {}
506 523 if not next(specials) then return nil end
... ... @@ -509,19 +526,25 @@ function Capsule:checkSpecialReward( now)
509 526 if not next(record) then return nil end
510 527 table.sort(record, function(a, b) return a.create_time < b.create_time end )
511 528  
  529 + local recordAmount = getRecordAmount(record)
512 530  
513   - local notify = self:getTop(record) or {}
  531 + local notify = self:getTop(record, recordAmount,now) or {}
514 532  
515   - local coreReward = self:getCore(record)
  533 + dump(notify)
  534 + local coreReward = self:getCore(record, recordAmount, now)
  535 + dump(coreReward)
516 536 rewardToNtyFunc(notify, coreReward)
517 537  
518   - local lastReward = self:getLast(record)
  538 + local lastReward = self:getLast(record, now)
  539 + dump(lastReward)
519 540 rewardToNtyFunc(notify, lastReward)
520 541  
521   - local jokerReward = self:getJoker(record)
  542 + local jokerReward = self:getJoker(record, now)
  543 + dump(jokerReward)
522 544 rewardToNtyFunc(notify, jokerReward)
523 545  
524   - local kingReward = self:getKing(record)
  546 + local kingReward = self:getKing(record, now)
  547 + dump(kingReward)
525 548 rewardToNtyFunc(notify, kingReward)
526 549  
527 550  
... ...
src/services/capsuled.lua
... ... @@ -195,9 +195,9 @@ function CMD.goods_stock(capsuleId)
195 195 return capsule:getGoodsAmount(), capsule:getProperty("token")
196 196 end
197 197  
198   -function CMD.capsule_data(capsuleId)
  198 +function CMD.capsule_data(roleId, capsuleId)
199 199 local capsule = capsules[capsuleId] or {}
200   - return capsule:data()
  200 + return capsule:data(roleId)
201 201 end
202 202  
203 203 skynet.start(function()
... ...