Blame view

src/actions/CarAction.lua 3.73 KB
9c525cf9   gaofengduan   add car smithy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  local ipairs = ipairs
  local table = table
  local math = math
  local redisproxy = redisproxy
  local MsgPack = MsgPack
  
  local _M = {}
  
  function _M.makePotionRpc( agent, data )
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  	local potionId = msg.id
  	local count = msg.count
  	if count < 1 then return 0 end
  	local potionBag = role:getProperty("potionBag")
  	local potionLv = role.dinerData:getProperty("dishTree"):getv(potionId, 0)
  	if potionLv < 1 then return 1 end
  
  	local potionSet = csvdb["adv_potionCsv"][potionId]
  	if not potionSet then return 2 end
  
  	local potionData = potionSet[potionLv]
  	if not potionData then return 3 end
  
  	local own = potionBag[potionId] or 0
  	if own+count > potionData.limit then
  		return 4
  	end
  
  	local cost = potionData.material:toNumMap()
e668f4d0   gaofengduan   fix cost
31
32
  	for k, n in pairs(cost) do
  		cost[k] = n * count
9c525cf9   gaofengduan   add car smithy
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
  	end
  	if not role:checkItemEnough(cost) then
  		return 5
  	end
  
  	role:costItems(cost)
  	potionBag[potionId] = own + count
  	role:updateProperty({field = "potionBag", value = potionBag})
  	SendPacket(actionCodes.Car_makePotionRpc, MsgPack.pack({potionBag = potionBag}))
  	return true
  end
  
  function _M.equipUpRpc( agent, data )
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  	local id = msg.id
  	local count = msg.count
056c01a0   zhouhaihai   简化装备
50
  
9c525cf9   gaofengduan   add car smithy
51
52
53
54
55
56
57
58
  	local typ = math.floor((id-7000)/100)
  	local lv = (id-7000)%100
  
  	local dataSet = csvdb["equipCsv"][typ]
  	if not dataSet then return 1 end
  	local equipData = dataSet[lv]
  	if not equipData then return 21 end
  	if equipData.merge < 1 then return 22 end
056c01a0   zhouhaihai   简化装备
59
  
9c525cf9   gaofengduan   add car smithy
60
61
62
63
64
65
66
67
  	local maxLv = 3
  	local nextLv = lv+1
  	if nextLv%10 > maxLv then
  		nextLv = nextLv+10-maxLv
  	end
  	local nextEquip = dataSet[nextLv]
  	if not nextEquip then return 23 end
  
056c01a0   zhouhaihai   简化装备
68
69
70
  	local limit = csvdb["ItemCsv"][nextEquip.id].limit ~= 0 and csvdb["ItemCsv"][nextEquip.id].limit or math.huge
  
  	if math.illegalNum(count, 1, limit)  then return 0 end
43cc5f51   gaofengduan   调整 equip 数据结构
71
72
  
  	local own = role:getEquipCount(typ,lv)
056c01a0   zhouhaihai   简化装备
73
  	local costCount = equipData.merge * count
43cc5f51   gaofengduan   调整 equip 数据结构
74
  	if own < costCount then
9c525cf9   gaofengduan   add car smithy
75
76
77
78
  		return 3
  	end
  
  	local cost = equipData.cost:toNumMap()
e668f4d0   gaofengduan   fix cost
79
80
  	for k, n in pairs(cost) do
  		cost[k] = n * count
9c525cf9   gaofengduan   add car smithy
81
82
83
84
85
  	end
  	if not role:checkItemEnough(cost) then
  		return 4
  	end
  
9c525cf9   gaofengduan   add car smithy
86
  	role:costItems(cost)
056c01a0   zhouhaihai   简化装备
87
88
89
  	role:addEquip(typ, lv, -costCount)
  	role:addEquip(typ, nextLv ,count)
  
9c525cf9   gaofengduan   add car smithy
90
91
92
93
  	SendPacket(actionCodes.Car_equipUpRpc, '')
  	return true
  end
  
fb321075   gaofengduan   add rune up
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
  function _M.runeUpRpc( agent, data )
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  	local uid = msg.uid
  	local ownRune = role.runeBag[uid]
  	if not ownRune then return 1 end
  	if ownRune:getProperty("refer") ~= 0 then return 2 end
  
  	local typ = ownRune:getProperty("type")
  	local id = ownRune:getProperty("id")
  	local level = ownRune:getProperty("level")
  
  	local runeSet = csvdb["runeCsv"][typ]
  	if not runeSet then return 4 end
  	local runeData = runeSet[id]
  	if not runeData then return 5 end
  
04c7448f   gaofengduan   fix rune up
111
112
113
  	local maxLv = table.nums(csvdb["rune_buildCsv"])-1
  	if level > maxLv then return 6 end
  	local lvData = csvdb["rune_buildCsv"][level]
fb321075   gaofengduan   add rune up
114
115
116
117
118
119
120
121
122
123
124
  	local cost = lvData.cost:toNumMap()
  	if not role:checkItemEnough(cost) then
  		return 7
  	end
  
  	role:costItems(cost)
  	ownRune:updateProperty({field = "level",value = level+1})
  	SendPacket(actionCodes.Car_runeUpRpc, '')
  	return true
  end
  
056c01a0   zhouhaihai   简化装备
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
  function _M.Car_saleEquipRpc(agent, data )
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  
  	local id = msg.id
  	local count = msg.count
  
  	local itemData = csvdb["ItemCsv"][id]
  	if not itemData then return end
  
  	local typ = math.floor((id-7000)/100)
  	local lv = (id-7000)%100
  
  	local own = role:getEquipCount(typ,lv)
  	if math.illegalNum(count, 1, own)  then return end
  
  	role:addEquip(typ, lv, -count) -- 删掉装备
  	-- 发奖励
  	local reward = itemData.sell_effect:toNumMap()
  	for k ,v in pairs(reward) do
  		reward[k] = v * count
  	end
  	role:award(reward)
  	SendPacket(actionCodes.Car_saleEquipRpc, MsgPack.pack({reward = reward}))
  	return true
  end
  
9c525cf9   gaofengduan   add car smithy
152
  return _M