Commit 2050d40dda776e6bab9309de51fb34bbc2d7bd8a
1 parent
5a307eb6
add diner expediteSellRpc
Showing
4 changed files
with
45 additions
and
2 deletions
Show diff stats
src/ProtocolCode.lua
src/actions/DinerAction.lua
... | ... | @@ -100,6 +100,7 @@ function _M.removeSellRpc( agent, data ) |
100 | 100 | if not sell then |
101 | 101 | return 2 |
102 | 102 | end |
103 | + role.dinerData:updateSell(slot) | |
103 | 104 | |
104 | 105 | local dish = sell.dish |
105 | 106 | local dishSet = csvdb["diner_dishCsv"][dish] |
... | ... | @@ -164,6 +165,45 @@ function _M.getSellRewardRpc( agent, data ) |
164 | 165 | return true |
165 | 166 | end |
166 | 167 | |
168 | +function _M.expediteSellRpc( agent, data ) | |
169 | + local role = agent.role | |
170 | + local dirty = false | |
171 | + local reward = "" | |
172 | + local sells = json.decode(role.dinerData:getProperty("sells")) | |
173 | + for slot, _ in pairs(sells) do | |
174 | + role.dinerData:updateSell(slot) | |
175 | + end | |
176 | + sells = json.decode(role.dinerData:getProperty("sells")) | |
177 | + for slot, sell in pairs(sells) do | |
178 | + sells[slot].time = sell.time - 7200 | |
179 | + end | |
180 | + role.dinerData:updateProperty({field = "sells", value = json.encode(sells)}) | |
181 | + sells = json.decode(role.dinerData:getProperty("sells")) | |
182 | + for slot, sell in pairs(sells) do | |
183 | + local result = role.dinerData:updateSell(slot) | |
184 | + local rewards = result.reward:toNumMap() | |
185 | + for k,v in pairs(result.reward:toNumMap()) do | |
186 | + reward = reward:incrv(k,v) | |
187 | + end | |
188 | + | |
189 | + if rewards[ItemId.Gold] and rewards[ItemId.Gold] > 0 then | |
190 | + if role.dinerData:checkDinerTask(DinerTask.DishWithGold, rewards[ItemId.Gold], sell.dish, nil, true) then | |
191 | + dirty = true | |
192 | + end | |
193 | + end | |
194 | + end | |
195 | + | |
196 | + for k, v in pairs(reward:toNumMap()) do | |
197 | + role:addItem({itemId = k,count = v}) | |
198 | + end | |
199 | + | |
200 | + if dirty then | |
201 | + role.dinerData:notifyUpdateProperty("order", role.dinerData:getProperty("order")) | |
202 | + end | |
203 | + SendPacket(actionCodes.Diner_expediteSellRpc, MsgPack.pack({reward = reward})) | |
204 | + return true | |
205 | +end | |
206 | + | |
167 | 207 | function _M.levelUpRpc( agent, data ) |
168 | 208 | local role = agent.role |
169 | 209 | local msg = MsgPack.unpack(data) | ... | ... |
src/models/Diner.lua
... | ... | @@ -179,9 +179,9 @@ function Diner:updateSell(slot, calOnly) |
179 | 179 | end |
180 | 180 | deltaCount = math.min(deltaCount, sell.count) |
181 | 181 | local lastCount = sell.count - deltaCount |
182 | + local reward, popular = self:calSellReward(sell, deltaCount, dishData) | |
182 | 183 | |
183 | 184 | if not calOnly and deltaCount > 0 then |
184 | - local reward, popular = self:calSellReward(sell, deltaCount, dishData) | |
185 | 185 | sells[slot].time = skynet.timex() - deltaTime |
186 | 186 | sells[slot].count = lastCount |
187 | 187 | sells[slot].level = self:getProperty("dishTree"):getv(sell.dish, 1) |
... | ... | @@ -195,6 +195,8 @@ function Diner:updateSell(slot, calOnly) |
195 | 195 | deltaCount = deltaCount, |
196 | 196 | deltaTime = deltaTime, |
197 | 197 | lastCount = lastCount, |
198 | + reward = reward, | |
199 | + popular = popular, | |
198 | 200 | } |
199 | 201 | end |
200 | 202 | ... | ... |