Commit 7bb30dca2407dc585f93d933ce0456bb041cb4a0

Authored by zhouhaihai
1 parent 02abfcb2

修改发奖

src/actions/ActivityAction.lua
... ... @@ -32,9 +32,9 @@ function _M.sudokuRpc(agent, data)
32 32 if (sudoku.task[phase][id] or 0) < curData.con1 then return 2 end
33 33  
34 34 sudoku.task[phase][id] = -1
35   - local task = role:award(curData.reward, {log = {desc = "sudoku", int1 = id, int2 = phase}}) -- 任务奖励
  35 + local task, tchange = role:award(curData.reward, {log = {desc = "sudoku", int1 = id, int2 = phase}}) -- 任务奖励
36 36  
37   - local reward = {}
  37 + local reward, rchange = {}
38 38 local rId = {}
39 39 for pid, pdata in pairs(csvdb["guide_sudoku_rewardCsv"][phase] or {}) do
40 40 local pos = pdata.pos:toArray(true, "=")
... ... @@ -60,14 +60,14 @@ function _M.sudokuRpc(agent, data)
60 60 if not next(reward) then
61 61 reward = nil
62 62 else
63   - reward = role:award(reward, {log = {desc = "sudokuR", int1 = id, int2 = phase}})
  63 + reward, rchange = role:award(reward, {log = {desc = "sudokuR", int1 = id, int2 = phase}})
64 64 end
65 65  
66 66 role:updateProperty({field = "sudoku", value = sudoku})
67 67  
68 68 role:log("act_action", {desc = "sudoku", int1 = id, int2 = phase})
69 69  
70   - SendPacket(actionCodes.Activity_sudokuRpc, MsgPack.pack({task = task, reward = reward, rId = rId}))
  70 + SendPacket(actionCodes.Activity_sudokuRpc, MsgPack.pack({task = role:packReward(task, tchange), reward = role:packReward(reward, rchange), rId = rId}))
71 71 return true
72 72 end
73 73  
... ... @@ -90,7 +90,7 @@ function _M.sudokuRewardRpc(agent, data)
90 90 end
91 91 end
92 92  
93   - local reward = role:award(globalCsv.guide_sudoku_reward[phase], {log = {desc = "sudokuRP", int1 = phase}})
  93 + local reward, change = role:award(globalCsv.guide_sudoku_reward[phase], {log = {desc = "sudokuRP", int1 = phase}})
94 94  
95 95 sudoku[-1] = phase + 1
96 96 sudoku.task[phase] = nil
... ... @@ -100,7 +100,7 @@ function _M.sudokuRewardRpc(agent, data)
100 100 end
101 101 role:updateProperty({field = "sudoku", value = sudoku})
102 102  
103   - SendPacket(actionCodes.Activity_sudokuRewardRpc, MsgPack.pack(reward))
  103 + SendPacket(actionCodes.Activity_sudokuRewardRpc, MsgPack.pack(role:packReward(reward, change)))
104 104 return true
105 105 end
106 106  
... ... @@ -125,10 +125,10 @@ function _M.signRpc(agent, data)
125 125 end
126 126 signs[curDay] = yearMonth
127 127  
128   - local reward = role:award(monthData[curDay].item, {log = {desc = "sign", int1 = yearMonth, int2 = curDay}})
  128 + local reward, change = role:award(monthData[curDay].item, {log = {desc = "sign", int1 = yearMonth, int2 = curDay}})
129 129 role:changeUpdates({{type = "sign", field = curDay, value = yearMonth}})
130 130  
131   - SendPacket(actionCodes.Activity_signRpc, MsgPack.pack(reward))
  131 + SendPacket(actionCodes.Activity_signRpc, MsgPack.pack(role:packReward(reward, change)))
132 132 return true
133 133 end
134 134  
... ... @@ -138,7 +138,7 @@ function _M.actSignRpc(agent, data)
138 138 if not role.activity:isOpen("Sign") then return 1 end
139 139  
140 140 local curData = role.activity:getActData("Sign")
141   - local reward = {}
  141 + local reward, change = {}
142 142 for day, csvData in ipairs(csvdb["new_signInCsv"]) do
143 143 if day <= (curData[0] or 0) then
144 144 if not curData[day] then
... ... @@ -154,9 +154,9 @@ function _M.actSignRpc(agent, data)
154 154 end
155 155 if next(reward) then
156 156 role.activity:updateActData("Sign", curData)
157   - reward = role:award(reward, {log = {desc = "actSign"}})
  157 + reward, change = role:award(reward, {log = {desc = "actSign"}})
158 158 end
159   - SendPacket(actionCodes.Activity_actSignRpc, MsgPack.pack(reward))
  159 + SendPacket(actionCodes.Activity_actSignRpc, MsgPack.pack(role:packReward(reward, change)))
160 160 return true
161 161 end
162 162  
... ...
src/actions/AdvAction.lua
... ... @@ -290,7 +290,7 @@ function _M.endHangRpc(agent, data)
290 290 local chapterData = csvdb["adv_chapterCsv"][chapterId]
291 291 if not chapterData then return end
292 292  
293   - local reward, isFull
  293 + local reward, isFull, change
294 294 if skynet.timex() >= info.time then
295 295 -- 英雄加成
296 296 local idleUnit = chapterData.idleUnit:toNumMap()
... ... @@ -321,7 +321,7 @@ function _M.endHangRpc(agent, data)
321 321 for itemId, count in pairs(idleReward) do
322 322 idleReward[itemId] = math.floor(count * (maxCampsite.idleValue + upUnit) / 100)
323 323 end
324   - reward = role:award(idleReward, {log = {desc = "advHang", int1 = chapterId}})
  324 + reward, change = role:award(idleReward, {log = {desc = "advHang", int1 = chapterId}})
325 325 else
326 326 if cancel then
327 327 role:changeAdvCount(-chapterData.limitlevel)
... ... @@ -339,7 +339,7 @@ function _M.endHangRpc(agent, data)
339 339  
340 340 role:log("adv_action", {desc = "endHang", int1 = chapterId, short1 = cancel and 1 or 0})
341 341  
342   - SendPacket(actionCodes.Adv_endHangRpc, MsgPack.pack({reward = reward, isFull = isFull}))
  342 + SendPacket(actionCodes.Adv_endHangRpc, MsgPack.pack({reward = reward, change = change, isFull = isFull}))
