AdvAction.lua
3.65 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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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.specialSkillRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
local adv = role:getAdvData()
local status = adv:useSpecialSkill(msg.skillId)
-- if not status then return end
SendPacket(actionCodes.Adv_specialSkillRpc, MsgPack.pack({}))
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
--继续战斗
function _M.nextTurnRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
local adv = role:getAdvData()
local status = adv:nextBattleTurn(msg.turn)
if not status then -- 数据不同步则发送缓存数据
SendPacket(actionCodes.Adv_nextTurnRpc, MsgPack.pack({events = adv.tempBackEvents}))
return true
end
SendPacket(actionCodes.Adv_nextTurnRpc, MsgPack.pack({events = adv:popBackEvents()}))
return true
end
return _M