Ir para conteúdo

Featured Replies

Postado

O erro é o seguinte:

 

Error - CreatureScript Interface]

In a timer event called from:

buffer:onKill

Description:

[string: "info: = {..."]:164: bad argumet #1 to 'pairs' <table expected, got boolean>

stack traceback:

[C]: in function 'pairs'

[string "info = {..."]:164: in function <[string "info = {..."]:153>

 

Script(MOD) do autoloot:

 

Spoiler

<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Loot System" version="1.0" author="Vodkart And Mkalo" contact="none.com" enabled="yes">
<config name="Loot_func"><![CDATA[

info = {
    AutomaticDeposit = true,
    BlockMonsters = {},
    BlockItemsList = {2123,2515},
    Max_Slots = {free = 2, premium = 5},
    Storages = {27000,28001,28002},
    items_price = {[2537] = 4000, [2195] = 40000, [2487] = 20000, [2519] = 5000, [2497] = 9000, [2494] = 90000, [2520] = 40000, [2462] = 4000, [2488] = 15000, [2434] = 2000, [2414] = 10000, [2492] = 60000, [7402] = 20000, [7419] = 30000, [2432] = 10000, [2392] = 3000,[2393] = 10000, [2466] = 30000, [2646] = 200000,[2470] = 80000, [2522] = 100000, [2427] = 7500, [2396] = 4000, [2476] = 5000, [2430] = 2000, [2472] = 200000, [2400] = 120000, [2514] = 150000, [2536] = 8000, [8891] = 30000, [2498] = 40000, [5741] = 35000, [2436] = 1000, [8889] = 60000, [2645] = 40000, [2431] = 90000, [2421] = 90000, [2528] = 4000, [2534] = 25000, [2391] = 6000, [2408] = 100000, [7404] = 9000, [2535] = 5000, [7430] = 3000, [7382] = 10000, [7463] = 6000, [7437] = 7000, [7451] = 5000, [2454] = 9000, [2475] = 6000}
}
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.Storages[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.Storages[1]) do
        table.insert(x,getPlayerStorageTable(cid, info.Storages[1]))
    end
    if x ~= 0 then
        table.insert(x,tonumber(item))
        setPlayerStorageTable(cid, info.Storages[1], x)
    else
        setPlayerStorageTable(cid, info.Storages[1], {item})
    end
end
function removeItemTable(cid, item)
    local x = {}
    for i = 1,#getPlayerStorageTable(cid, info.Storages[1]) do
        table.insert(x,getPlayerStorageTable(cid, info.Storages[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.Storages[1], x)
end
function ShowItemsTabble(cid)
    local n,str = 0,"[+] Auto Loot Commands [+]\n\n!autoloot item name --> Para adicionar ou remover itens da lista.\n!autoloot money --> Para coletar dinheiro automaticamente.\n!autoloot clear --> Para limpar a lista.\n!autoloot on/off --> Para habilitar ou desabilitar a coleta de itens no sistema.\n!autoloot autosell --> Para habilitar ou desabilitar a venda automatica de itens.\n\n[+] Auto Loot Info [+]\n\nSystem: "..(getPlayerStorageValue(cid, info.Storages[3]) <= 0 and "Ativado" or "Desativado")..".\nColeta de dinheiro: "..(getPlayerStorageValue(cid, info.Storages[2]) > 0 and "Ativada" or "Desativada")..".\nVenda automatica de itens: "..(getPlayerStorageValue(cid, info.Storages[4]) > 0 and "Ativada" or "Desativada")..".\nBalance Total: ["..getPlayerBalance(cid).."] gp's.\nMaximum Slots: ["..#getPlayerStorageTable(cid, info.Storages[1]).."/"..(isPremium(cid) and info.Max_Slots.premium or info.Max_Slots.free).."]\n\n[+] Auto Loot Slots [+]\n\n"
    for i = 1,#getPlayerStorageTable(cid, info.Storages[1]) do
        n = n + 1
        str = str.."Slot "..n.." - "..getItemNameById(getPlayerStorageTable(cid, info.Storages[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 AutomaticItensSelling(cid, x)
    return doPlayerAddMoney(cid, x) and doPlayerDepositMoney(cid, x)
end
function ExistItemByName(name) -- by vodka
    local items = io.open("data/items/items.xml", "r"):read("*all")
    local get = items:match('name="' .. name ..'"')
    if get == nil or get == "" then
        return false
    end
    return true
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.Storages[1]), tonumber(x.itemid)) or getPlayerStorageValue(cid, info.Storages[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
]]></config>
<event type="login" name="LootLogin" event="script"><![CDATA[
function onLogin(cid)
    registerCreatureEvent(cid, "LootEventKIll")
    if isPremium(cid) and getPlayerStorageValue(cid, 27001) <= 0 then
        setPlayerStorageValue(cid, 27001, 1)
    elseif getPlayerStorageValue(cid, 27001) > 0 and not isPremium(cid) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[Auto Loot] You premium is Over, Start a new list!")
        setPlayerStorageValue(cid, 27001, -1)
        setPlayerStorageValue(cid, info.Storages[1], -1)
    end
    return true
end]]></event>
<event type="kill" name="LootEventKIll" event="script"><![CDATA[
domodlib('Loot_func')
function onKill(cid, target, lastHit) 
    if isPlayer(cid) and getPlayerStorageValue(cid, info.Storages[3]) <= 0 and isMonster(target) and not isInArray(info.BlockMonsters, getCreatureName(target):lower()) then
        addEvent(corpseRetireItems, 0, cid ,getThingPos(target))
    end
    return true
end]]></event>
<talkaction words="!autoloot;/autoloot" event="buffer"><![CDATA[
domodlib('Loot_func')
local param, slots = param:lower(), isPremium(cid) and info.Max_Slots.premium or info.Max_Slots.free
if not param or param == "" then
    ShowItemsTabble(cid) return true
elseif tonumber(param) then
    doPlayerSendCancel(cid, "enter commands: !autoloot item name [+] !autoloot clean [+] !autoloot money [+] !autoloot on/off") return true
elseif isInArray({"clean","limpar", "clear"}, param) then
    setPlayerStorageValue(cid, info.Storages[1], -1)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] Voce limpou a lista.") return true
elseif isInArray({"start","stop","on","off"}, param) then
    setPlayerStorageValue(cid, info.Storages[3], getPlayerStorageValue(cid, info.Storages[3]) <= 0 and 1 or 0)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] "..(getPlayerStorageValue(cid, info.Storages[3]) > 0 and "Desligado" or "Ligado")..".") return true
elseif isInArray({"money","gold","gps","dinheiro"}, param) then
    setPlayerStorageValue(cid, info.Storages[2], getPlayerStorageValue(cid, info.Storages[2]) <= 0 and 1 or 0)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] Coleta de dinheiro "..(getPlayerStorageValue(cid, info.Storages[2]) > 0 and "Ativada" or "Desativada")..".") return true
elseif isInArray({"autoselling","autosell","autovender","vender"}, param) then
    setPlayerStorageValue(cid, info.Storages[4], getPlayerStorageValue(cid, info.Storages[4]) <= 0 and 1 or 0)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] Venda automatica de itens "..(getPlayerStorageValue(cid, info.Storages[4]) > 0 and "Ativada" or "Desativada")..".") return true
end
local item = ExistItemByName(tostring(param))
if not item then
    doPlayerSendCancel(cid, "Este item nao existe.") return true
end
local item = getItemIdByName(tostring(param))
if not item then
    doPlayerSendCancel(cid, "Este item nao existe.") return true
end
local var = isInTable(cid, item)
if isInArray({2148,2152,2160},item) then 
    doPlayerSendCancel(cid, "Digite !autoloot money para adicionar dinheiro em sua lista!") return true    
elseif isInArray(info.BlockItemsList, item) then
    doPlayerSendCancel(cid, "Voce nao pode adicionar este item na lista!") return true
elseif not var and #getPlayerStorageTable(cid, info.Storages[1]) >= slots then
    doPlayerSendCancel(cid, "Maximo "..slots.." itens que podem ser adicionados na lista!") return true
end
if not var then
    addItemTable(cid, item)
else
    removeItemTable(cid, item)
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,not var and "Voce adicionou o item "..param.." na lista" or "Voce removeu o item "..param.." da lista")
return true]]></talkaction>
</mod>

Geralmente acontece quando eu uso o sistema de venda automática de itens e também tem outro bug que os itens começam a cair no chão depois de 3 bps de loot mais ou menos.

Postado

Cara, testei no server de testes aqui e está tudo ok... Não ocorreu nenhum erro na distro, script funcionou perfeitamente.

Segue imagens:

Screenshot_68.thumb.png.3b58d8ff724d9efa1720d319e4f3386d.pngScreenshot_69.png.819859b0e4e59f06a4c55373474e0361.pngScreenshot_70.png.43066bccb01ca7cc7e7d47f871f85ac1.pngScreenshot_71.png.02aa496169f9ad6ab89d9bba628ec47e.png

Feliz daquele que ensina o que sabe, e aprende o que ensina.

 

               

star-wars-animated-gif-23.gif

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