Commit 448dee6ba7a2d09e552472dd56873703bdf66aa3

Authored by gaofengduan
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  
... ...
1   -Subproject commit ea68ace5f3aa7feca54e640851838f030b471f9f
  1 +Subproject commit 322f4a5db56d1e952f0edee648d346a79449de37
... ...