Commit f4c65591354382ead8213749c1896f334e7e59a5
1 parent
8da953a7
抽奖
Showing
4 changed files
with
42 additions
and
0 deletions
Show diff stats
src/GlobalVar.lua
| @@ -52,6 +52,7 @@ FuncOpenType = { | @@ -52,6 +52,7 @@ FuncOpenType = { | ||
| 52 | AdvRelay = 3, -- 中继开放 | 52 | AdvRelay = 3, -- 中继开放 |
| 53 | AdvArtifact = 4, -- 神器开放 | 53 | AdvArtifact = 4, -- 神器开放 |
| 54 | AdvWS = 6, -- 工坊解锁 | 54 | AdvWS = 6, -- 工坊解锁 |
| 55 | + AdvWheelSurf = 7, -- 抽奖解锁 | ||
| 55 | } | 56 | } |
| 56 | 57 | ||
| 57 | TypeIsFunc = {} | 58 | TypeIsFunc = {} |
src/ProtocolCode.lua
| @@ -41,6 +41,7 @@ actionCodes = { | @@ -41,6 +41,7 @@ actionCodes = { | ||
| 41 | Adv_buyAdvCountRpc = 160, | 41 | Adv_buyAdvCountRpc = 160, |
| 42 | Adv_finishTaskRpc = 161, | 42 | Adv_finishTaskRpc = 161, |
| 43 | Adv_workshopRpc = 162, | 43 | Adv_workshopRpc = 162, |
| 44 | + Adv_wheelSurfRpc = 163, | ||
| 44 | 45 | ||
| 45 | Hero_loadInfos = 201, | 46 | Hero_loadInfos = 201, |
| 46 | Hero_updateProperty = 202, | 47 | Hero_updateProperty = 202, |
src/actions/AdvAction.lua
| @@ -362,5 +362,40 @@ function _M.workshopRpc(agent, data) | @@ -362,5 +362,40 @@ function _M.workshopRpc(agent, data) | ||
| 362 | return true | 362 | return true |
| 363 | end | 363 | end |
| 364 | 364 | ||
| 365 | +function _M.wheelSurfRpc(agent, data) | ||
| 366 | + local role = agent.role | ||
| 367 | + local msg = MsgPack.unpack(data) | ||
| 368 | + if not role:isFuncOpen(FuncOpenType.AdvWheelSurf) then return end | ||
| 369 | + if not role._advWheelSurfCount then return end | ||
| 370 | + | ||
| 371 | + local drawData = csvdb["adv_wheelsurfCsv"][role:getFuncLv(FuncOpenType.AdvWheelSurf)] | ||
| 372 | + if not drawData then return end | ||
| 373 | + | ||
| 374 | + local costs = drawData.cost:toArray(true, "=") | ||
| 375 | + local maxt = math.max(#costs, drawData.time) | ||
| 376 | + | ||
| 377 | + if role._advWheelSurfCount >= maxt then | ||
| 378 | + role._advWheelSurfCount = nil | ||
| 379 | + return | ||
| 380 | + end | ||
| 381 | + | ||
| 382 | + local cost = costs[role._advWheelSurfCount + 1] | ||
| 383 | + if cost > 0 then | ||
| 384 | + if not role:checkItemEnough({[ItemId.Diamond] = cost}) then return end | ||
| 385 | + role:costItems({[ItemId.Diamond] = cost}) | ||
| 386 | + end | ||
| 387 | + | ||
| 388 | + role._advWheelSurfCount = role._advWheelSurfCount + 1 | ||
| 389 | + if role._advWheelSurfCount >= maxt then | ||
| 390 | + role._advWheelSurfCount = nil | ||
| 391 | + end | ||
| 392 | + | ||
| 393 | + local gift = drawData.pool:randWeight(true) | ||
| 394 | + | ||
| 395 | + local reward = role:award({[gift[1]] = gift[2]}) | ||
| 396 | + SendPacket(actionCodes.Adv_wheelSurfRpc, MsgPack.pack({reward = reward})) | ||
| 397 | + return true | ||
| 398 | +end | ||
| 399 | + | ||
| 365 | 400 | ||
| 366 | return _M | 401 | return _M |
| 367 | \ No newline at end of file | 402 | \ No newline at end of file |
src/adv/Adv.lua
| @@ -49,6 +49,8 @@ function Adv:initByChapter(chapterId, level, isToNext, notNotify) | @@ -49,6 +49,8 @@ function Adv:initByChapter(chapterId, level, isToNext, notNotify) | ||
| 49 | self.lastEnemyId = 1 | 49 | self.lastEnemyId = 1 |
| 50 | self.mapStack = {1} -- 最后一个为当前的地图 | 50 | self.mapStack = {1} -- 最后一个为当前的地图 |
| 51 | 51 | ||
| 52 | + self.owner._advWheelSurfCount = nil -- 抽奖进行次数 | ||
| 53 | + | ||
| 52 | -- 随机出地图 | 54 | -- 随机出地图 |
| 53 | local mapId = self:randomMapId(chapterId, level) | 55 | local mapId = self:randomMapId(chapterId, level) |
| 54 | self.maps = {} | 56 | self.maps = {} |
| @@ -157,6 +159,9 @@ function Adv:over(success) | @@ -157,6 +159,9 @@ function Adv:over(success) | ||
| 157 | if success then | 159 | if success then |
| 158 | reward = self.owner:award(self.owner:getProperty("advItems"):toNumMap()) | 160 | reward = self.owner:award(self.owner:getProperty("advItems"):toNumMap()) |
| 159 | self.owner:checkTaskEnter(self.owner.TaskType.AdvPass, {id = self.chapterId}) | 161 | self.owner:checkTaskEnter(self.owner.TaskType.AdvPass, {id = self.chapterId}) |
| 162 | + if self.owner:isFuncOpen(FuncOpenType.AdvWheelSurf) then | ||
| 163 | + self.owner._advWheelSurfCount = 0 -- 抽奖进行次数 | ||
| 164 | + end | ||
| 160 | end | 165 | end |
| 161 | self:clear() | 166 | self:clear() |
| 162 | 167 |