Commit 448dee6ba7a2d09e552472dd56873703bdf66aa3
1 parent
1068aae9
fix 餐车快速制作
#addSellRpc 可以一次上多个
Showing
2 changed files
with
63 additions
and
64 deletions
Show diff stats
src/actions/DinerAction.lua
... | ... | @@ -9,79 +9,78 @@ local _M = {} |
9 | 9 | function _M.addSellRpc( agent, data ) |
10 | 10 | local role = agent.role |
11 | 11 | local msg = MsgPack.unpack(data) |
12 | + for _,sellData in pairs(msg) do | |
13 | + local slot = sellData.slot | |
14 | + if math.illegalNum(slot, 1, role.dinerData:getMaxSlots()) then | |
15 | + return 1 | |
16 | + end | |
17 | + slot = tostring(slot) | |
12 | 18 | |
13 | - local slot = msg.slot | |
14 | - if math.illegalNum(slot, 1, role.dinerData:getMaxSlots()) then | |
15 | - return 1 | |
16 | - end | |
17 | - slot = tostring(slot) | |
18 | - | |
19 | - local dish = msg.dish | |
20 | - local dishSet = csvdb["diner_dishCsv"][dish] | |
21 | - if not dishSet then | |
22 | - return 2 | |
23 | - end | |
24 | - local dishLevel = role.dinerData:getProperty("dishTree"):getv(dish, 0) | |
25 | - if dishLevel == 0 then | |
26 | - return 3 | |
27 | - end | |
28 | - local dishData = dishSet[dishLevel] | |
29 | - if not dishData then | |
30 | - return 4 | |
31 | - end | |
19 | + local dish = sellData.dish | |
20 | + local dishSet = csvdb["diner_dishCsv"][dish] | |
21 | + if not dishSet then | |
22 | + return 2 | |
23 | + end | |
24 | + local dishLevel = role.dinerData:getProperty("dishTree"):getv(dish, 0) | |
25 | + if dishLevel == 0 then | |
26 | + return 3 | |
27 | + end | |
28 | + local dishData = dishSet[dishLevel] | |
29 | + if not dishData then | |
30 | + return 4 | |
31 | + end | |
32 | 32 | |
33 | - local calSell = role.dinerData:updateSell(slot, true) or { | |
34 | - deltaCount = 0, | |
35 | - deltaTime = 0, | |
36 | - lastCount = 0, | |
37 | - } | |
38 | - local count = msg.count | |
39 | - local maxDishCount = role.dinerData:getMaxDishs() | |
40 | - if math.illegalNum(count + calSell.lastCount, 1, maxDishCount) then | |
41 | - return 5 | |
42 | - end | |
33 | + local calSell = role.dinerData:updateSell(slot, true) or { | |
34 | + deltaCount = 0, | |
35 | + deltaTime = 0, | |
36 | + lastCount = 0, | |
37 | + } | |
38 | + local count = sellData.count | |
39 | + local maxDishCount = role.dinerData:getMaxDishs() | |
40 | + if math.illegalNum(count + calSell.lastCount, 1, maxDishCount) then | |
41 | + return 5 | |
42 | + end | |
43 | 43 | |
44 | - local cost = dishData.material:toNumMap() | |
45 | - for _, n in pairs(cost) do | |
46 | - n = n * count | |
47 | - end | |
48 | - if not role:checkItemEnough(cost) then | |
49 | - return 6 | |
50 | - end | |
44 | + local cost = dishData.material:toNumMap() | |
45 | + for _, n in pairs(cost) do | |
46 | + n = n * count | |
47 | + end | |
48 | + if not role:checkItemEnough(cost) then | |
49 | + return 6 | |
50 | + end | |
51 | 51 | |
52 | - role:costItems(cost) | |
53 | - role.dinerData:updateSell(slot) | |
52 | + role:costItems(cost) | |
53 | + role.dinerData:updateSell(slot) | |
54 | 54 | |
55 | - local dirty = false | |
56 | - for id, value in pairs(cost) do | |
57 | - if role.dinerData:checkDinerTask(DinerTask.UseMaterial, value, id, nil, true) then | |
55 | + local dirty = false | |
56 | + for id, value in pairs(cost) do | |
57 | + if role.dinerData:checkDinerTask(DinerTask.UseMaterial, value, id, nil, true) then | |
58 | + dirty = true | |
59 | + end | |
60 | + end | |
61 | + if role.dinerData:checkDinerTask(DinerTask.AddDish, count, dish, nil, true) then | |
58 | 62 | dirty = true |
59 | 63 | end |
60 | - end | |
61 | - if role.dinerData:checkDinerTask(DinerTask.AddDish, count, dish, nil, true) then | |
62 | - dirty = true | |
63 | - end | |
64 | - if dirty then | |
65 | - role.dinerData:notifyUpdateProperty("order", role.dinerData:getProperty("order")) | |
66 | - end | |
64 | + if dirty then | |
65 | + role.dinerData:notifyUpdateProperty("order", role.dinerData:getProperty("order")) | |
66 | + end | |
67 | 67 | |
68 | - local sells = json.decode(role.dinerData:getProperty("sells")) | |
69 | - if not sells[slot] then | |
70 | - sells[slot] = { | |
71 | - dish = dish, | |
72 | - level = dishLevel, | |
73 | - reward = "", | |
74 | - count = 0, | |
75 | - } | |
68 | + local sells = json.decode(role.dinerData:getProperty("sells")) | |
69 | + if not sells[slot] then | |
70 | + sells[slot] = { | |
71 | + dish = dish, | |
72 | + level = dishLevel, | |
73 | + reward = "", | |
74 | + count = 0, | |
75 | + } | |
76 | + end | |
77 | + local sell = sells[slot] | |
78 | + sell.count = sell.count + count | |
79 | + sell.time = skynet.timex() - calSell.deltaTime | |
80 | + sell.hot = role.dinerData:getProperty("hot"):getv(sell.dish, 0) | |
81 | + role.dinerData:updateProperty({field = "sells", value = json.encode(sells)}) | |
76 | 82 | end |
77 | - local sell = sells[slot] | |
78 | - sell.count = sell.count + count | |
79 | - sell.time = skynet.timex() - calSell.deltaTime | |
80 | - sell.hot = role.dinerData:getProperty("hot"):getv(sell.dish, 0) | |
81 | - | |
82 | - role.dinerData:updateProperty({field = "sells", value = json.encode(sells)}) | |
83 | 83 | SendPacket(actionCodes.Diner_addSellRpc, "") |
84 | - | |
85 | 84 | return true |
86 | 85 | end |
87 | 86 | ... | ... |