Commit 386cd4c145a170f4695c8eba4cbf6daefb0b6495
1 parent
5db4c63a
feat: 狩猎祭,增加重置扭蛋机协议
Activity_resetGachakonRpc = 676, --狩猎祭,重制扭蛋机
Showing
3 changed files
with
53 additions
and
1 deletions
Show diff stats
src/ProtocolCode.lua
| @@ -247,7 +247,7 @@ actionCodes = { | @@ -247,7 +247,7 @@ actionCodes = { | ||
| 247 | Activity_actCalendaTaskRpc = 655, | 247 | Activity_actCalendaTaskRpc = 655, |
| 248 | Activity_actPaySignRpc = 656, | 248 | Activity_actPaySignRpc = 656, |
| 249 | Activity_exchangeRpc = 657, | 249 | Activity_exchangeRpc = 657, |
| 250 | - Activity_gachakonRpc = 658, | 250 | + Activity_gachakonRpc = 658, --狩猎祭 抽扭蛋机 |
| 251 | Activity_hangDropRpc = 659, | 251 | Activity_hangDropRpc = 659, |
| 252 | Activity_startBattleRpc = 660, | 252 | Activity_startBattleRpc = 660, |
| 253 | Activity_endBattleRpc = 661, | 253 | Activity_endBattleRpc = 661, |
| @@ -265,6 +265,7 @@ actionCodes = { | @@ -265,6 +265,7 @@ actionCodes = { | ||
| 265 | Activity_returnerTaskRpc = 673, | 265 | Activity_returnerTaskRpc = 673, |
| 266 | Activity_actNewUserTaskRpc = 674, | 266 | Activity_actNewUserTaskRpc = 674, |
| 267 | Activity_buyBattleTicketRpc = 675, | 267 | Activity_buyBattleTicketRpc = 675, |
| 268 | + Activity_resetGachakonRpc = 676, --狩猎祭,重制扭蛋机 | ||
| 268 | 269 | ||
| 269 | Radio_startQuestRpc = 700, | 270 | Radio_startQuestRpc = 700, |
| 270 | Radio_finishQuestRpc = 701, | 271 | Radio_finishQuestRpc = 701, |
src/actions/ActivityAction.lua
| @@ -479,6 +479,20 @@ function _M.gachakonRpc(agent, data) | @@ -479,6 +479,20 @@ function _M.gachakonRpc(agent, data) | ||
| 479 | return true | 479 | return true |
| 480 | end | 480 | end |
| 481 | 481 | ||
| 482 | +function _M.resetGachakonRpc(agent, data) | ||
| 483 | + local role = agent.role | ||
| 484 | + local msg = MsgPack.unpack(data) | ||
| 485 | + local actid = msg.actid | ||
| 486 | + | ||
| 487 | + if not role.activity:isOpenById(actid, "Gachakon") then return 1 end | ||
| 488 | + | ||
| 489 | + if role.activity:isResetById(actid, "Gachakon") then return 2 end | ||
| 490 | + role.activity:resetActDataById(actid) | ||
| 491 | + | ||
| 492 | + SendPacket(actionCodes.Activity_resetGachakonRpc, MsgPack.pack({})) | ||
| 493 | + return true | ||
| 494 | +end | ||
| 495 | + | ||
| 482 | function _M.hangDropRpc(agent, data) | 496 | function _M.hangDropRpc(agent, data) |
| 483 | local role = agent.role | 497 | local role = agent.role |
| 484 | local msg = MsgPack.unpack(data) | 498 | local msg = MsgPack.unpack(data) |
src/models/Activity.lua
| @@ -93,6 +93,8 @@ Activity.schema = { | @@ -93,6 +93,8 @@ Activity.schema = { | ||
| 93 | 93 | ||
| 94 | act34 = {"table", {}}, -- 战令记录{unlock = 1, freeR = "", payR = "", lvl = 10, sum = 100} | 94 | act34 = {"table", {}}, -- 战令记录{unlock = 1, freeR = "", payR = "", lvl = 10, sum = 100} |
| 95 | act36 = {"table", {}}, -- 每日活跃签到 {0=day, 1=1,2=1,3=1} | 95 | act36 = {"table", {}}, -- 每日活跃签到 {0=day, 1=1,2=1,3=1} |
| 96 | + | ||
| 97 | + reset20 = {"number", 1}, -- 重置扭蛋机 | ||
| 96 | } | 98 | } |
| 97 | 99 | ||
| 98 | function Activity:data() | 100 | function Activity:data() |
| @@ -121,6 +123,8 @@ function Activity:data() | @@ -121,6 +123,8 @@ function Activity:data() | ||
| 121 | 123 | ||
| 122 | act34 = self:getProperty("act34"), | 124 | act34 = self:getProperty("act34"), |
| 123 | act36 = self:getProperty("act36"), | 125 | act36 = self:getProperty("act36"), |
| 126 | + | ||
| 127 | + reset20 = self:getProperty("reset20") | ||
| 124 | } | 128 | } |
| 125 | end | 129 | end |
| 126 | 130 | ||
| @@ -207,6 +211,24 @@ function Activity:isOpenById(id, activityType) | @@ -207,6 +211,24 @@ function Activity:isOpenById(id, activityType) | ||
| 207 | return self._isOpen[id] | 211 | return self._isOpen[id] |
| 208 | end | 212 | end |
| 209 | 213 | ||
| 214 | +function Activity:isResetById(id, activityType) | ||
| 215 | + activityType = checkActivityType(activityType) | ||
| 216 | + local cfg = csvdb["activity_ctrlCsv"][id] | ||
| 217 | + if not cfg then return false end | ||
| 218 | + if activityType ~= 0 and cfg.showType ~= activityType then return false end | ||
| 219 | + return self:getResetData(activityType) == 0 | ||
| 220 | +end | ||
| 221 | + | ||
| 222 | +function Activity:getResetData(actType) | ||
| 223 | + actType = checkActivityType(actType) | ||
| 224 | + return self:getProperty("reset" .. actType) | ||
| 225 | +end | ||
| 226 | + | ||
| 227 | +function Activity:updateResetData(actType, reset) | ||
| 228 | + actType = checkActivityType(actType) | ||
| 229 | + self:updateProperty({field = "reset" .. actType, value = reset}) | ||
| 230 | +end | ||
| 231 | + | ||
| 210 | function Activity:getActData(actType) | 232 | function Activity:getActData(actType) |
| 211 | actType = checkActivityType(actType) | 233 | actType = checkActivityType(actType) |
| 212 | return self:getProperty("act" .. actType) | 234 | return self:getProperty("act" .. actType) |
| @@ -756,8 +778,14 @@ activityFunc[Activity.ActivityType.Gachakon] = { | @@ -756,8 +778,14 @@ activityFunc[Activity.ActivityType.Gachakon] = { | ||
| 756 | self:updateActData(actType, {}, not notify) | 778 | self:updateActData(actType, {}, not notify) |
| 757 | end, | 779 | end, |
| 758 | ["crossDay"] = function(self, actType, notify) | 780 | ["crossDay"] = function(self, actType, notify) |
| 781 | + self:updateResetData(actType, 1) | ||
| 759 | self:updateActData(actType, {}, not notify) | 782 | self:updateActData(actType, {}, not notify) |
| 760 | end, | 783 | end, |
| 784 | + ["reset"] = function(self, actType) | ||
| 785 | + if self:getResetData(actType) == 0 then return end | ||
| 786 | + self:updateResetData(actType, 0) | ||
| 787 | + self:updateActData(actType, {}) | ||
| 788 | + end | ||
| 761 | } | 789 | } |
| 762 | 790 | ||
| 763 | -- 活动卡池 | 791 | -- 活动卡池 |
| @@ -865,6 +893,15 @@ function Activity:refreshWeekData(notify) | @@ -865,6 +893,15 @@ function Activity:refreshWeekData(notify) | ||
| 865 | end | 893 | end |
| 866 | end | 894 | end |
| 867 | 895 | ||
| 896 | +function Activity:resetActDataById(actId) | ||
| 897 | + local actData = csvdb["activity_ctrlCsv"][actId] | ||
| 898 | + if not actData then return end | ||
| 899 | + local actType = actData.showType | ||
| 900 | + if activityFunc[actType] and activityFunc[actType]['reset'] then | ||
| 901 | + activityFunc[actType]["reset"](self, actType) | ||
| 902 | + end | ||
| 903 | +end | ||
| 904 | + | ||
| 868 | function Activity:checkActivity(notNotify, activityType, ...) | 905 | function Activity:checkActivity(notNotify, activityType, ...) |
| 869 | if not activityType then return end | 906 | if not activityType then return end |
| 870 | if not self:isOpen(activityType) then return end | 907 | if not self:isOpen(activityType) then return end |