From 261a541fb8d51021044651cb9e29990d0560b1cd Mon Sep 17 00:00:00 2001 From: zqj <582132116@qq.com> Date: Fri, 10 Sep 2021 16:37:33 +0800 Subject: [PATCH] fix: 优化 findMinKeyByItem 函数 --- src/actions/AdvAction.lua | 2 +- src/actions/HangAction.lua | 7 +++---- src/shared/functions.lua | 25 ++++--------------------- 3 files changed, 8 insertions(+), 26 deletions(-) diff --git a/src/actions/AdvAction.lua b/src/actions/AdvAction.lua index 591b876..eaad039 100644 --- a/src/actions/AdvAction.lua +++ b/src/actions/AdvAction.lua @@ -514,7 +514,7 @@ function _M.buyAdvCountRpc(agent , data) else --if math.illegalNum(count, 1, globalCsv.adv_daily_buy_count - role.dailyData:getProperty("advBC")) then return end local advCount = (role.dailyData:getProperty("advBC") + count ) * globalCsv.adv_daily_buy_num - cost = {[ItemId.Jade] = table.findMinKeyByItem(globalCsv.adv_buy_cost, advCount)} + cost = {[ItemId.Jade] = table.findMinKeyByItem(globalCsv.adv_buy_cost, advCount, globalCsv.adv_daily_buy_num)} end diff --git a/src/actions/HangAction.lua b/src/actions/HangAction.lua index b372acd..c77e510 100644 --- a/src/actions/HangAction.lua +++ b/src/actions/HangAction.lua @@ -476,10 +476,9 @@ function _M.quickRpc(agent , data) --local expCarbonData = csvdb["idle_battleCsv"][hangInfo.expCarbonId] local expCarbonData = hangInfo.expData or {} + local change = globalCsv.idle_quickproduce_time / 3600 local curCount = role.dailyData:getProperty("hangQC") + 1 - local curT = curCount * (globalCsv.idle_quickproduce_time / 3600) - local costCount = table.findMinKeyByItem(globalCsv.idle_quickproduce_cost, curT) - + local costCount = table.findMinKeyByItem(globalCsv.idle_quickproduce_cost, curCount * change, change) if not role:checkItemEnough({[ItemId.Jade] = costCount}) then return 2 end role:costItems({[ItemId.Jade] = costCount}, {log = {desc = "quickHang", int1 = hangInfo.carbonId}}) @@ -576,7 +575,7 @@ function _M.buyBonusCountRpc(agent, data) --if math.illegalNum(count, 1, lastCount) then return 1 end local costCount = bonusC[btype]["b"] + count - local cost = table.findMinKeyByItem(globalCsv.bonus_buy_cost, costCount) + local cost = table.findMinKeyByItem(globalCsv.bonus_buy_cost, costCount, 1) if not role:checkItemEnough({[ItemId.Jade] = cost}) then return 2 end diff --git a/src/shared/functions.lua b/src/shared/functions.lua index 8219ccf..ae7ab42 100644 --- a/src/shared/functions.lua +++ b/src/shared/functions.lua @@ -865,27 +865,10 @@ function table.array2Table(arr) return ret end -function table.findMinKeyByItem(t, item) - if not t[item] then - local max = table.maxkey(t) - if item > max then return t[max] end - - local tk = {} - for k, v in pairs(t) do - table.insert(tk, k) - end - if next(tk) then - table.insert(tk, item) - table.sort(tk) - local index = 0 - for i, k in ipairs(tk) do - if k == item then - index = i - 1 - break - end - end - return t[tk[index]] - end +function table.findMinKeyByItem(t, item, change) + if next(t) and not t[item] then + item = item - change + return table.findMinKeyByItem(t, item, change) else return t[item] end -- libgit2 0.21.2