343 343 return true
344 344 end
345 345  
... ... @@ -381,9 +381,9 @@ function _M.finishTaskRpc(agent, data)
381 381 if not isCanContinue(role) then return end
382 382 local adv = role:getAdvData()
383 383 local taskId = msg.taskId -- -1 则是主线任务
384   - local status, reward
  384 + local status, reward, change
385 385 if taskId == -1 then
386   - status, reward = adv:finishMTask()
  386 + status, reward, change = adv:finishMTask()
387 387 else
388 388 status, reward = adv:finishTask(taskId)
389 389 adv:checkAchievement(adv.AchievType.TaskLayer, 1, taskId)
... ... @@ -395,7 +395,7 @@ function _M.finishTaskRpc(agent, data)
395 395  
396 396 adv:log({desc = "finishTask", int1 = taskId})
397 397  
398   - SendPacket(actionCodes.Adv_finishTaskRpc, MsgPack.pack({reward = reward}))
  398 + SendPacket(actionCodes.Adv_finishTaskRpc, MsgPack.pack(role:packReward(reward, change)))
399 399 return true
400 400 end
401 401  
... ... @@ -749,11 +749,11 @@ function _M.repayWheelSurfRpc(agent, data)
749 749 advDrawB[ptype] = advDrawB[ptype] - globalCsv.adv_draw_back_cond
750 750 role:updateProperty({field = "advDrawB", value = advDrawB})
751 751 local gift = drawData["pool3"]:randWeight(true)
752   - local reward = {[gift[1]] = gift[2]}
753   - reward = role:award(reward, {log = {desc = "advRepayWheelSurf", int1 = ptype}})
  752 + local reward, change = {[gift[1]] = gift[2]}
  753 + reward, change = role:award(reward, {log = {desc = "advRepayWheelSurf", int1 = ptype}})
754 754 role:log("adv_action", {desc = "advRepayWheelSurf", int1 = ptype})
755 755  
756   - SendPacket(actionCodes.Adv_repayWheelSurfRpc, MsgPack.pack({reward = reward}))
  756 + SendPacket(actionCodes.Adv_repayWheelSurfRpc, MsgPack.pack(role:packReward(reward, change)))
757 757 return true
758 758 end
759 759  
... ... @@ -766,17 +766,17 @@ function _M.finishAchievRpc(agent, data)
766 766  
767 767 local adv = role:getAdvData()
768 768  
769   - local status, reward
  769 + local status, reward, change
770 770 if ctype == 1 then
771   - status, reward = adv:finishAchievement(chapterId, taskId)
  771 + status, reward, change = adv:finishAchievement(chapterId, taskId)
772 772 elseif ctype == 2 then
773   - status, reward = adv:getAchievementReward(chapterId, taskId)
  773 + status, reward, change = adv:getAchievementReward(chapterId, taskId)
774 774 end
775 775 if not status then return end
776 776 adv:updateAchievement()
777 777 role:log("adv_action", {desc = "finishAchiev", short1 = ctype, int1 = chapterId, int2 = taskId})
778 778  
779   - SendPacket(actionCodes.Adv_finishAchievRpc, MsgPack.pack({reward = reward}))
  779 + SendPacket(actionCodes.Adv_finishAchievRpc, MsgPack.pack(role:packReward(reward, change)))
780 780 return true
781 781 end
782 782  
... ...
src/actions/CarAction.lua
... ... @@ -150,7 +150,7 @@ function _M.saleEquipRpc(agent, data )
150 150 local own = role:getEquipCount(typ,lv)
151 151 if math.illegalNum(count, 1, own) then return end
152 152 end
153   - local reward = {}
  153 + local reward, change = {}
154 154 local allCount = 0
155 155 for id, count in pairs(backs) do
156 156 allCount = allCount + count
... ... @@ -165,11 +165,11 @@ function _M.saleEquipRpc(agent, data )
165 165 end
166 166 end
167 167 role:checkTaskEnter("SaleEquip", {count = allCount})
168   - reward = role:award(reward, {log = {desc = "saleEquip"}})
  168 + reward, change = role:award(reward, {log = {desc = "saleEquip"}})
169 169  
170 170 role:log("role_action", {desc = "saleEquip", int1 = allCount})
171 171  
172   - SendPacket(actionCodes.Car_saleEquipRpc, MsgPack.pack({reward = reward}))
  172 + SendPacket(actionCodes.Car_saleEquipRpc, MsgPack.pack(role:packReward(reward, change)))
173 173 return true
174 174 end
175 175  
... ... @@ -179,7 +179,7 @@ function _M.saleRuneRpc(agent, data )
179 179 local backs = msg.backs
180 180 if not backs then return end
181 181  
182   - local reward = {}
  182 + local reward, change = {}
183 183 local count = 0
184 184 for _, uid in pairs(backs) do
185 185 count = count + 1
... ... @@ -196,9 +196,9 @@ function _M.saleRuneRpc(agent, data )
196 196  
197 197 role:delRunes(backs, {log = {desc = "saleRune"}})
198 198 role:checkTaskEnter("DecoRune", {count = count})
199   - reward = role:award(reward, {log = {desc = "saleRune"}})
  199 + reward, change = role:award(reward, {log = {desc = "saleRune"}})
200 200  
201   - SendPacket(actionCodes.Car_saleRuneRpc, MsgPack.pack({reward = reward}))
  201 + SendPacket(actionCodes.Car_saleRuneRpc, MsgPack.pack(role:packReward(reward, change)))
202 202 return true
203 203 end
204 204  
... ...
src/actions/DinerAction.lua
... ... @@ -141,19 +141,19 @@ function _M.removeSellRpc( agent, data )
141 141 end
142 142  
143 143 role.dinerData:updateSell(slot)
144   - local reward = {}
  144 + local reward, change = {}
145 145 local cost = dishData.material:toNumMap()
146 146 for k, n in pairs(cost) do
147 147 local sum = n*sell.count
148 148 reward[k] = sum
149 149 end
150   - reward = role:award(reward, {log = {desc = "removeSell"}})
  150 + reward, change = role:award(reward, {log = {desc = "removeSell"}})
