• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

New Problem with Depositer Depot Funcition (otclient v4.8)

LucasDrapala

New Member
Joined
Apr 28, 2023
Messages
8
Reaction score
0
Hello Guys! Have a last problem for we.
The first time you go to deposit it works but from the second time it doesn't deposit anymore, I've tried to perform all the tests.
I added the item several times and removed it from the stash is something I don't understand. If anyone has another depositer script that I can put as a funcition in the depot, it would be useful too, no problem.


Code:
CaveBot.Extensions.Depositor = {}

--local variables
local destination = nil
local lootTable = nil
local reopenedContainers = false

local function resetCache()
    reopenedContainers = false
    destination = nil
    lootTable = nil

    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

    if storage.caveBot.backStop then
        storage.caveBot.backStop = false
        CaveBot.setOff()
    elseif storage.caveBot.backTrainers then
        storage.caveBot.backTrainers = false
        CaveBot.gotoLabel('toTrainers')
    elseif storage.caveBot.backOffline then
        storage.caveBot.backOffline = false
        CaveBot.gotoLabel('toOfflineTraining')
    end
end

local description = g_game.getClientVersion() > 960 and "No - just deposit \n Yes - also reopen loot containers" or "currently not supported, will be added in near future"

CaveBot.Extensions.Depositor.setup = function()
    CaveBot.registerAction("depositor", "#002FFF", function(value, retries)
        -- version check, TODO old tibia
        if g_game.getClientVersion() < 960 then
            resetCache()
            warn("CaveBot[Depositor]: unsupported Tibia version, will be added in near future")
            return false
        end

        -- loot list check
        lootTable = lootTable or CaveBot.GetLootItems()
        if #lootTable == 0 then
            print("CaveBot[Depositor]: no items in loot list. Wrong TargetBot Config? Proceeding")
            resetCache()
            return true
        end

        delay(70)

        -- backpacks etc
        if value:lower() == "yes" then
            if not reopenedContainers then
                CaveBot.CloseAllLootContainers()
                delay(3000)
                reopenedContainers = true
                return "retry"
            end
            -- open next backpacks if no more loot
            if not CaveBot.HasLootItems() then
                local lootContainers = CaveBot.GetLootContainers()
                for _, container in ipairs(getContainers()) do
                    local cId = container:getContainerItem():getId()
                    if table.find(lootContainers, cId) then
                        for i, item in ipairs(container:getItems()) do
                            if item:getId() == cId then
                                g_game.open(item, container)
                                delay(100)
                                return "retry"
                            end
                        end
                    end
                end
                -- couldn't find next container, so we done
                print("CaveBot[Depositor]: all items stashed, no backpack to open next, proceeding")
                CaveBot.CloseAllLootContainers()
                delay(3000)
                resetCache()
                return true
            end
        end

        -- first check items
        if retries == 0 then
            if not CaveBot.HasLootItems() then -- resource consuming function
                print("CaveBot[Depositor]: no items to stash, proceeding")
                resetCache()
                return true
            end
        end

        -- next check retries
        if retries > 400 then
            print("CaveBot[Depositor]: Depositor actions limit reached, proceeding")
            resetCache()
            return true
        end

        -- reaching and opening depot
        if not CaveBot.ReachAndOpenDepot() then
            return "retry"
        end

        -- add delay to prevent bugging
        CaveBot.PingDelay(2)

        -- prep time and stashing
        destination = destination or getContainerByName("Depot chest")
        if not destination then return "retry" end

        for _, container in pairs(getContainers()) do
            local name = container:getName():lower()
            if not name:find("depot") and not name:find("your inbox") then
                for _, item in pairs(container:getItems()) do
                    local id = item:getId()
                    if table.find(lootTable, id) then
                        local index = getStashingIndex(id) or item:isStackable() and 1 or 0
                        statusMessage("[Depositer] stashing item: " ..id.. " to depot: "..index+1)
                        CaveBot.StashItem(item, index, destination)
                        return "retry"
                    end
                end
            end
        end

        -- we gucci
        resetCache()
        return true
    end)

    CaveBot.Editor.registerAction("depositor", "depositor", {
     value="no",
     title="Depositor",
     description=description,
     validation="(yes|Yes|YES|no|No|NO)"
    })
end

-----------------------------------------------
 
Back
Top