23d89d13
zhouahaihai
冒险 结构
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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 = {}
|
46fac6f1
zhouahaihai
酱料
|
19
|
--开始一个新的关卡
|
23d89d13
zhouahaihai
冒险 结构
|
20
21
22
|
function _M.startAdvRpc( agent, data )
local role = agent.role
local msg = MsgPack.unpack(data)
|
46fac6f1
zhouahaihai
酱料
|
23
24
25
|
local chapterId = msg.chapterId
--上一个关卡结束才可以开始新的关卡
|
23d89d13
zhouahaihai
冒险 结构
|
26
|
local advInfo = role:getProperty("advInfo")
|
46fac6f1
zhouahaihai
酱料
|
27
28
|
if next(advInfo) then return end
role:getAdvData():initByChapter(chapterId, 1)
|
23d89d13
zhouahaihai
冒险 结构
|
29
|
|
23d89d13
zhouahaihai
冒险 结构
|
30
31
32
33
|
SendPacket(actionCodes.Adv_startAdvRpc, '')
return true
end
|
46fac6f1
zhouahaihai
酱料
|
34
35
36
37
|
function _M.roleFormatRpc(agent , data)
local role = agent.role
local msg = MsgPack.unpack(data)
local advTeam = role:getProperty("advTeam")
|
384bb077
zhouahaihai
挂机
|
38
|
for slot, heroId in pairs(msg.heros) do
|
46fac6f1
zhouahaihai
酱料
|
39
40
41
42
43
44
|
if not role.heros[heroId] then
return
end
end
table.clear(advTeam)
advTeam.heros = {}
|
384bb077
zhouahaihai
挂机
|
45
|
for slot, heroId in pairs(msg.heros) do
|
46fac6f1
zhouahaihai
酱料
|
46
47
|
advTeam.heros[slot] = heroId
end
|
00115a7a
zhouahaihai
奖励发放
|
48
49
|
advTeam.leader = msg.leader
role:updateProperty({field = "advTeam", value = advTeam})
|
46fac6f1
zhouahaihai
酱料
|
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
|
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
|
42f2d1d3
suhongyang
战斗内技能序列逻辑
|
78
|
--使用营养技能
|
d27ad5e0
suhongyang
使用营养技
|
79
|
function _M.usePotionRpc(agent, data)
|
46fac6f1
zhouahaihai
酱料
|
80
81
|
local role = agent.role
local msg = MsgPack.unpack(data)
|
d27ad5e0
suhongyang
使用营养技
|
82
83
84
85
|
local dishLevel = role.dinerData:getProperty("dishTree"):getv(msg.potionId, 0)
if dishLevel == 0 then
return
end
|
46fac6f1
zhouahaihai
酱料
|
86
|
local adv = role:getAdvData()
|
d27ad5e0
suhongyang
使用营养技
|
87
|
local status = adv:usePotion(msg.potionId, dishLevel, msg.target) -- target {roomId = 1, blockId = 1} 选择的目标
|
46fac6f1
zhouahaihai
酱料
|
88
|
if not status then return end
|
d27ad5e0
suhongyang
使用营养技
|
89
|
SendPacket(actionCodes.Adv_usePotionRpc, MsgPack.pack({events = adv:popBackEvents()}))
|
46fac6f1
zhouahaihai
酱料
|
90
91
|
return true
end
|
23d89d13
zhouahaihai
冒险 结构
|
92
|
|
ec87b4a5
zhouahaihai
冒险 完善
|
93
94
95
96
97
98
99
100
101
102
|
--退出
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
|
12f7b52c
zhouhaihai
冒险战斗
|
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
--开始战斗
function _M.startBattleRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
-- 校验一下信息
local roomId = msg.roomId
local blockId = msg.blockId
local monsterId = msg.monsterId
local enemyId = msg.enemyId
if not enemyId then return end
local adv = role:getAdvData()
local enemy = adv.battle:getEnemyById(enemyId)
if enemy.monsterId ~= monsterId or enemy.roomId ~= roomId or enemy.blockId ~= blockId or enemy.lock or enemy.isDead then return end
local key = tostring(math.random())
adv.__battleCache = {
enemyId = enemyId,
key = key
}
SendPacket(actionCodes.Adv_startBattleRpc, MsgPack.pack({key = key}))
return true
end
-- 结束战斗
function _M.endBattleRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
local roomId = msg.roomId
local blockId = msg.blockId
local monsterId = msg.monsterId
local enemyId = msg.enemyId
local key = msg.key
local player = msg.player
if not player or not player.hp or not player.sp or not enemyId or not key then return end
local adv = role:getAdvData()
-- 校验
if not adv.__battleCache then return end
if adv.__battleCache.enemyId ~= enemyId then return end
local enemy = adv.battle:getEnemyById(enemyId)
if enemy.monsterId ~= monsterId or enemy.roomId ~= roomId or enemy.blockId ~= blockId then return end
adv.__battleCache = nil
local status = adv:clickBlock(roomId, blockId, {player = player})
if not status then return end
SendPacket(actionCodes.Adv_endBattleRpc, MsgPack.pack({events = adv:popBackEvents()}))
return true
end
|
ae20365b
suhongyang
Revert "修改冒险战斗逻辑"
|
157
|
|
23d89d13
zhouahaihai
冒险 结构
|
158
|
return _M
|