Ir para conteúdo

Featured Replies

Postado

Tenta trocar o creaturescripts por este :



function onLogin(cid)
    registerCreatureEvent(cid, "aloot_kill")
    return true
end

local stor = 7575

function autoloot(cid, target, pos)
    local function doStack(cid, itemid, new)
        local count = getPlayerItemCount(cid, itemid)
        if (count > 100) then
            count = count - math.floor(count / 100) * 100
        end
        local newCount = count + new
        if (count ~= 0) then
            local find = getPlayerItemById(cid, true, itemid, count).uid
            if (find > 0) then
                doRemoveItem(find)
            else
                newCount = new
            end
        end
        local item = doCreateItemEx(itemid, newCount)
        doPlayerAddItemEx(cid, item, true)
    end

    local function scanContainer(cid, uid, list)
        for k = (getContainerSize(uid) - 1), 0, -1 do
            local tmp = getContainerItem(uid, k)
            if (isInArray(list, tmp.itemid)) then
                if isItemStackable(tmp.itemid) and (getPlayerItemCount(cid, tmp.itemid) > 0) then
                    doStack(cid, tmp.itemid, tmp.type)
                else
                    local item = doCreateItemEx(tmp.itemid, tmp.type)
                    doPlayerAddItemEx(cid, item, true)
                end
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Looted ' .. tmp.type .. ' ' .. getItemNameById(tmp.itemid) .. '.')
                doRemoveItem(tmp.uid)
            elseif isContainer(tmp.uid) then
                scanContainer(cid, tmp.uid, list)
            end
        end
    end

    local items = {}
    for i = getTileInfo(pos).items, 1, -1 do
        pos.stackpos = i
        table.insert(items, getThingFromPos(pos))
    end

    if (#items == 0) then
        return
    end

    local corpse = -1
    for _, item in ipairs(items) do
        local name = getItemNameById(item.uid):lower()
        if name:find(target:lower()) then
            corpse = item.uid
            break
        end
    end

    if (corpse ~= -1) and isContainer(corpse) then
        scanContainer(cid, corpse, tostring(getPlayerStorageValue(cid, stor)):gsub('_', ''):explode(','))
    end
end

function onKill(cid, target, lastHit)
    if not isPlayer(target) then
        local infos = getPlayerStorageValue(cid, stor)
        if (infos == -1) then
            return true
        end
        local list = tostring(infos):explode(',')
        if (#list == 0) then
            return true
        end
        addEvent(autoloot, 150, cid, getCreatureName(target), getCreaturePosition(target))
    end
    return true
end

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

Top Posters In This Topic

Posted Images

Postado
  • Autor

@edit

 

Agora ele nao loteia e aparece erro no console.

 

[03/07/2014 15:52:40] [Error - CreatureScript Interface] 
[03/07/2014 15:52:40] In a timer event called from: 
[03/07/2014 15:52:40] data/creaturescripts/scripts/aloot.lua:onKill
[03/07/2014 15:52:40] Description: 
[03/07/2014 15:52:40] data/lib/050-function.lua:227: attempt to index a boolean value
[03/07/2014 15:52:40] stack traceback:
[03/07/2014 15:52:40] data/lib/050-function.lua:227: in function 'getItemNameById'
[03/07/2014 15:52:40] data/creaturescripts/scripts/aloot.lua:57: in function <data/creaturescripts/scripts/aloot.lua:8>

Editado por Duduph (veja o histórico de edições)

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.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo