AdvAction.lua
2.89 KB
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
31
32
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
local ipairs = ipairs
local table = table
local math = math
local next = next
local string = string
local redisproxy = redisproxy
local MsgPack = MsgPack
local getRandomName = getRandomName
local mcast_util = mcast_util
local string_format = string.format
local tonumber = tonumber
local require = require
local table_insert = table.insert
local tconcat = table.concat
local table_unpack = table.unpack
local _M = {}
--开始一个新的关卡
function _M.startAdvRpc( agent, data )
local role = agent.role
local msg = MsgPack.unpack(data)
local chapterId = msg.chapterId
--上一个关卡结束才可以开始新的关卡
local advInfo = role:getProperty("advInfo")
if next(advInfo) then return end
role:getAdvData():initByChapter(chapterId, 1)
SendPacket(actionCodes.Adv_startAdvRpc, '')
return true
end
function _M.roleFormatRpc(agent , data)
local role = agent.role
local msg = MsgPack.unpack(data)
local advTeam = role:getProperty("advTeam")
for slot, heroId in pairs(msg.heros) do
if not role.heros[heroId] then
return
end
end
table.clear(advTeam)
advTeam.heros = {}
for slot, heroId in pairs(msg.heros) do
advTeam.heros[slot] = heroId
end
advTeam.leader = msg.leader
role:updateProperty({field = "advTeam", value = advTeam})
SendPacket(actionCodes.Adv_roleFormatRpc, '')
return true
end
-- 点击地块(解锁)(触发事件)
function _M.clickBlockRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
local adv = role:getAdvData()
local status = adv:clickBlock(msg.roomId, msg.blockId, msg)
if not status then return end
SendPacket(actionCodes.Adv_clickBlockRpc, MsgPack.pack({events = adv:popBackEvents()}))
return true
end
--use item 使用背包道具
function _M.useItemRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
local adv = role:getAdvData()
local status = adv:useItem(msg.itemId, msg.count, msg.target) -- target {roomId = 1, blockId = 1} 选择的目标
if not status then return end
SendPacket(actionCodes.Adv_useItemRpc, MsgPack.pack({events = adv:popBackEvents()}))
return true
end
--使用营养技能
function _M.usePotionRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
local dishLevel = role.dinerData:getProperty("dishTree"):getv(msg.potionId, 0)
if dishLevel == 0 then
return
end
local adv = role:getAdvData()
local status = adv:usePotion(msg.potionId, dishLevel, msg.target) -- target {roomId = 1, blockId = 1} 选择的目标
if not status then return end
SendPacket(actionCodes.Adv_usePotionRpc, MsgPack.pack({events = adv:popBackEvents()}))
return true
end
--退出
function _M.exitAdvRpc(agent, data)
local role = agent.role
-- local msg = MsgPack.unpack(data)
local adv = role:getAdvData()
local status = adv:exit() -- target {roomId = 1, blockId = 1} 选择的目标
SendPacket(actionCodes.Adv_exitAdvRpc, MsgPack.pack({events = adv:popBackEvents()}))
return true
end
return _M