Commit 847f9a7b1e3f63a31d92dd8ea964ea0ece978206

Authored by liuzujun
1 parent fe296849

兑换活动,邮件内容修改

@@ -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
1 -Subproject commit 533ae0113773f4672ce8a4b01d911ed1f88a7d46 1 +Subproject commit 7ddcf852c731685bc3aa13e4f0bf7d7a86b45b65
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, -- 拾荒挂机