Commit 0c0b161da689f3af76ad0e20612bb8d91ddfc07a
1 parent
5d57bd79
fix getSellRewardRpc
Showing
2 changed files
with
38 additions
and
47 deletions
Show diff stats
src/actions/DinerAction.lua
| ... | ... | @@ -57,12 +57,11 @@ function _M.addSellRpc( agent, data ) |
| 57 | 57 | sells[slot] = { |
| 58 | 58 | dish = dish, |
| 59 | 59 | level = dishLevel, |
| 60 | - totalCount = 0, | |
| 60 | + reward = {}, | |
| 61 | 61 | count = 0, |
| 62 | 62 | } |
| 63 | 63 | end |
| 64 | 64 | local sell = sells[slot] |
| 65 | - sell.totalCount = sell.totalCount + count | |
| 66 | 65 | sell.count = sell.count + count |
| 67 | 66 | sell.time = skynet.timex() - calSell.deltaTime |
| 68 | 67 | sell.hot = role.dinerData:getProperty("hot"):getv(sell.dish, 0) |
| ... | ... | @@ -117,52 +116,24 @@ end |
| 117 | 116 | |
| 118 | 117 | function _M.getSellRewardRpc( agent, data ) |
| 119 | 118 | local role = agent.role |
| 120 | - local rewards = {} | |
| 119 | + local reward = {} | |
| 121 | 120 | local sells = json.decode(role.dinerData:getProperty("sells")) |
| 122 | 121 | for slot,sell in pairs(sells) do |
| 123 | - local info = role.dinerData:updateSell(slot) | |
| 124 | - if info.deltaCount > 0 then | |
| 125 | - local dish = sell.dish | |
| 126 | - local dishSet = csvdb["diner_dishCsv"][dish] | |
| 127 | - if not dishSet then | |
| 128 | - return 3 | |
| 129 | - end | |
| 130 | - local dishLevel = role.dinerData:getProperty("dishTree"):getv(dish, 0) | |
| 131 | - if dishLevel == 0 then | |
| 132 | - return 4 | |
| 133 | - end | |
| 134 | - local dishData = dishSet[dishLevel] | |
| 135 | - if not dishData then | |
| 136 | - return 5 | |
| 137 | - end | |
| 138 | - | |
| 139 | - local reward = dishData.item_normal:toNumMap() | |
| 140 | - if sell.hot then | |
| 141 | - for k,v in pairs(dishData.item_popular:toNumMap()) do | |
| 142 | - if reward[k] then | |
| 143 | - reward[k] = reward[k] + v | |
| 144 | - else | |
| 145 | - reward[k] = v | |
| 146 | - end | |
| 147 | - end | |
| 148 | - end | |
| 149 | - | |
| 150 | - for k, n in pairs(reward) do | |
| 151 | - local sum = n*info.deltaCount | |
| 152 | - role:addItem({itemId = k,count = sum}) | |
| 153 | - rewards[k] = sum | |
| 122 | + role.dinerData:updateSell(slot) | |
| 123 | + for k,v in pairs(sell.reward) do | |
| 124 | + if reward[k] then | |
| 125 | + reward[k] = reward[k] + v | |
| 126 | + else | |
| 127 | + reward[k] = v | |
| 154 | 128 | end |
| 155 | 129 | end |
| 130 | + sells[slot].reward = "" | |
| 156 | 131 | end |
| 157 | - | |
| 158 | - sells = json.decode(role.dinerData:getProperty("sells")) | |
| 159 | - for _,sell in pairs(sells) do | |
| 160 | - if sell.count == 0 then | |
| 161 | - sell = nil | |
| 162 | - end | |
| 132 | + for k, v in pairs(reward) do | |
| 133 | + role:addItem({itemId = k,count = v}) | |
| 163 | 134 | end |
| 164 | 135 | role.dinerData:updateProperty({field = "sells", value = json.encode(sells)}) |
| 165 | - SendPacket(actionCodes.Diner_getSellRewardRpc, MsgPack.pack({reward = rewards})) | |
| 136 | + SendPacket(actionCodes.Diner_getSellRewardRpc, MsgPack.pack({reward = reward})) | |
| 166 | 137 | return true |
| 167 | 138 | end |
| 168 | 139 | ... | ... |
src/models/Diner.lua
| ... | ... | @@ -99,13 +99,33 @@ function Diner:updateSell(slot, calOnly) |
| 99 | 99 | local lastCount = sell.count - deltaCount |
| 100 | 100 | |
| 101 | 101 | if not calOnly then |
| 102 | - if lastCount == 0 then | |
| 103 | - sell = nil | |
| 104 | - else | |
| 105 | - sell.time = skynet.timex() - deltaTime | |
| 106 | - sell.count = lastCount | |
| 107 | - sell.level = self:getProperty("dishTree"):getv(sell.dish, 1) | |
| 102 | + local reward = {} | |
| 103 | + if deltaCount > 0 then | |
| 104 | + local tmp = dishData.item_normal:toNumMap() | |
| 105 | + if sell.hot then | |
| 106 | + for k,v in pairs(dishData.item_popular:toNumMap()) do | |
| 107 | + if tmp[k] then | |
| 108 | + tmp[k] = tmp[k] + v | |
| 109 | + else | |
| 110 | + tmp[k] = v | |
| 111 | + end | |
| 112 | + end | |
| 113 | + end | |
| 114 | + | |
| 115 | + for k, n in pairs(tmp) do | |
| 116 | + local sum = n*deltaCount | |
| 117 | + if reward[tostring(k)] then | |
| 118 | + reward[tostring(k)] = reward[tostring(k)] + sum | |
| 119 | + else | |
| 120 | + reward[tostring(k)] = sum | |
| 121 | + end | |
| 122 | + end | |
| 108 | 123 | end |
| 124 | + | |
| 125 | + sell.time = skynet.timex() - deltaTime | |
| 126 | + sell.count = lastCount | |
| 127 | + sell.level = self:getProperty("dishTree"):getv(sell.dish, 1) | |
| 128 | + sell.reward = reward | |
| 109 | 129 | self:setProperty("sells", json.encode(sells)) |
| 110 | 130 | end |
| 111 | 131 | return { | ... | ... |