Commit 766ddd19022aa338668d679346172504f984cb3a

Authored by jiyue
2 parents f8a0d369 8c154e11

Merge branch 'cn/develop' into cn/publish/preview

# Conflicts:
#	src/csvdata
src/GlobalVar.lua
... ... @@ -430,6 +430,7 @@ SystemBnousType = {
430 430 UpSpeedNum = 15, -- 加速次数上限增加 15=1探索加速or 2齿轮加速or 3餐厅加速=增加次数
431 431 ChangeBaseCount = 16, -- 每日奖励关卡挑战卡基础数量增加
432 432 ChangeBuyCount = 17, -- 每日奖励关卡挑战卡可购买次数增加,
  433 + ExtraProp = 18, -- 每次探索加速额外获得道具
433 434 }
434 435  
435 436 -- 开箱物品类型
... ...
src/ProtocolCode.lua
... ... @@ -61,7 +61,7 @@ actionCodes = {
61 61 Role_runeBuyRpc = 142, -- 铭文购买
62 62 Role_setFriendTeamRpc = 143, -- 设置好友切磋队伍
63 63 Role_setBgRpc = 144, -- 设置看板娘
64   - Role_itemConvertMonthCardRpc = 145, -- 兑换月卡/战令道具
  64 + Role_itemConvertSpecialRpc = 145, -- 兑换月卡/战令探索指令等 特殊道具
65 65 Role_worldLineRoulette = 146, --世界线抽轮盘
66 66 Role_worldLineReward = 147, -- 世界线一键领取奖励
67 67  
... ... @@ -250,7 +250,7 @@ actionCodes = {
250 250 Activity_actCalendaTaskRpc = 655,
251 251 Activity_actPaySignRpc = 656,
252 252 Activity_exchangeRpc = 657,
253   - Activity_gachakonRpc = 658,
  253 + Activity_gachakonRpc = 658, --狩猎祭 抽扭蛋机
254 254 Activity_hangDropRpc = 659,
255 255 Activity_startBattleRpc = 660,
256 256 Activity_endBattleRpc = 661,
... ... @@ -268,6 +268,7 @@ actionCodes = {
268 268 Activity_returnerTaskRpc = 673,
269 269 Activity_actNewUserTaskRpc = 674,
270 270 Activity_buyBattleTicketRpc = 675,
  271 + Activity_resetGachakonRpc = 676, --狩猎祭,重制扭蛋机
271 272  
272 273 Radio_startQuestRpc = 700,
273 274 Radio_finishQuestRpc = 701,
... ...
src/actions/ActivityAction.lua
... ... @@ -479,6 +479,20 @@ function _M.gachakonRpc(agent, data)
479 479 return true
480 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 496 function _M.hangDropRpc(agent, data)
483 497 local role = agent.role
484 498 local msg = MsgPack.unpack(data)
... ...
src/actions/HangAction.lua
... ... @@ -528,16 +528,20 @@ function _M.quickRpc(agent , data)
528 528 end
529 529  
530 530 --宝藏加速
531   - local treasureList= role.dailyData:quickTreasureList(hangInfo.carbonId, time) or {}
532   - if next(treasureList) then
533   - for id, val in pairs(treasureList) do
534   - local award = val.award:toNumMap()
535   - for k,v in pairs(award) do
536   - reward[k] = (reward[k] or 0) + v
537   - end
  531 + local treasureList = role.dailyData:quickTreasureList(hangInfo.carbonId, time) or {}
  532 + for id, val in pairs(treasureList) do
  533 + local award = val.award:toNumMap()
  534 + for k,v in pairs(award) do
  535 + reward[k] = (reward[k] or 0) + v
538 536 end
539 537 end
540 538  
  539 + --等级 额外奖励
  540 + local levelReward = role:getExtraProp()
  541 + for k, v in pairs(levelReward or {}) do
  542 + reward[k] = (reward[k] or 0) + v
  543 + end
  544 +
541 545 local change
542 546 reward, change = role:award(reward, {log = {desc = "quickHang", int1 = hangInfo.carbonId}})
543 547 if reward[ItemId.Gold] then
... ...
src/actions/RoleAction.lua
... ... @@ -1712,18 +1712,18 @@ function _M.setBgRpc(agent, data)
1712 1712 return true
1713 1713 end
1714 1714  
1715   -function _M.itemConvertMonthCardRpc(agent, data)
  1715 +function _M.itemConvertSpecialRpc(agent, data)
1716 1716 local role = agent.role
1717 1717 local msg = MsgPack.unpack(data)
1718 1718 local itemId = msg.item_id
1719   - local typ = msg.typ
1720   - local count = msg.count
  1719 + local count = msg.count or 1
1721 1720 local exchangeId = msg.exchange_id
1722 1721  
1723   - if not ItemId[itemId] then return 1 end
  1722 + local itemData = csvdb["itemCsv"][itemId]
  1723 + if not itemData then return 1 end
1724 1724  
1725 1725 if not role:checkItemEnough({[itemId] = count}) then return 2 end
1726   - role:costItems({[itemId] = count}, {log = {desc = "itemConvertmonthCard", int1 = count, int2 = count}})
  1726 + role:costItems({[itemId] = count}, {log = {desc = "itemConvertSpecial", int1 = itemId, int2 = itemData.type}})
1727 1727  
1728 1728 local rechargeData = csvdb["shop_rechargeCsv"][exchangeId]
1729 1729 if not rechargeData then
... ... @@ -1751,27 +1751,27 @@ function _M.worldLineRoulette(agent, data)
1751 1751 local rouletteCount = worldChangePoints[ItemWorldLine.RouletteCount] or 0
1752 1752 if rouletteCount == 0 then return 1 end
1753 1753  
1754   - local worldline_gift_base_10, worldline_gift_base_1, worldline_gift_magnification_10, worldline_gift_magnification_1 = {}, {}, {}, {}
  1754 + local worldline_gift_base_10, worldline_gift_base_1, worldline_gift_magnification_1, worldline_gift_magnification_0 = {}, {}, {}, {}
1755 1755 for k, v in pairs(globalCsv.worldline_gift_base_10) do
1756 1756 worldline_gift_base_10[k] = {v}
1757 1757 end
1758 1758 for k, v in pairs(globalCsv.worldline_gift_base_1) do
1759 1759 worldline_gift_base_1[k] = {v}
1760 1760 end
1761   - for k, v in pairs(globalCsv.worldline_gift_magnification_10) do
1762   - worldline_gift_magnification_10[k] = {v}
1763   - end
1764 1761 for k, v in pairs(globalCsv.worldline_gift_magnification_1) do
1765 1762 worldline_gift_magnification_1[k] = {v}
1766 1763 end
  1764 + for k, v in pairs(globalCsv.worldline_gift_magnification_0) do
  1765 + worldline_gift_magnification_0[k] = {v}
  1766 + end
1767 1767  
1768 1768 local gift_base_10 = (math.randWeight(worldline_gift_base_10, 1) or 0) * 10
1769 1769 local gift_base_1 = math.randWeight(worldline_gift_base_1, 1) or 0
1770 1770  
1771   - local gift_magnification_10 = (math.randWeight(worldline_gift_magnification_10, 1) or 0) * 10
1772 1771 local gift_magnification_1 = math.randWeight(worldline_gift_magnification_1, 1) or 0
  1772 + local gift_magnification_0 = (math.randWeight(worldline_gift_magnification_0, 1) or 0) * (0.1)
1773 1773  
1774   - local points = (gift_base_10 + gift_base_1) * (gift_magnification_10 + gift_magnification_1)
  1774 + local points = math.floor((gift_base_10 + gift_base_1) * (gift_magnification_1 + gift_magnification_0))
1775 1775 worldChangePoints[ItemWorldLine.RouletteCount] = worldChangePoints[ItemWorldLine.RouletteCount] - 1
1776 1776 worldChangePoints[ItemWorldLine.Points] = worldChangePoints[ItemWorldLine.Points] + points
1777 1777 role:updateProperty({field = "worldChangePoints", value = worldChangePoints})
... ...
src/agent.lua
... ... @@ -35,10 +35,17 @@ local function handle_timeout()
35 35 skynet.timeout(100, handle_timeout)
36 36 end
37 37  
  38 +local function handle_gc()
  39 + if agentInfo.open_timer then return end
  40 + collectgarbage("collect")
  41 + skynet.timeout(6000, handle_gc)
  42 +end
  43 +
38 44 function start_agent_timer()
39 45 if agentInfo.open_timer then return end
40 46 agentInfo.open_timer = true
41 47 skynet.timeout(150, handle_timeout)
  48 + skynet.timeout(6000, handle_gc)
42 49 end
43 50  
44 51 function cancel_agent_timer()
... ...
src/models/Activity.lua
... ... @@ -93,6 +93,8 @@ Activity.schema = {
93 93  
94 94 act34 = {"table", {}}, -- 战令记录{unlock = 1, freeR = "", payR = "", lvl = 10, sum = 100}
95 95 act36 = {"table", {}}, -- 每日活跃签到 {0=day, 1=1,2=1,3=1}
  96 +
  97 + reset20 = {"number", 1}, -- 重置扭蛋机
96 98 }
97 99  
98 100 function Activity:data()
... ... @@ -121,6 +123,8 @@ function Activity:data()
121 123  
122 124 act34 = self:getProperty("act34"),
123 125 act36 = self:getProperty("act36"),
  126 +
  127 + reset20 = self:getProperty("reset20")
124 128 }
125 129 end
126 130  
... ... @@ -207,6 +211,24 @@ function Activity:isOpenById(id, activityType)
207 211 return self._isOpen[id]
208 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 232 function Activity:getActData(actType)
211 233 actType = checkActivityType(actType)
212 234 return self:getProperty("act" .. actType)
... ... @@ -756,8 +778,14 @@ activityFunc[Activity.ActivityType.Gachakon] = {
756 778 self:updateActData(actType, {}, not notify)
757 779 end,
758 780 ["crossDay"] = function(self, actType, notify)
  781 + self:updateResetData(actType, 1)
759 782 self:updateActData(actType, {}, not notify)
760 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 893 end
866 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 905 function Activity:checkActivity(notNotify, activityType, ...)
869 906 if not activityType then return end
870 907 if not self:isOpen(activityType) then return end
... ...
src/models/RoleLog.lua
... ... @@ -66,8 +66,8 @@ local ItemReason = {
66 66 shopBuy = 150, -- 商店购买
67 67 monthCardReward = 151, --月卡奖励
68 68 smonthCardReward = 152, --特刊奖励
69   - itemConvertmonthCard = 153, --兑换月卡
70   - itemConvertsmonthCard = 154, --兑换特刊
  69 + itemConvertSpecial = 153, --兑换月卡/战令/探索指令 特殊道具
  70 + buyDiamondCardReward = 154, --购买钻石额外赠送奖励
71 71  
72 72 advHang = 301, -- 拾荒挂机
73 73 hangBattle = 302, -- 挂机战斗
... ...
src/models/RolePlugin.lua
... ... @@ -2448,6 +2448,12 @@ function RolePlugin.bind(Role)
2448 2448 self:updateProperty({field = "rechargeF", value = rechargeF})
2449 2449 end
2450 2450 self:gainDiamond({count = diamondCount, isRecharge = true, sid = params.sid, log = {desc = "recharge", int1 = id}})
  2451 +
  2452 + --已购月卡 购买魔导石 赠送cardReward
  2453 + if not self.storeData:isMonthCardExpire() then
  2454 + reward, _ = self:award(rechargeData.cardReward, {isRecharge = true, log = {desc = "buyDiamondCardReward", int1 = id}})
  2455 + end
  2456 +
2451 2457 elseif rechargeData.shop == 2 then --通行证商店
2452 2458 --签收 + 订阅奖励
2453 2459 local tmpreward, _ = self.storeData:onBuyCard(rechargeData.type, rechargeData.time, rechargeData.id, rechargeData.activity_id)
... ... @@ -2458,10 +2464,6 @@ function RolePlugin.bind(Role)
2458 2464 reward, _ = self:award(rechargeData.itemFirst, {isRecharge = true, log = {desc = "recharge", int1 = id}})
2459 2465  
2460 2466 self:checkTaskEnter("BuyLimitPack", {id = id})
2461   - --增加购买记录
2462   - local buyRecord = self.storeData:getProperty("buyR") or {}
2463   - buyRecord[id] = (buyRecord[id] or 0) + 1
2464   - self.storeData:updateProperty({field = "buyR", value = buyRecord})
2465 2467 else
2466 2468 skynet.error("[recharge] invalid recharge shop type " .. id)
2467 2469 return 3
... ... @@ -3016,6 +3018,16 @@ function RolePlugin.bind(Role)
3016 3018 return levelBnous[SystemBnousType.ChangeBuyCount] or 0
3017 3019 end
3018 3020  
  3021 + function Role:getExtraProp()
  3022 + local levelBnous = self:getLevelBnous()
  3023 + local extraPropReward = levelBnous[SystemBnousType.ExtraProp] or {}
  3024 + local reward = {}
  3025 + for k, v in pairs(extraPropReward) do
  3026 + reward[k] = (reward[k] or 0) + v
  3027 + end
  3028 + return reward
  3029 + end
  3030 +
3019 3031 function Role:getLevelBnous()
3020 3032 local levelBnous = {}
3021 3033 local curLevel = self:getProperty("level")
... ...