Blame view

src/actions/CarAction.lua 3.1 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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
  	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
  	if count < 1 then return 0 end
  	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
  	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
  
43cc5f51   gaofengduan   调整 equip 数据结构
67
68
69
70
71
72
73
74
  	local ownSet = role.equipBag[typ]
  	if not ownSet then return 31 end
  	local ownData = ownSet[lv]
  	if not ownData then return 32 end
  
  	local own = role:getEquipCount(typ,lv)
  	local costCount = equipData.merge*count
  	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)
43cc5f51   gaofengduan   调整 equip 数据结构
87
88
  	role:addEquip({type=typ,level=lv,count=-costCount})
  	role:addEquip({type=typ,level=nextLv,count=count})
9c525cf9   gaofengduan   add car smithy
89
90
91
92
  	SendPacket(actionCodes.Car_equipUpRpc, '')
  	return true
  end
  
fb321075   gaofengduan   add rune up
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
  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
  
  	local maxLv = #csvdb["rune_buildCsv"]
  	if level >= maxLv then return 6 end
  	local lvData = csvdb["rune_buildCsv"][level+1]
  	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
  
9c525cf9   gaofengduan   add car smithy
124
  return _M