151 151 sells[slot].count = 0
152 152  
153 153 role:log("diner_action", {desc = "removeSell", int1 = dish})
154 154  
155 155 role.dinerData:updateProperty({field = "sells", value = json.encode(sells)})
156   - SendPacket(actionCodes.Diner_removeSellRpc, MsgPack.pack({reward = reward}))
  156 + SendPacket(actionCodes.Diner_removeSellRpc, MsgPack.pack({reward = reward, change = change}))
157 157 return true
158 158 end
159 159  
... ... @@ -195,7 +195,7 @@ function _M.getSellRewardRpc( agent, data )
195 195 role:checkTaskEnter("FoodSellGold", {count = v})
196 196 end
197 197 end
198   - role:award(gift, {log = {desc = "dinerSell"}})
  198 + local reward, change = role:award(gift, {log = {desc = "dinerSell"}})
199 199  
200 200  
201 201 role.dinerData:popularAdd(popular)
... ... @@ -206,7 +206,7 @@ function _M.getSellRewardRpc( agent, data )
206 206  
207 207 role:log("diner_action", {desc = "sell"})
208 208  
209   - SendPacket(actionCodes.Diner_getSellRewardRpc, MsgPack.pack({reward = reward}))
  209 + SendPacket(actionCodes.Diner_getSellRewardRpc, MsgPack.pack({reward = reward, change = change}))
210 210 return true
211 211 end
212 212  
... ... @@ -266,7 +266,8 @@ function _M.expediteSellRpc( agent, data )
266 266 role:checkTaskEnter("FoodSellGold", {count = v})
267 267 end
268 268 end
269   - role:award(gift, {log = {desc = "dinerSell"}})
  269 + local change
  270 + reward, change = role:award(gift, {log = {desc = "dinerSell"}})
270 271  
271 272  
272 273 role.dinerData:popularAdd(popular)
... ... @@ -278,7 +279,7 @@ function _M.expediteSellRpc( agent, data )
278 279  
279 280 role:log("diner_action", {desc = "sellQ"})
280 281  
281   - SendPacket(actionCodes.Diner_expediteSellRpc, MsgPack.pack({reward = reward,popular = popular}))
  282 + SendPacket(actionCodes.Diner_expediteSellRpc, MsgPack.pack({reward = reward, change = change, popular = popular}))
282 283 return true
283 284 end
284 285  
... ... @@ -493,7 +494,7 @@ function _M.updateTaskRpc( agent, data )
493 494 return 5
494 495 end
495 496  
496   -
  497 + local reward, change
497 498 if cmd == 0 then
498 499 if order.status ~= 0 then
499 500 return 30
... ... @@ -522,7 +523,7 @@ function _M.updateTaskRpc( agent, data )
522 523 end
523 524 role:log("diner_action", {desc = "finishTask", int1 = order.id})
524 525  
525   - role:award(taskData.reward, {log = {desc = "dinerFinishTask", int1 = order.id}})
  526 + reward, change = role:award(taskData.reward, {log = {desc = "dinerFinishTask", int1 = order.id}})
526 527 table.remove(orders,index)
527 528 role:checkTaskEnter("OverOderTask", {rarity = taskSet.rarity})
528 529 else
... ... @@ -530,7 +531,7 @@ function _M.updateTaskRpc( agent, data )
530 531 end
531 532  
532 533 role.dinerData:updateProperty({field = "order", value = json.encode(orders)})
533   - SendPacket(actionCodes.Diner_updateTaskRpc, '')
  534 + SendPacket(actionCodes.Diner_updateTaskRpc, MsgPack.pack({reward = reward, change = change}))
534 535 return true
535 536 end
536 537  
... ... @@ -681,12 +682,12 @@ function _M.getGreenhouseRpc( agent, data )
681 682 end
682 683 end
683 684 role.dinerData:updateProperty({field = "gfood", value = gfood})
684   - local reward = role:award(reward, {log = {desc = "greenHourse", int1 = level}})
  685 + local reward, change = role:award(reward, {log = {desc = "greenHourse", int1 = level}})
685 686 role:checkTaskEnter("FoodMGet")
686 687  
687 688 role:log("diner_action", {desc = "greenHourse"})
688 689  
689   - SendPacket(actionCodes.Diner_getGreenhouseRpc, MsgPack.pack({reward = reward}))
  690 + SendPacket(actionCodes.Diner_getGreenhouseRpc, MsgPack.pack({reward = reward, change = change}))
690 691 return true
691 692 end
692 693  
... ... @@ -798,7 +799,7 @@ function _M.entrustRpc(agent , data)
798 799 local entrustId = entrust[1]
799 800 if not entrustId then return end
800 801  
801   - local reward
  802 + local reward, change
802 803 if ctype == 1 then -- 完成
803 804 local curData = csvdb["diner_missionCsv"][entrustId]
804 805 if not curData then return end
... ... @@ -813,7 +814,7 @@ function _M.entrustRpc(agent , data)
813 814 return
814 815 end
815 816  
816   - reward = role:award(curData.reward, {log = {desc = "dinerEntrus", int1 = entrustId}})
  817 + reward, change = role:award(curData.reward, {log = {desc = "dinerEntrus", int1 = entrustId}})
817 818 table.remove(entrust, 1)
818 819 elseif ctype == 2 then -- 放弃
819 820 table.remove(entrust, 1)
... ... @@ -824,7 +825,7 @@ function _M.entrustRpc(agent , data)
824 825  
825 826 role:log("diner_action", {desc = "entrus", short1 = ctype, int1 = entrustId})
826 827  
827   - SendPacket(actionCodes.Diner_entrustRpc, MsgPack.pack({reward = reward}))
  828 + SendPacket(actionCodes.Diner_entrustRpc, MsgPack.pack({reward = reward, change = change}))
828 829 return true
829 830 end
830 831  
... ... @@ -845,12 +846,12 @@ function _M.collectRpc(agent , data)
845 846 for slot, _ in pairs(sells) do
846 847 role.dinerData:updateSell(slot)
847 848 end
848   - local reward = role:award(customerData.reward, {log = {desc = "dinerCollect", int1 = id}})
  849 + local reward, change = role:award(customerData.reward, {log = {desc = "dinerCollect", int1 = id}})
