Commit 1ab9458f4c0df3b659357a88a3e7fda0e63d25dc
1 parent
3619ff6f
add 下菜操作
Showing
2 changed files
with
43 additions
and
0 deletions
Show diff stats
src/ProtocolCode.lua
| @@ -63,6 +63,7 @@ actionCodes = { | @@ -63,6 +63,7 @@ actionCodes = { | ||
| 63 | Diner_levelUpRpc = 303, | 63 | Diner_levelUpRpc = 303, |
| 64 | Diner_talentUpRpc = 304, | 64 | Diner_talentUpRpc = 304, |
| 65 | Diner_skillUpRpc = 305, | 65 | Diner_skillUpRpc = 305, |
| 66 | + Diner_removeSellRpc = 306, | ||
| 66 | } | 67 | } |
| 67 | 68 | ||
| 68 | rpcResponseBegin = 10000 | 69 | rpcResponseBegin = 10000 |
src/actions/DinerAction.lua
| @@ -72,6 +72,48 @@ function _M.addSellRpc( agent, data ) | @@ -72,6 +72,48 @@ function _M.addSellRpc( agent, data ) | ||
| 72 | return true | 72 | return true |
| 73 | end | 73 | end |
| 74 | 74 | ||
| 75 | +function _M.removeSellRpc( agent, data ) | ||
| 76 | + local role = agent.role | ||
| 77 | + local msg = MsgPack.unpack(data) | ||
| 78 | + | ||
| 79 | + local slot = msg.slot | ||
| 80 | + if math.illegalNum(slot, 1, role.dinerData:getMaxSlots()) then | ||
| 81 | + return 1 | ||
| 82 | + end | ||
| 83 | + slot = tostring(slot) | ||
| 84 | + local sells = json.decode(role.dinerData:getProperty("sells")) | ||
| 85 | + local sell = sells[slot] | ||
| 86 | + if not sell then | ||
| 87 | + return 2 | ||
| 88 | + end | ||
| 89 | + | ||
| 90 | + local dish = sell.dish | ||
| 91 | + local dishSet = csvdb["diner_dishCsv"][dish] | ||
| 92 | + if not dishSet then | ||
| 93 | + return 3 | ||
| 94 | + end | ||
| 95 | + local dishLevel = role.dinerData:getProperty("dishTree"):getv(dish, 0) | ||
| 96 | + if dishLevel == 0 then | ||
| 97 | + return 4 | ||
| 98 | + end | ||
| 99 | + local dishData = dishSet[dishLevel] | ||
| 100 | + if not dishData then | ||
| 101 | + return 5 | ||
| 102 | + end | ||
| 103 | + | ||
| 104 | + local reward = {} | ||
| 105 | + local cost = dishData.material:toNumMap() | ||
| 106 | + for k, n in pairs(cost) do | ||
| 107 | + local sum = n*sell.count | ||
| 108 | + role:addItem({itemId = k,count = sum}) | ||
| 109 | + reward[k] = sum | ||
| 110 | + end | ||
| 111 | + sells[slot] = nil | ||
| 112 | + role.dinerData:updateProperty({field = "sells", value = json.encode(sells)}) | ||
| 113 | + SendPacket(actionCodes.Diner_removeSellRpc, MsgPack.pack({reward = reward})) | ||
| 114 | + return true | ||
| 115 | +end | ||
| 116 | + | ||
| 75 | function _M.getSellRewardRpc( agent, data ) | 117 | function _M.getSellRewardRpc( agent, data ) |
| 76 | 118 | ||
| 77 | end | 119 | end |