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, -- 拾荒挂机 |