849 850 customer[id] = 1
850 851 role.dinerData:updateProperty({field = "customer", value = customer}) -- 解锁了
851 852 role:log("diner_action", {desc = "collect", int1 = id})
852 853  
853   - SendPacket(actionCodes.Diner_collectRpc, MsgPack.pack({reward = reward}))
  854 + SendPacket(actionCodes.Diner_collectRpc, MsgPack.pack({reward = reward, change = change}))
854 855 return true
855 856 end
856 857  
... ... @@ -874,13 +875,13 @@ function _M.comboRewardRpc(agent , data)
874 875 end
875 876  
876 877 comboStatus[id] = 1
877   - local reward = role:award(comboData.reward, {log = {desc = "dinerCombo", int1 = id}})
  878 + local reward, change = role:award(comboData.reward, {log = {desc = "dinerCombo", int1 = id}})
878 879  
879 880 role.dinerData:updateProperty({field = "comboStatus", value = comboStatus}) -- 解锁了
880 881  
881 882 role:log("diner_action", {desc = "combo", int1 = id})
882 883  
883   - SendPacket(actionCodes.Diner_comboRewardRpc, MsgPack.pack({reward = reward}))
  884 + SendPacket(actionCodes.Diner_comboRewardRpc, MsgPack.pack({reward = reward, change = change}))
884 885 return true
885 886 end
886 887  
... ...
src/actions/EmailAction.lua
... ... @@ -86,7 +86,7 @@ function _M.drawAllAttachRpc(agent, data)
86 86 local role = agent.role
87 87 local roleId = role:getProperty("id")
88 88  
89   - local reward = {}
  89 + local reward, change = {}
90 90 local ids = {}
91 91  
92 92 local emails = loadEmails(roleId)
... ... @@ -95,19 +95,18 @@ function _M.drawAllAttachRpc(agent, data)
95 95 local attachments = getEmailAttachments(email)
96 96 if attachments ~= "" then
97 97 local emailId = email:getProperty("id")
98   - local items = role:award(attachments, {log = {desc = "draw_attach", int1 = emailId, key1 = email:getProperty("title")}})
99 98 ids[emailId] = 1
100 99 red:hset(string.format(R_EMAIL_ITEM, roleId, emailId), "status", 2)
101 100 role:log("mail_action", {desc = "draw_attach", int1 = emailId, key1 = email:getProperty("title"), key2 = attachments})
102 101  
103   - for key, v in pairs(items) do
  102 + for key, v in pairs(attachments:toNumMap()) do
104 103 reward[key] = (reward[key] or 0) + v
105 104 end
106 105 end
107 106 end
108 107 end)
109   -
110   - SendPacket(actionCodes.Email_drawAllAttachRpc, MsgPack.pack({ids = ids, reward = reward}))
  108 + reward, change = role:award(reward, {log = {desc = "draw_attach"}})
  109 + SendPacket(actionCodes.Email_drawAllAttachRpc, MsgPack.pack({ids = ids, reward = reward, change = change}))
111 110 return true
112 111 end
113 112  
... ... @@ -125,9 +124,9 @@ function _M.drawAttachRpc(agent, data)
125 124 local attachments = getEmailAttachments(email)
126 125 if attachments == "" then return end
127 126  
128   - local reward = role:award(attachments, {log = {desc = "draw_attach", int1 = emailId, key1 = email:getProperty("title")}})
  127 + local reward, change = role:award(attachments, {log = {desc = "draw_attach", int1 = emailId, key1 = email:getProperty("title")}})
129 128 redisproxy:hset(rds, "status", 2) -- 领取标记
130   - SendPacket(actionCodes.Email_drawAttachRpc, MsgPack.pack({reward = reward}))
  129 + SendPacket(actionCodes.Email_drawAttachRpc, MsgPack.pack({reward = reward, change = change}))
131 130  
132 131 role:log("mail_action", {desc = "draw_attach", int1 = id, key1 = email:getProperty("title"), key2 = attachments})
133 132 return true
... ...
src/actions/GmAction.lua
... ... @@ -517,6 +517,12 @@ function _M.ayncPurchase(role, params)
517 517 return role:handlePurchase(params) or ""
518 518 end
519 519  
  520 +function _M.test(role, params)
  521 + local id = tonum(params.pm1, 0)
  522 + local store = require ("actions.StoreAction")
  523 + store.shopBuyRpc({role = role}, MsgPack.pack({id = id}))
  524 + return "成功"
  525 +end
520 526  
521 527  
522 528 return _M
523 529 \ No newline at end of file
... ...
src/actions/HangAction.lua
... ... @@ -203,7 +203,7 @@ function _M.endBattleRpc(agent, data)
203 203 if role:checkHangPass(carbonId) then
204 204 return 4
205 205 end
206   - local reward
  206 + local reward, change
207 207 if msg.starNum and msg.starNum > 0 then --win
208 208 role:hangFinish(carbonId)
209 209 if carbonData.main ~= 1 then
... ... @@ -217,7 +217,7 @@ function _M.endBattleRpc(agent, data)
217 217 for itemId, count in pairs(carbonData.item_clear:toNumMap()) do
218 218 reward[itemId] = count
219 219 end
220   - reward = role:award(reward, {log = {desc = "hangBattle", int1 = carbonId}})
  220 + reward, change = role:award(reward, {log = {desc = "hangBattle", int1 = carbonId}})
221 221  
222 222 role:checkTaskEnter("HangPass", {id = carbonId})
223 223 end
... ... @@ -229,6 +229,7 @@ function _M.endBattleRpc(agent, data)
229 229 SendPacket(actionCodes.Hang_endBattleRpc, MsgPack.pack({
230 230 starNum = msg.starNum,
231 231 reward = reward,
  232 + change = change,
232 233 }))
233 234 return true
234 235 end
... ... @@ -276,7 +277,7 @@ function _M.getRewardRpc(agent , data)
276 277 checkReward(role)
277 278 local items = role:getProperty("hangBag")
278 279 if not next(items) then return end
279   - local reward = role:award(items, {log = {desc = "hangReward"}})
  280 + local reward, change = role:award(items, {log = {desc = "hangReward"}})
