Ir para conteúdo

[AJUDA] Por favor, Autoloot bugando após um tempo depois de funcionamento.

Featured Replies

Postado

Diga em poucas palavras a base utilizada (Nome do servidor ou nome do website).

 

Base: 

 

 

Qual erro está surgindo/O que você procura?

image.thumb.png.3e5753f9a94b9a8d1163672ebbf289fe.png

 

Autoloot Lib >

Citar

info = {
    AutomaticDeposit = true,
    BlockMonsters = {},
    BlockItemsList = {2123,2515},
    Max_Slots = {free = 2, premium = 5},
    storages = {27000,28001,28002}
}
function getAutoLootTime(cid)
    return db.getResult("SELECT `loot_time` FROM `accounts` WHERE `id` = "..getPlayerAccountId(cid)):getDataInt("loot_time")
end
function setAutoLootTime(cid, time)
    return db.query("UPDATE `accounts` SET `loot_time` = "..time.." WHERE `id` = "..getPlayerAccountId(cid))
end
function getAutoLootDays(cid)
    local days = math.ceil((getAutoLootTime(cid) - os.time())/(86400))
    return days <= 0 and 0 or days
end
function addAutoLootDays(cid, days)
    local add = (days <= 0 and 1 or days)*86400
    local time = getAutoLootDays(cid) == 0 and (os.time() + add) or (getAutoLootTime(cid) + add)
    return setAutoLootTime(cid, time)
