CaveBot.Extensions.DWithdraw = {} CaveBot.Extensions.DWithdraw.setup = function() CaveBot.registerAction("dpwithdraw", "#002FFF", function(value, retries) local capLimit local data = string.split(value, ",") if retries > 600 then print("CaveBot[DepotWithdraw]: actions limit reached, proceeding") return false end local destContainer local depotContainer delay(70) -- input validation if not value or #data ~= 3 and #data ~= 4 then warn("CaveBot[DepotWithdraw]: incorrect value!") return false end local indexDp = tonumber(data[1]:trim()) local destName = data[2]:trim():lower() local destId = tonumber(data[3]:trim()) if #data == 4 then capLimit = tonumber(data[4]:trim()) end -- cap check if freecap() < (capLimit or 200) then for i, container in ipairs(getContainers()) do if container:getName():lower():find("depot") or container:getName():lower():find("locker") then g_game.close(container) end end print("CaveBot[DepotWithdraw]: cap limit reached, proceeding") return false end -- containers for i, container in ipairs(getContainers()) do local cName = container:getName():lower() if destName == cName then destContainer = container elseif cName:find("depot box") then depotContainer = container end end if not destContainer then print("CaveBot[DepotWithdraw]: container not found!") return false end if containerIsFull(destContainer) then for i, item in pairs(destContainer:getItems()) do if item:getId() == destId then g_game.open(item, destContainer) return "retry" end end end -- stash validation if depotContainer and #depotContainer:getItems() == 0 then print("CaveBot[DepotWithdraw]: all items withdrawn") g_game.close(depotContainer) return true end if containerIsFull(destContainer) then for i, item in pairs(destContainer:getItems()) do if item:getId() == destId then g_game.open(foundNextContainer, destContainer) return "retry" end end print("CaveBot[DepotWithdraw]: loot containers full!") return false end if not CaveBot.OpenDepotBox(indexDp) then return "retry" end CaveBot.PingDelay(2) for i, container in pairs(g_game.getContainers()) do if string.find(container:getName():lower(), "depot box") then for j, item in ipairs(container:getItems()) do statusMessage("[D_Withdraw] witdhrawing item: "..item:getId()) g_game.move(item, destContainer:getSlotPosition(destContainer:getItemsCount()), item:getCount()) return "retry" end end end return "retry" end) CaveBot.Editor.registerAction("dpwithdraw", "dpwithdraw", { value="1, shopping bag, 21411", title="Loot Withdraw", description="insert index, destination container name and it's ID", }) end