280 281 table.clear(items)
281 282 local hangInfo = role:getProperty("hangInfo")
282 283 local nowTime = skynet.timex()
... ... @@ -291,7 +292,8 @@ function _M.getRewardRpc(agent , data)
291 292 role:checkTaskEnter("HangGetGold", {count = reward[ItemId.Gold]})
292 293 end
293 294 SendPacket(actionCodes.Hang_getRewardRpc, MsgPack.pack({
294   - reward = reward
  295 + reward = reward,
  296 + change = change
295 297 }))
296 298 return true
297 299 end
... ... @@ -388,14 +390,15 @@ function _M.quickRpc(agent , data)
388 390 local cur = pool[math.randWeight(pool, 3)]
389 391 reward[cur[1]] = (reward[cur[1]] or 0) + cur[2]
390 392 end
391   -
392   - reward = role:award(reward, {log = {desc = "quickHang", int1 = hangInfo.carbonId}})
  393 + local change
  394 + reward, change = role:award(reward, {log = {desc = "quickHang", int1 = hangInfo.carbonId}})
393 395 if reward[ItemId.Gold] then
394 396 role:checkTaskEnter("HangGetGold", {count = reward[ItemId.Gold]})
395 397 end
396 398 role:checkTaskEnter("HangQuick")
397 399 SendPacket(actionCodes.Hang_quickRpc, MsgPack.pack({
398   - reward = reward
  400 + reward = reward,
  401 + change = change
399 402 }))
400 403 return true
401 404 end
... ... @@ -497,7 +500,7 @@ function _M.endBonusBattleRpc(agent, data)
497 500 if role.__bonusBattleCache.id ~= id or role.__bonusBattleCache.key ~= key then return 2 end
498 501 local bonusData = csvdb["bonus_battleCsv"][id]
499 502  
500   - local reward
  503 + local reward, change
501 504 if starNum and starNum > 0 then
502 505 -- 胜利扣除次数
503 506 local bonusC = role.dailyData:getProperty("bonusC")
... ... @@ -511,7 +514,7 @@ function _M.endBonusBattleRpc(agent, data)
511 514 if chance[1] ~= 0 then
512 515 reward[chance[1]] = (reward[chance[1]] or 0) + chance[2]
513 516 end
514   - reward = role:award(reward, {log = {desc = "bonusBattle", int1 = id}})
  517 + reward, change = role:award(reward, {log = {desc = "bonusBattle", int1 = id}})
515 518 role:checkTaskEnter("BonusPass", {id = id})
516 519 end
517 520  
... ... @@ -519,7 +522,9 @@ function _M.endBonusBattleRpc(agent, data)
519 522  
520 523 SendPacket(actionCodes.Hang_endBonusBattleRpc, MsgPack.pack({
521 524 starNum = starNum,
522   - reward = reward}))
  525 + reward = reward,
  526 + change = change
  527 + }))
523 528 return true
524 529 end
525 530  
... ... @@ -534,12 +539,12 @@ function _M.hangGiftRpc(agent, data)
534 539 local hangGift = role:getProperty("hangGift")
535 540 if hangGift[id] then return 2 end
536 541  
537   - local reward = role:award(carbonData.item_clear_special, {log = {desc = "hangGift", int1 = id}})
  542 + local reward, change = role:award(carbonData.item_clear_special, {log = {desc = "hangGift", int1 = id}})
538 543 role:log("hang_action", {desc = "hangGift", int1 = id})
539 544  
540 545 role:changeUpdates({{type = "hangGift", field = id, value = 1}})
541 546  
542   - SendPacket(actionCodes.Hang_hangGiftRpc, MsgPack.pack(reward))
  547 + SendPacket(actionCodes.Hang_hangGiftRpc, MsgPack.pack({reward = reward, change = change}))
543 548 return true
544 549 end
545 550  
... ... @@ -577,9 +582,9 @@ function _M.chatLineRpc(agent, data)
577 582 chatline[id] = skynet.timex()
578 583 role:updateProperty({field = "chatline", value = chatline})
579 584  
580   - local reward = role:award(idleData.chatline_reward, {log = {desc = "chatline", int1 = id}})
  585 + local reward, change = role:award(idleData.chatline_reward, {log = {desc = "chatline", int1 = id}})
581 586  
582   - SendPacket(actionCodes.Hang_chatLineRpc, MsgPack.pack(reward))
  587 + SendPacket(actionCodes.Hang_chatLineRpc, MsgPack.pack({reward = reward, change = change}))
583 588 return true
584 589 end
585 590  
... ...
src/actions/HeroAction.lua
... ... @@ -600,15 +600,12 @@ function _M.createHeroRandomRpc(agent, data)
600 600  
601 601 local temp = randomData.gift1:randWeight(true)
602 602 if not temp or not next(temp) then return end
603   - local reward = {}
604   - if role:isHaveHero(temp[1]) then
605   - reward = {[temp[1]] = cost}
606   - else
607   - reward = {[temp[1] + ItemStartId.Hero] = 1}
608   - end
  603 +
609 604 role:costItems({[itemId] = cost}, {log = {desc = "createHeroRandom"}})
610   - reward = role:award(reward, {log = {desc = "createHeroRandom"}})
611   - SendPacket(actionCodes.Hero_createHeroRandomRpc, MsgPack.pack({reward = reward}))
  605 + local reward, change = role:award({[temp[1] + ItemStartId.Hero] = 1}, {log = {desc = "createHeroRandom"}})
  606 +
  607 +
  608 + SendPacket(actionCodes.Hero_createHeroRandomRpc, MsgPack.pack(role:packReward(reward, change)))
612 609 return true
613 610 end
614 611  
... ... @@ -677,9 +674,10 @@ function _M.getResetRewardRpc(agent, data)
677 674 for itemId, count in pairs(reward) do
678 675 reward[itemId] = math.floor(count * globalCsv.unit_back_discount)
679 676 end
680   - reward = role:award(reward, {log = {desc = "resetHero", int1 = msg.id, int2 = hero:getProperty("type")}})
  677 + local change
  678 + reward, change = role:award(reward, {log = {desc = "resetHero", int1 = msg.id, int2 = hero:getProperty("type")}})