end
function setPlayerStorageTable(cid, storage, tab)
    local tabstr = "&"
    for i,x in pairs(tab) do
        tabstr = tabstr .. i .. "," .. x .. ";"
    end
    setPlayerStorageValue(cid, storage, tabstr:sub(1, #tabstr-1))
end
function getPlayerStorageTable(cid, storage)
    local tabstr = getPlayerStorageValue(cid, storage)
    local tab = {}
    if type(tabstr) ~= "string" then
        return {}
    end
    if tabstr:sub(1,1) ~= "&" then
        return {}
    end
    local tabstr = tabstr:sub(2, #tabstr)
    local a = string.explode(tabstr, ";")
    for i,x in pairs(a) do
        local b = string.explode(x, ",")
        tab[tonumber(b[1]) or b[1]] = tonumber(b[2]) or b[2]
    end
    return tab
end
function isInTable(cid, item)
    for _,i in pairs(getPlayerStorageTable(cid, info.storage[1]))do
        if tonumber(i) == tonumber(item) then
            return true
        end
    end
    return false
end
function addItemTable(cid, item)
    local x = {}
    for i = 1,#getPlayerStorageTable(cid, info.storage[1]) do
        table.insert(x,getPlayerStorageTable(cid, info.storage[1]))
    end
    if x ~= 0 then
        table.insert(x,tonumber(item))
        setPlayerStorageTable(cid, info.storage[1], x)
    else
        setPlayerStorageTable(cid, info.storage[1], {item})
    end
end
function removeItemTable(cid, item)
    local x = {}
    for i = 1,#getPlayerStorageTable(cid, info.storage[1]) do
        table.insert(x,getPlayerStorageTable(cid, info.storage[1]))
    end
    for i,v in ipairs(x) do
        if tonumber(v) == tonumber(item) then
            table.remove(x,i)
        end
    end
    return setPlayerStorageTable(cid, info.storage[1], x)
end
function ShowItemsTabble(cid)
    local n,str = 0,"[+] Auto Loot Commands [+]\n\n!autoloot item name --> To add ou Remove item from list.\n!autoloot money --> To collect gold automatically.\n!autoloot clear --> To clear the list.\n\nTime: "..(getAutoLootTime(cid) > 0 and "you have ["..getAutoLootDays(cid).."] days --> ends in "..os.date("%d/%m/%y %X", getAutoLootTime(cid)).."." or "no have Auto Loot time.").."\nGold Collecting: "..(getPlayerStorageValue(cid, info.storage[2]) > 0 and "Activated" or "Disabled")..".\nBalance Total: ["..getPlayerBalance(cid).."] gp's.\nMaximum Slots: ["..#getPlayerStorageTable(cid, info.storage[1]).."/"..(vip.hasVip(cid) and info.Max_Slots.premium or info.Max_Slots.free).."]\n\n[+] Auto Loot Slots [+]\n\n"
    for i = 1,#getPlayerStorageTable(cid, info.storage[1]) do
        n = n + 1
        str = str.."Slot "..n.." - "..getItemNameById(getPlayerStorageTable(cid, info.storage[1])).."\n"
    end
    return doPlayerPopupFYI(cid, str)
end
function getContainerItems(containeruid)
    local items = {}
    local containers = {}
    if type(getContainerSize(containeruid)) ~= "number" then
        return false
    end
    for slot = 0, getContainerSize(containeruid)-1 do
        local item = getContainerItem(containeruid, slot)
        if item.itemid == 0 then
            break
        end
        if isContainer(item.uid) then
            table.insert(containers, item.uid)
        end
        table.insert(items, item)
    end
    if #containers > 0 then
        for i,x in ipairs(getContainerItems(containers[1])) do
            table.insert(items, x)
        end
        table.remove(containers, 1)
    end
    return items
end
function getItemsInContainerById(container, itemid) -- Function By Kydrai
    local items = {}
    if isContainer(container) and getContainerSize(container) > 0 then
        for slot=0, (getContainerSize(container)-1) do
            local item = getContainerItem(container, slot)
            if isContainer(item.uid) then
                local itemsbag = getItemsInContainerById(item.uid, itemid)
                for i=0, #itemsbag do
                    table.insert(items, itemsbag)
                end
            else
                if itemid == item.itemid then
                    table.insert(items, item.uid)
                end
            end
        end
    end
    return items
end
function doPlayerAddItemStacking(cid, itemid, amount) -- revisado
    local item, _G = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid), 0
    if #item > 0 then
        for _ ,x in pairs(item) do
            local ret = getThing(x)
            if ret.type < 100 then
                doTransformItem(ret.uid, itemid, ret.type+amount)
                if ret.type+amount > 100 then
                    doPlayerAddItem(cid, itemid, ret.type+amount-100)
                end
                break
            else
                _G = _G+1
            end
        end
        if _G == #item then
            doPlayerAddItem(cid, itemid, amount)
        end
    else
        return doPlayerAddItem(cid, itemid, amount)
    end
end
function AutomaticDeposit(cid,item,n)
    local deposit = item == tonumber(2160) and (n*10000) or tonumber(item) == 2152 and (n*100) or (n*1)
    return doPlayerDepositMoney(cid, deposit)
end
function corpseRetireItems(cid, pos)
    local check = false
    for i = 0, 255 do
        pos.stackpos = i
        tile = getTileThingByPos(pos)
        if tile.uid > 0 and isCorpse(tile.uid) then
            check = true break
        end
    end
    if check == true then
        local items = getContainerItems(tile.uid)
        for i,x in pairs(items) do
            if isInArray(getPlayerStorageTable(cid, info.storage[1]), tonumber(x.itemid)) or getPlayerStorageValue(cid, info.storage[2]) > 0 and isInArray({2148,2152,2160},tonumber(x.itemid)) then
                if isItemStackable(x.itemid) then
                    doPlayerAddItemStacking(cid, x.itemid, x.type)
                    if info.AutomaticDeposit == true and isInArray({2148,2152,2160}, tonumber(x.itemid)) then
                        AutomaticDeposit(cid,x.itemid,x.type)
                    end
                else
                    doPlayerAddItem(cid, x.itemid)
                end
                doRemoveItem(x.uid)
            end
        end
    end
end

 

 

Autoloot creaturescripts

 

Citar

function onLogin(cid)

    if vip.hasVip(cid) and getPlayerStorageValue(cid, 27001) <= 0 then
        setPlayerStorageValue(cid, 27001, 1)
    elseif getPlayerStorageValue(cid, 27001) > 0 and not vip.hasVip(cid) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[Auto Loot] You VIP is Over, Start a new list!")
        setPlayerStorageValue(cid, 27001, -1)
        setPlayerStorageValue(cid, info.storages[1], -1)
    end
    return true
end
function onKill(cid, target, lastHit)
    if isPlayer(cid) and getAutoLootDays(cid) > 0 and isMonster(target) then
        addEvent(corpseRetireItems, 0, cid ,getThingPos(target))
    end
    return true
end

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.

  • Respostas 6
  • Visualizações 377
  • Created
  • Última resposta

Top Posters In This Topic

Posted Images

Postado
  • Autor
2 minutos atrás, Adm Evolution disse:

Porquê não usa o sistema do Danyel?
Eu uso esse sistema, e funciona perfeitamente.

 

 

Acabei de tentar usar esse, e deu muito erro jqwioejiwoqjeioqw

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo