Commit 847f9a7b1e3f63a31d92dd8ea964ea0ece978206
1 parent
fe296849
兑换活动,邮件内容修改
Showing
9 changed files
with
121 additions
and
8 deletions
Show diff stats
src/GlobalVar.lua
| @@ -304,6 +304,7 @@ MailId = { | @@ -304,6 +304,7 @@ MailId = { | ||
| 304 | ActDrawCardReward = 222, | 304 | ActDrawCardReward = 222, |
| 305 | ActAdvDrawReward = 223, | 305 | ActAdvDrawReward = 223, |
| 306 | ActOpenBoxReward = 224, | 306 | ActOpenBoxReward = 224, |
| 307 | + ActItemRecycle = 225, | ||
| 307 | 308 | ||
| 308 | PaySignAward = 241, | 309 | PaySignAward = 241, |
| 309 | PayBackAward = 242, | 310 | PayBackAward = 242, |
src/ProtocolCode.lua
| @@ -50,6 +50,7 @@ actionCodes = { | @@ -50,6 +50,7 @@ actionCodes = { | ||
| 50 | Role_useSelectItemRpc = 134, -- 使用多选一礼包 | 50 | Role_useSelectItemRpc = 134, -- 使用多选一礼包 |
| 51 | Role_broadGetSSR = 135, -- 全服广播 获得ssr英雄 | 51 | Role_broadGetSSR = 135, -- 全服广播 获得ssr英雄 |
| 52 | Role_renameTeamRpc = 136, -- 编队改名 | 52 | Role_renameTeamRpc = 136, -- 编队改名 |
| 53 | + Role_accuseRpc = 137, -- 举报 | ||
| 53 | 54 | ||
| 54 | Adv_startAdvRpc = 151, | 55 | Adv_startAdvRpc = 151, |
| 55 | Adv_startHangRpc = 152, | 56 | Adv_startHangRpc = 152, |
| @@ -217,6 +218,7 @@ actionCodes = { | @@ -217,6 +218,7 @@ actionCodes = { | ||
| 217 | Activity_actPaySignRewardNtf = 654, | 218 | Activity_actPaySignRewardNtf = 654, |
| 218 | Activity_actCalendaTaskRpc = 655, | 219 | Activity_actCalendaTaskRpc = 655, |
| 219 | Activity_actPaySignRpc = 656, | 220 | Activity_actPaySignRpc = 656, |
| 221 | + Activity_exchangeRpc = 657, | ||
| 220 | 222 | ||
| 221 | Radio_startQuestRpc = 700, | 223 | Radio_startQuestRpc = 700, |
| 222 | Radio_finishQuestRpc = 701, | 224 | Radio_finishQuestRpc = 701, |
src/actions/ActivityAction.lua
| @@ -263,4 +263,36 @@ function _M.actCalendaTaskRpc(agent, data) | @@ -263,4 +263,36 @@ function _M.actCalendaTaskRpc(agent, data) | ||
| 263 | return true | 263 | return true |
| 264 | end | 264 | end |
| 265 | 265 | ||
| 266 | +function _M.exchangeRpc(agent, data) | ||
| 267 | + local role = agent.role | ||
| 268 | + local msg = MsgPack.unpack(data) | ||
| 269 | + local actid = msg.actid | ||
| 270 | + local id = msg.id | ||
| 271 | + if not role.activity:isOpen("Exchange") then return 1 end | ||
| 272 | + | ||
| 273 | + local exchangeCfg = csvdb["activity_exchangeCsv"][actid] | ||
| 274 | + if not exchangeCfg then return 2 end | ||
| 275 | + if not exchangeCfg[id] then return 3 end | ||
| 276 | + local curData = role.activity:getActData("Exchange") or {} | ||
| 277 | + local exchangeData = curData[actid] or {} | ||
| 278 | + local curCount = exchangeData[id] or 0 | ||
| 279 | + local actCfg = exchangeCfg[id] | ||
| 280 | + if curCount >= actCfg then return 4 end | ||
| 281 | + | ||
| 282 | + local costs = actCfg.goods:toNumMap() | ||
| 283 | + if not role:checkItemEnough(costs) then return 5 end | ||
| 284 | + role:costItems(costs, {log = {desc = "actExchange", int1 = actid, int2 = id}}) | ||
| 285 | + | ||
| 286 | + curCount = curCount + 1 | ||
| 287 | + exchangeData[id] = curCount | ||
| 288 | + curData[actid] = exchangeData | ||
| 289 | + role.activity:updateActData("Exchange", curData) | ||
| 290 | + | ||
| 291 | + local reward, change = role:award(actCfg.award, {log = {desc = "actExchange", int1 = actid, int2 = id}}) | ||
| 292 | + | ||
| 293 | + | ||
| 294 | + SendPacket(actionCodes.Activity_exchangeRpc, MsgPack.pack(role:packReward(reward, change))) | ||
| 295 | + return true | ||
| 296 | +end | ||
| 297 | + | ||
| 266 | return _M | 298 | return _M |
| 267 | \ No newline at end of file | 299 | \ No newline at end of file |
src/actions/GmAction.lua
| @@ -533,7 +533,8 @@ function _M.test(role, pms) | @@ -533,7 +533,8 @@ function _M.test(role, pms) | ||
| 533 | local id = tonum(pms.pm1, 0) | 533 | local id = tonum(pms.pm1, 0) |
| 534 | --local hero = require ("actions.HeroAction") | 534 | --local hero = require ("actions.HeroAction") |
| 535 | --hero.unlockPoolRpc({role = role}, MsgPack.pack({type = id})) | 535 | --hero.unlockPoolRpc({role = role}, MsgPack.pack({type = id})) |
| 536 | - print(role:getPaybackReward(0, 10000)) | 536 | + |
| 537 | + role:sendMail(13, nil, "1=2", {111}) | ||
| 537 | return "成功" | 538 | return "成功" |
| 538 | end | 539 | end |
| 539 | 540 |
src/actions/RoleAction.lua
| @@ -1279,4 +1279,15 @@ function _M.renameTeamRpc(agent, data) | @@ -1279,4 +1279,15 @@ function _M.renameTeamRpc(agent, data) | ||
| 1279 | return true | 1279 | return true |
| 1280 | end | 1280 | end |
| 1281 | 1281 | ||
| 1282 | +function _M.accuseRpc(agent, data) | ||
| 1283 | + local role = agent.role | ||
| 1284 | + local msg = MsgPack.unpack(data) | ||
| 1285 | + local targetId = msg.targetId | ||
| 1286 | + local atype = msg.type | ||
| 1287 | + local note = msg.note | ||
| 1288 | + | ||
| 1289 | + role:mylog("role_action", {desc = "accuse", int1 = targetId, short1 = atype, text1 = note}) | ||
| 1290 | + return true | ||
| 1291 | +end | ||
| 1292 | + | ||
| 1282 | return _M | 1293 | return _M |
| 1283 | \ No newline at end of file | 1294 | \ No newline at end of file |
src/models/Activity.lua
| @@ -19,6 +19,11 @@ Activity.ActivityType = { | @@ -19,6 +19,11 @@ Activity.ActivityType = { | ||
| 19 | AdvDraw = 13, --拾荒抽周 资助 | 19 | AdvDraw = 13, --拾荒抽周 资助 |
| 20 | OpenBox = 14, --拆解周 时钟箱 | 20 | OpenBox = 14, --拆解周 时钟箱 |
| 21 | RaceDraw = 16, -- 定向招募活动 | 21 | RaceDraw = 16, -- 定向招募活动 |
| 22 | + | ||
| 23 | + ChallengeLevel = 17, -- 挑战关卡活动 | ||
| 24 | + Exchange = 18, -- 兑换活动 | ||
| 25 | + HangDrop = 19, -- 挂机掉落活动 | ||
| 26 | + Gachakon = 20, -- 扭蛋活动 | ||
| 22 | } | 27 | } |
| 23 | 28 | ||
| 24 | 29 | ||
| @@ -48,6 +53,11 @@ Activity.schema = { | @@ -48,6 +53,11 @@ Activity.schema = { | ||
| 48 | act12 = {"table", {}}, -- {0 = 抽卡次数, 1=1, 2=1} 抽卡周活动 1表示领取过该档位的奖励 | 53 | act12 = {"table", {}}, -- {0 = 抽卡次数, 1=1, 2=1} 抽卡周活动 1表示领取过该档位的奖励 |
| 49 | act13 = {"table", {}}, -- {0 = 拾荒消耗远古金币数量, 1=1, 2=1} 拾荒周活动 1表示领取过该档位的奖励 | 54 | act13 = {"table", {}}, -- {0 = 拾荒消耗远古金币数量, 1=1, 2=1} 拾荒周活动 1表示领取过该档位的奖励 |
| 50 | act14 = {"table", {}}, -- {0 = 拆解数量, 1=1, 2=1} 拆解周活动 1表示领取过该档位的奖励 | 55 | act14 = {"table", {}}, -- {0 = 拆解数量, 1=1, 2=1} 拆解周活动 1表示领取过该档位的奖励 |
| 56 | + | ||
| 57 | + act20 = {"table", {}, true}, -- {id=兑换数量} | ||
| 58 | + act21 = {"table", {}}, -- {id=抽取的数量} | ||
| 59 | + act22 = {"table", {}}, -- {id=关卡星数, totalDmg=Boss总伤害} | ||
| 60 | + act23 = {"table", {}}, -- {挂机信息} | ||
| 51 | } | 61 | } |
| 52 | 62 | ||
| 53 | function Activity:data() | 63 | function Activity:data() |
| @@ -409,12 +419,34 @@ activityFunc[Activity.ActivityType.CalendaTask] = { | @@ -409,12 +419,34 @@ activityFunc[Activity.ActivityType.CalendaTask] = { | ||
| 409 | -- end, | 419 | -- end, |
| 410 | } | 420 | } |
| 411 | 421 | ||
| 422 | +-- 兑换 | ||
| 423 | +activityFunc[Activity.ActivityType.Exchange] = { | ||
| 424 | + ["init"] = function(self, actType, isCrossDay, notify, actId) | ||
| 425 | + local role = self.owner | ||
| 426 | + local actData = self:getActData(actType) or {} | ||
| 427 | + actData[actId] = {} | ||
| 428 | + self:updateActData(actType, actData, not notify) | ||
| 429 | + end, | ||
| 430 | + --["close"] = function(self, actType, notify, actId) | ||
| 431 | + --end, | ||
| 432 | +} | ||
| 433 | + | ||
| 434 | +-- 扭蛋机 | ||
| 435 | +activityFunc[Activity.ActivityType.Gachakon] = { | ||
| 436 | + ["init"] = function(self, actType, isCrossDay, notify, actId) | ||
| 437 | + self:updateActData(actType, {}, not notify) | ||
| 438 | + end, | ||
| 439 | + ["crossDay"] = function(self, actType, notify) | ||
| 440 | + self:updateActData(actType, {}, not notify) | ||
| 441 | + end, | ||
| 442 | +} | ||
| 443 | + | ||
| 412 | function Activity:initActivity(actId, isCrossDay, notify) | 444 | function Activity:initActivity(actId, isCrossDay, notify) |
| 413 | local actData = csvdb["activity_ctrlCsv"][actId] | 445 | local actData = csvdb["activity_ctrlCsv"][actId] |
| 414 | if not actData then return end | 446 | if not actData then return end |
| 415 | local actType = actData.showType | 447 | local actType = actData.showType |
| 416 | if activityFunc[actType] and activityFunc[actType]['close'] then | 448 | if activityFunc[actType] and activityFunc[actType]['close'] then |
| 417 | - activityFunc[actType]["init"](self, actType, isCrossDay, notify) | 449 | + activityFunc[actType]["init"](self, actType, isCrossDay, notify, actId) |
| 418 | end | 450 | end |
| 419 | end | 451 | end |
| 420 | 452 | ||
| @@ -423,7 +455,8 @@ function Activity:closeActivity(actId, notify, notUpdateAct) | @@ -423,7 +455,8 @@ function Activity:closeActivity(actId, notify, notUpdateAct) | ||
| 423 | if not actData then return end | 455 | if not actData then return end |
| 424 | local actType = actData.showType | 456 | local actType = actData.showType |
| 425 | if activityFunc[actType] and activityFunc[actType]['close'] then | 457 | if activityFunc[actType] and activityFunc[actType]['close'] then |
| 426 | - activityFunc[actType]["close"](self, actType, notify) | 458 | + activityFunc[actType]["close"](self, actType, notify, actId) |
| 459 | + self:recycleActItem(actId) | ||
| 427 | end | 460 | end |
| 428 | if Activity.schema["act".. actType] then | 461 | if Activity.schema["act".. actType] then |
| 429 | self:updateActData(actType, Activity.schema["act" .. actType][2], not notify or notUpdateAct) | 462 | self:updateActData(actType, Activity.schema["act" .. actType][2], not notify or notUpdateAct) |
| @@ -529,5 +562,33 @@ function Activity:getPaySignReward() | @@ -529,5 +562,33 @@ function Activity:getPaySignReward() | ||
| 529 | --SendPacket(actionCodes.Activity_actPaySignRpc, MsgPack.pack(role:packReward(reward, change))) | 562 | --SendPacket(actionCodes.Activity_actPaySignRpc, MsgPack.pack(role:packReward(reward, change))) |
| 530 | end | 563 | end |
| 531 | 564 | ||
| 565 | +-- 回收活动道具 | ||
| 566 | +function Activity:recycleActItem(actId) | ||
| 567 | + local role = self.owner | ||
| 568 | + local actCfg = csvdb["activity_ctrlCsv"][actId] | ||
| 569 | + if not actCfg then return end | ||
| 570 | + local gift = {} | ||
| 571 | + local costs = {} | ||
| 572 | + for _, arr in ipairs(role:getItemCount(actCfg.recycle):toTableArray(true)) do | ||
| 573 | + local fromId, toId, toNum = arr[1], arr[2], arr[3] | ||
| 574 | + local itemCount = role:getItemCount(fromId) | ||
| 575 | + if itemCount > 0 then | ||
| 576 | + costs[fromId] = (costs[fromId] or 0) + itemCount | ||
| 577 | + gift[toId] = toNum * itemCount | ||
| 578 | + end | ||
| 579 | + end | ||
| 580 | + if next(costs) then | ||
| 581 | + local itemStr = "" | ||
| 582 | + for k, v in pairs(costs) do | ||
| 583 | + if itemStr ~= "" then | ||
| 584 | + itemStr = itemStr .. " " | ||
| 585 | + end | ||
| 586 | + itemStr = itemStr .. k .. "=" .. v | ||
| 587 | + end | ||
| 588 | + role:costItems(costs, {log = {desc = "actRecycle"}}) | ||
| 589 | + role:sendMail(actCfg.recycle_email, nil, gift, {itemStr}) | ||
| 590 | + end | ||
| 591 | +end | ||
| 592 | + | ||
| 532 | 593 | ||
| 533 | return Activity | 594 | return Activity |
src/models/Email.lua
| @@ -48,10 +48,10 @@ function Email:data() | @@ -48,10 +48,10 @@ function Email:data() | ||
| 48 | 48 | ||
| 49 | if emailData then | 49 | if emailData then |
| 50 | -- 如果内容是直接插入到数据库 | 50 | -- 如果内容是直接插入到数据库 |
| 51 | - if content == "" and emailData.body ~= "" then | ||
| 52 | - content = io.readfile("src/" .. emailData.body) or "" | ||
| 53 | - content = content:format(table.unpack(contentPms)) | ||
| 54 | - end | 51 | + --if content == "" and emailData.body ~= "" then |
| 52 | + -- content = io.readfile("src/" .. emailData.body) or "" | ||
| 53 | + -- content = content:format(table.unpack(contentPms)) | ||
| 54 | + --end | ||
| 55 | 55 | ||
| 56 | if title == "" and emailData.title ~= "" then | 56 | if title == "" and emailData.title ~= "" then |
| 57 | title = emailData.title | 57 | title = emailData.title |
| @@ -67,12 +67,14 @@ function Email:data() | @@ -67,12 +67,14 @@ function Email:data() | ||
| 67 | end | 67 | end |
| 68 | 68 | ||
| 69 | return { | 69 | return { |
| 70 | + cfgId = emailId, | ||
| 70 | id = self:getProperty("id"), | 71 | id = self:getProperty("id"), |
| 71 | status = self:getProperty("status"), | 72 | status = self:getProperty("status"), |
| 72 | createtime = self:getProperty("createtime"), | 73 | createtime = self:getProperty("createtime"), |
| 73 | title = title, | 74 | title = title, |
| 74 | stitle = stitle, | 75 | stitle = stitle, |
| 75 | content = content, | 76 | content = content, |
| 77 | + contentPms = contentPms, | ||
| 76 | attachments = attachments, | 78 | attachments = attachments, |
| 77 | } | 79 | } |
| 78 | end | 80 | end |
src/models/RoleLog.lua
| @@ -42,6 +42,9 @@ local ItemReason = { | @@ -42,6 +42,9 @@ local ItemReason = { | ||
| 42 | freeGift = 127, -- 免费礼包 | 42 | freeGift = 127, -- 免费礼包 |
| 43 | exploreCommand = 128, -- 探索指令 | 43 | exploreCommand = 128, -- 探索指令 |
| 44 | drawHeroExtraReward = 129, -- 抽卡阶段奖励 | 44 | drawHeroExtraReward = 129, -- 抽卡阶段奖励 |
| 45 | + actRecycle = 130, -- 活动道具回收 | ||
| 46 | + actExchange = 131, -- 兑换活动 | ||
| 47 | + actGachakon = 132, -- 扭蛋活动 | ||
| 45 | 48 | ||
| 46 | 49 | ||
| 47 | advHang = 301, -- 拾荒挂机 | 50 | advHang = 301, -- 拾荒挂机 |