681 679  
682   - SendPacket(actionCodes.Hero_getResetRewardRpc, MsgPack.pack({reward = reward}))
  680 + SendPacket(actionCodes.Hero_getResetRewardRpc, MsgPack.pack(role:packReward(reward, change)))
683 681 return true
684 682 end
685 683  
... ...
src/actions/PvpAction.lua
... ... @@ -334,7 +334,7 @@ function _M.endBattleRpc(agent, data)
334 334 if not match then return end
335 335  
336 336 local temp = string.randWeight(csvdb["player_expCsv"][role:getProperty("level")].pvpBonus, true)
337   - local reward = role:award({[temp[1]] = temp[2]}, {log = {desc = "pvpBattleC"}})
  337 + local reward, change = role:award({[temp[1]] = temp[2]}, {log = {desc = "pvpBattleC"}})
338 338 local myScore, matchScore, oldmyScore, oldMatchScore, myRank, oldMyRank = role:changePvpScoreCommon(match.t == 1 and match.id or -1, isWin)
339 339  
340 340 _pvpBattleInfoCacheC = {} --重新发阵容了 没毛病
... ... @@ -395,6 +395,7 @@ function _M.endBattleRpc(agent, data)
395 395  
396 396 SendPacket(actionCodes.Pvp_endBattleRpc, MsgPack.pack({
397 397 reward = reward,
  398 + change = change,
398 399 myScore = myScore,
399 400 matchScore = matchScore,
400 401 oldmyScore = oldmyScore,
... ... @@ -621,7 +622,7 @@ function _M.endBattleHRpc(agent, data)
621 622  
622 623 -- 战斗结束了发奖
623 624 local temp = string.randWeight(csvdb["player_expCsv"][role:getProperty("level")].pvpgroupBonus, true)
624   - local reward = role:award({[temp[1]] = temp[2]}, {log = {desc = "pvpBattleH"}})
  625 + local reward, change = role:award({[temp[1]] = temp[2]}, {log = {desc = "pvpBattleH"}})
625 626 local myScore, matchScore, oldmyScore, oldMatchScore, myRank, oldMyRank = 0, 0, 0, 0, 0, 0
626 627 if role:isTimeResetOpen(TimeReset.PvpHight) then
627 628 myScore, matchScore, oldmyScore, oldMatchScore, myRank, oldMyRank = role:changePvpScoreHigh(match.t == 1 and match.id or -1, isWin)
... ... @@ -694,6 +695,7 @@ function _M.endBattleHRpc(agent, data)
694 695  
695 696 SendPacket(actionCodes.Pvp_endBattleHRpc, MsgPack.pack({
696 697 reward = reward,
  698 + change = change,
697 699 myScore = myScore,
698 700 matchScore = matchScore,
699 701 oldmyScore = oldmyScore,
... ... @@ -837,10 +839,10 @@ function _M.highDivisionGiftRpc(agent, data)
837 839 pvpHGift = {},
838 840 })
839 841  
840   - local reward = role:award(newReward, {log = {desc = "pvpDivisionH"}})
  842 + local reward, change = role:award(newReward, {log = {desc = "pvpDivisionH"}})
841 843 role:log("pvp_action", {desc = "pvpDivisionH"})
842 844  
843   - SendPacket(actionCodes.Pvp_highDivisionGiftRpc, MsgPack.pack({reward = reward}))
  845 + SendPacket(actionCodes.Pvp_highDivisionGiftRpc, MsgPack.pack(role:packReward(reward, change)))
844 846 return true
845 847 end
846 848  
... ... @@ -871,11 +873,11 @@ function _M.shopBuyRpc(agent, data)
871 873 for id, c in pairs(gift) do
872 874 gift[id] = c * count
873 875 end
874   - local reward = role:award(gift, {log = {desc = "pvpShop", int1 = id, int2 = count}})
  876 + local reward, change = role:award(gift, {log = {desc = "pvpShop", int1 = id, int2 = count}})
875 877  
876 878 role:log("pvp_action", {desc = "pvpShop", int1 = id, int2 = count})
877 879  
878   - SendPacket(actionCodes.Pvp_shopBuyRpc, MsgPack.pack({reward = reward}))
  880 + SendPacket(actionCodes.Pvp_shopBuyRpc, MsgPack.pack(role:packReward(reward, change)))
879 881 return true
880 882 end
881 883  
... ...
src/actions/RoleAction.lua
... ... @@ -408,9 +408,9 @@ function _M.saleItemRpc(agent, data)
408 408 end
409 409  
410 410 role:costItems(backs, {log = {desc = "saleItem"}})
411   - local reward = role:award(reward, {log = {desc = "saleItem"}})
  411 + local reward, change = role:award(reward, {log = {desc = "saleItem"}})
412 412 role:checkTaskEnter("DecoFrag", {count = fragCount})
413   - SendPacket(actionCodes.Role_saleItemRpc, MsgPack.pack({reward = reward}))
  413 + SendPacket(actionCodes.Role_saleItemRpc, MsgPack.pack(role:packReward(reward, change)))
414 414 return true
415 415 end
416 416  
... ... @@ -447,9 +447,10 @@ function _M.openItemRpc(agent, data)
447 447 reward[0] = nil
448 448  
449 449 role:costItems({[itemId] = count}, {log = {desc = "openItem"}})
450   - reward = role:award(reward, {log = {desc = "openItem", int1 = itemId, int2 = count}})
  450 + local change
  451 + reward, change = role:award(reward, {log = {desc = "openItem", int1 = itemId, int2 = count}})
451 452  
452   - SendPacket(actionCodes.Role_openItemRpc, MsgPack.pack({reward = reward}))
  453 + SendPacket(actionCodes.Role_openItemRpc, MsgPack.pack(role:packReward(reward, change)))
453 454 return true
454 455 end
455 456  
... ... @@ -461,7 +462,7 @@ function _M.openTimeBoxRpc(agent, data)
461 462 if math.illegalNum(slot, 1, role:getFuncLv(FuncOpenType.TimeBoxSlot)) then return end
462 463  
463 464 local boxL = role:getProperty("boxL")
464   - local reward = {}
  465 + local reward, change = {}
465 466 if oper == 1 then -- 打开
466 467 local itemId = msg.itemId
467 468 if role:getItemCount(itemId) < 1 then return end
... ... @@ -509,7 +510,7 @@ function _M.openTimeBoxRpc(agent, data)
509 510 reward[0] = nil
510 511  
511 512 boxL[slot] = nil
512   - reward = role:award(reward, {log = {desc = "openTimeBox", int1 = boxId}})
  513 + reward, change = role:award(reward, {log = {desc = "openTimeBox", int1 = boxId}})
513 514 role:checkTaskEnter("OpenBox", {id = boxId})
514 515 else
515 516 return
... ... @@ -517,7 +518,7 @@ function _M.openTimeBoxRpc(agent, data)
517 518  
518 519 role:setProperty("boxL") --刷新
519 520 role:changeUpdates({{type = "boxL", field = slot, value = boxL[slot], isOnlyToC = true}}) -- 通知客户端
520   - SendPacket(actionCodes.Role_openTimeBoxRpc, MsgPack.pack({reward = reward}))
  521 + SendPacket(actionCodes.Role_openTimeBoxRpc, MsgPack.pack(role:packReward(reward, change)))
521 522 return true
522 523 end
523 524  
... ... @@ -568,9 +569,10 @@ function _M.openSpeedUpBoxRpc(agent, data)
568 569 end
569 570  
570 571 role:costItems({[id] = count}, {log = {desc = "speedUpBox"}})
571   - reward = role:award(reward, {log = {desc = "speedUpBox"}, int1 = id, int2 = count})
  572 + local change
  573 + reward, change = role:award(reward, {log = {desc = "speedUpBox"}, int1 = id, int2 = count})
572 574  
573   - SendPacket(actionCodes.Role_openSpeedUpBoxRpc, MsgPack.pack({reward = reward}))
  575 + SendPacket(actionCodes.Role_openSpeedUpBoxRpc, MsgPack.pack(role:packReward(reward, change)))
574 576 return true
575 577 end
576 578  
... ... @@ -596,8 +598,8 @@ function _M.storyBookRewardRpc(agent, data)
596 598 storyStatus[storyId] = storyStatus[storyId] or {}
597 599 storyStatus[storyId].s = -1
598 600 role:changeUpdates({{ type = "storyB", field = storyId, value = storyStatus[storyId] }})
599   - local reward = role:award(storyBookData.gift, {log = {desc = "storybookReward", int1 = storyId}})
600   - SendPacket(actionCodes.Role_storyBookRewardRpc, MsgPack.pack({reward = reward}))
  601 + local reward, change = role:award(storyBookData.gift, {log = {desc = "storybookReward", int1 = storyId}})
  602 + SendPacket(actionCodes.Role_storyBookRewardRpc, MsgPack.pack(role:packReward(reward, change)))
601 603 return true
602 604 end
603 605  
... ... @@ -648,7 +650,7 @@ function _M.taskRpc(agent, data)
648 650 return 3
649 651 end
650 652  
651   - local reward = role:award(taskData.reward, {log = {desc = "finishTask", int1 = taskType, int2 = taskId}})
  653 + local reward, change = role:award(taskData.reward, {log = {desc = "finishTask", int1 = taskType, int2 = taskId}})
652 654 local active = (taskStatus["a"] or 0) + taskData.active
653 655  
654 656 role:changeUpdates({
... ... @@ -656,7 +658,7 @@ function _M.taskRpc(agent, data)
656 658 { type = roleField[taskType], field = "a", value = active}
657 659 })
658 660  
659   - SendPacket(actionCodes.Role_taskRpc, MsgPack.pack({reward = reward}))
  661 + SendPacket(actionCodes.Role_taskRpc, MsgPack.pack(role:packReward(reward, change)))
660 662 return true
661 663 end
662 664  
... ... @@ -681,12 +683,12 @@ function _M.taskActiveRpc(agent, data)
681 683 return
682 684 end
683 685  
684   - local reward = role:award(taskData.reward, {log = {desc = "taskActive", int1 = taskType, int2 = taskId}})
  686 + local reward, change = role:award(taskData.reward, {log = {desc = "taskActive", int1 = taskType, int2 = taskId}})
685 687 role:changeUpdates({
686 688 { type = roleField[taskType], field = {"at", taskId}, value = -1 }
687 689 })
688 690  
689   - SendPacket(actionCodes.Role_taskActiveRpc, MsgPack.pack({reward = reward}))
  691 + SendPacket(actionCodes.Role_taskActiveRpc, MsgPack.pack(role:packReward(reward, change)))
690 692 return true
691 693 end
692 694  
... ... @@ -712,7 +714,7 @@ function _M.achiveRpc(agent, data)
712 714 return 3
713 715 end
714 716  
715   - local reward = role:award(achiveTask.reward, {log = {desc = "finishAchive", int1 = taskId}})
  717 + local reward, change = role:award(achiveTask.reward, {log = {desc = "finishAchive", int1 = taskId}})
716 718 role:changeUpdates({
717 719 { type = "achiveV", field = taskId, value = skynet.timex() }
718 720 })
... ... @@ -745,7 +747,7 @@ function _M.achiveRpc(agent, data)
745 747 end
746 748 end
747 749  
748   - SendPacket(actionCodes.Role_achiveRpc, MsgPack.pack({reward = reward}))
  750 + SendPacket(actionCodes.Role_achiveRpc, MsgPack.pack(role:packReward(reward, change)))
749 751 return true
750 752 end
751 753  
... ... @@ -921,11 +923,12 @@ function _M.drawCodeRpc(agent, data)
921 923 if ret == 0 then
922 924 local giftId = tonumber(result.giftId)
923 925 role:setProperty("codeStr", codestr:setv(giftId, 1))
924   - local reward = role:award(result.gift, {log = {desc = "drawCode", key1 = code, int1 = giftId}})
  926 + local reward, change = role:award(result.gift, {log = {desc = "drawCode", key1 = code, int1 = giftId}})
925 927  
926 928 SendPacket(actionCodes.Role_drawCodeRpc, MsgPack.pack({
927 929 result = ret,
928 930 reward = reward,
  931 + change = change,
929 932 }))
930 933 return true
931 934 end
... ... @@ -1046,8 +1049,8 @@ function _M.goldBuyRpc(agent, data)
1046 1049 end
1047 1050 role.dailyData:updateProperty({field = "goldBuyT", value = curT + 1})
1048 1051 role:costItems({[ItemId.Diamond] = costD}, {log = {desc = "goldBuy"}})
1049   - local reward = role:award({[ItemId.Gold] = goldC}, {log = {desc = "goldBuy"}})
1050   - SendPacket(actionCodes.Role_goldBuyRpc, MsgPack.pack({reward = reward}))
  1052 + local reward, change = role:award({[ItemId.Gold] = goldC}, {log = {desc = "goldBuy"}})
  1053 + SendPacket(actionCodes.Role_goldBuyRpc, MsgPack.pack(role:packReward(reward, change)))
1051 1054 return true
1052 1055 end
1053 1056  
... ...
src/actions/TowerAction.lua
... ... @@ -97,14 +97,14 @@ function _M.endBattleRpc(agent, data)
97 97 local curCount, nextTime = getUpdateTime(towerInfo.c, towerInfo.t)
98 98  
99 99  
100   - local reward
  100 + local reward, change
101 101 if msg.starNum and msg.starNum > 0 then --win
102 102 curCount = math.min(curCount + 1, globalCsv.tower_count_limit) -- 返还次数
103 103 --排行榜
104 104 role:setTowerRank(towerInfo.l)
105 105  
106 106 towerInfo.l = towerInfo.l + 1
107   - reward = role:award(curTower.reward, {log = {desc = "towerBattle", int1 = id}})
  107 + reward, change = role:award(curTower.reward, {log = {desc = "towerBattle", int1 = id}})
108 108 role:checkTaskEnter("TowerPass", {level = towerInfo.l - 1})
109 109 end
110 110  
... ... @@ -115,7 +115,7 @@ function _M.endBattleRpc(agent, data)
115 115  
116 116 role:log("tower_action", {desc = "endBattle", short1 = msg.starNum > 0 and 1 or 0, int1 = id})
117 117  
118   - SendPacket(actionCodes.Tower_endBattleRpc, MsgPack.pack({reward = reward}))
  118 + SendPacket(actionCodes.Tower_endBattleRpc, MsgPack.pack({reward = reward, change = change}))
119 119 return true
120 120 end
121 121  
... ...
src/adv/AdvTask.lua
... ... @@ -183,12 +183,12 @@ function AdvTask.bind(Adv)
183 183  
184 184 -- 完成主线任务
185 185 function Adv:finishMTask()
186   - local ok, reward
  186 + local ok, reward, change
187 187 if self.advMTask.status == -1 then --已完成带领取
188 188 local mainTaskData = csvdb["adv_questCsv"][self.advMTask.id]
189 189 if not mainTaskData then return end
190 190 if mainTaskData.reward == 1 then
191   - reward = self.owner:award(mainTaskData.rewardValue, {log = {desc = "advMainTask", int1 = self.advMTask.id}})
  191 + reward, change = self.owner:award(mainTaskData.rewardValue, {log = {desc = "advMainTask", int1 = self.advMTask.id}})
192 192 end
193 193 self.advMTask.id = self.advMTask.id + 1
194 194 self.advMTask.status = 0
... ... @@ -204,7 +204,7 @@ function AdvTask.bind(Adv)
204 204 ok = true
205 205 advTaskChange.m = true
206 206 end
207   - return ok, reward
  207 + return ok, reward, change
208 208 end
209 209  
210 210 function Adv:updateTask(notNotify)
... ... @@ -388,7 +388,7 @@ function AdvTask.bind(Adv)
388 388 local achievData = (csvdb["adv_achievementCsv"][chapterId] or {})[taskId]
389 389 local status = (self.owner:getProperty(achievField)[chapterId] or {})[taskId] or -1
390 390  
391   - local reward = {}
  391 + local reward, change = {}
392 392 if status >= achievData.value1 then
393 393 insertChange(self, chapterId, taskId, -1)
394 394 local count = (self.owner:getProperty(achievField)[chapterId] or {})[-1] or 0
... ... @@ -396,8 +396,8 @@ function AdvTask.bind(Adv)
396 396 insertChange(self, chapterId, -1, count)
397 397  
398 398 -- 发放奖励
399   - reward = self.owner:award(achievData.reward, {log = {desc = "advAchiev", int1 = chapterId, int2 = taskId}})
400   - return true, reward
  399 + reward, change = self.owner:award(achievData.reward, {log = {desc = "advAchiev", int1 = chapterId, int2 = taskId}})
  400 + return true, reward, change
401 401 end
402 402 end
403 403  
... ... @@ -408,9 +408,9 @@ function AdvTask.bind(Adv)
408 408 local status = ((self.owner:getProperty(achievField)[chapterId] or {})["pts"] or {})[taskId] or 0
409 409 if status == -1 or count < achievData.pt then return end
410 410  
411   - local reward = self.owner:award(achievData.reward, {log = {desc = "advAchievReward", int1 = chapterId, int2 = taskId}})
  411 + local reward, change = self.owner:award(achievData.reward, {log = {desc = "advAchievReward", int1 = chapterId, int2 = taskId}})
412 412 insertChange(self, chapterId, taskId, -1, true)
413   - return true, reward
  413 + return true, reward, change
414 414 end
415 415  
416 416 function Adv:updateAchievement(notNotify)
... ...
src/models/RolePlugin.lua
... ... @@ -145,10 +145,16 @@ function RolePlugin.bind(Role)
145 145 end
146 146 end
147 147 end
148   -
  148 + if not next(allChange) then allChange = nil end
149 149 return reward, allChange --实际获得的奖励 和 最高级奖励转化过程
150 150 end
151 151  
  152 +
  153 + function Role:packReward(reward, change)
  154 + if not reward then return nil end
  155 + return {reward = reward, change = change}
  156 + end
  157 +
152 158 function Role:awardExpireItem(expireTime, gift, params)
153 159 if expireTime <= skynet.timex() then
154 160 return
... ...