Commit 2660491b36822022beb808f02cc0908d7afc2a0a
1 parent
2485b746
fix: 铭文仓库爆满限制bug
1. 穿在英雄身上的铭文不计算在仓库。 2. 开箱判断物品所占用的仓库格数,item_random.ware字段 3. 领取邮件,如果邮件中没有铭文,则不判断铭文仓库是否爆满。
Showing
3 changed files
with
49 additions
and
7 deletions
Show diff stats
src/GlobalVar.lua
| ... | ... | @@ -424,3 +424,14 @@ SystemBnousType = { |
| 424 | 424 | ChangeBaseCount = 16, -- 每日奖励关卡挑战卡基础数量增加 |
| 425 | 425 | ChangeBuyCount = 17, -- 每日奖励关卡挑战卡可购买次数增加, |
| 426 | 426 | } |
| 427 | + | |
| 428 | +-- 开箱物品类型 | |
| 429 | +ItemOccupy = { | |
| 430 | + EquipBase = 1, --装备 | |
| 431 | + Rune = 2, --铭文 | |
| 432 | + Diner = 3, --食材 | |
| 433 | + CommonPaster = 4, --贴纸 | |
| 434 | + Spark = 5, --火花 | |
| 435 | + Other = 6, | |
| 436 | + CanUsed = 7, --可使用 | |
| 437 | +} | |
| 427 | 438 | \ No newline at end of file | ... | ... |
src/actions/RoleAction.lua
| ... | ... | @@ -686,13 +686,17 @@ function _M.openTimeBoxRpc(agent, data) |
| 686 | 686 | local count, runeCount = 0, 0 |
| 687 | 687 | for itemId, num in pairs(costs) do |
| 688 | 688 | local itemIdData = csvdb["itemCsv"][itemId] |
| 689 | - if not itemIdData or not csvdb["item_randomCsv"][itemId] or costIdData.quality ~= itemIdData.quality then return 7 end | |
| 689 | + local itemRandomData = csvdb["item_randomCsv"][itemId] | |
| 690 | + if not itemIdData or not itemRandomData or costIdData.quality ~= itemIdData.quality then return 7 end | |
| 690 | 691 | |
| 691 | - if itemIdData.type == ItemType.Rune then runeCount = runeCount + num end | |
| 692 | + local itemRandomOccupy = role:getItemRandomOccupy(itemRandomData) | |
| 693 | + if next(itemRandomOccupy) then | |
| 694 | + runeCount = runeCount + (itemRandomOccupy[ItemOccupy.Rune] or 0) * num | |
| 695 | + end | |
| 692 | 696 | count = count + num |
| 693 | 697 | end |
| 694 | 698 | |
| 695 | - if role:checkRuneFully(runeCount) then return 10 end --开箱子,如果铭文仓库已经满了则不让开箱 | |
| 699 | + if role:checkRuneFully(runeCount) then return 10 end --开箱子,如果铭文仓库已经满了则不让开铭文箱 | |
| 696 | 700 | |
| 697 | 701 | if role:getItemCount(costId) < count then return 8 end |
| 698 | 702 | if not role:checkItemEnough(costs) then return 9 end | ... | ... |
src/models/RolePlugin.lua
| ... | ... | @@ -2934,11 +2934,13 @@ function RolePlugin.bind(Role) |
| 2934 | 2934 | self:mylog("hero_action", {desc = desc, int1 = heroType}) |
| 2935 | 2935 | end |
| 2936 | 2936 | |
| 2937 | - function Role:getRuneBatCount() | |
| 2937 | + function Role:getRuneBagCount() | |
| 2938 | 2938 | local count = 0 |
| 2939 | 2939 | for _, rune in pairs(self.runeBag) do |
| 2940 | 2940 | if next(rune) then |
| 2941 | - count = count + 1 | |
| 2941 | + if rune:getProperty("refer") == 0 then | |
| 2942 | + count = count + 1 | |
| 2943 | + end | |
| 2942 | 2944 | end |
| 2943 | 2945 | end |
| 2944 | 2946 | return count or 0 |
| ... | ... | @@ -2947,13 +2949,28 @@ function RolePlugin.bind(Role) |
| 2947 | 2949 | -- 铭文仓库是否满仓 |
| 2948 | 2950 | function Role:checkRuneFully(count) |
| 2949 | 2951 | count = count or 0 |
| 2952 | + if count == 0 then return false end | |
| 2953 | + | |
| 2950 | 2954 | local page = globalCsv.store_type[ItemType.Rune] |
| 2951 | 2955 | local limit = self:getProperty("bagLimit")[page] |
| 2952 | - return self:getRuneBatCount() + count > limit | |
| 2956 | + return self:getRuneBagCount() + count > limit | |
| 2957 | + end | |
| 2958 | + | |
| 2959 | + local function checkHasRuneByReward(reward) | |
| 2960 | + reward = reward or {} | |
| 2961 | + for itemId, _ in pairs(reward) do | |
| 2962 | + local itemData = csvdb["itemCsv"][itemId] | |
| 2963 | + if itemData and itemData.type == ItemType.Rune then | |
| 2964 | + return true | |
| 2965 | + end | |
| 2966 | + end | |
| 2967 | + return false | |
| 2953 | 2968 | end |
| 2954 | 2969 | |
| 2955 | 2970 | function Role:checkRuneFullyByReward(reward) |
| 2956 | - local count = self:getRuneBatCount() | |
| 2971 | + if not checkHasRuneByReward(reward) then return false end | |
| 2972 | + | |
| 2973 | + local count = self:getRuneBagCount() | |
| 2957 | 2974 | local page = globalCsv.store_type[ItemType.Rune] |
| 2958 | 2975 | local limit = self:getProperty("bagLimit")[page] |
| 2959 | 2976 | if count >= limit then |
| ... | ... | @@ -3001,6 +3018,16 @@ function RolePlugin.bind(Role) |
| 3001 | 3018 | end |
| 3002 | 3019 | end |
| 3003 | 3020 | |
| 3021 | + function Role:getItemRandomOccupy(itemRandomData) | |
| 3022 | + local itemRandomOccupy = {} | |
| 3023 | + if itemRandomData then | |
| 3024 | + for typ, n in pairs(itemRandomData.ware:toNumMap() or {}) do | |
| 3025 | + itemRandomOccupy[typ] = n | |
| 3026 | + end | |
| 3027 | + end | |
| 3028 | + return itemRandomOccupy | |
| 3029 | + end | |
| 3030 | + | |
| 3004 | 3031 | |
| 3005 | 3032 | end |
| 3006 | 3033 | ... | ... |