NE
action

Auto loot system

Por Neymar Jr, 06 de ago. de 2015 em Scripts

14
3.8k
Neymar JrN
06 de agosto de 2015 às 11:54

Olá estou usando um auto loot system 100% que o @zipter98 postou aqui no fórum , mais ele está apenas puxando um item de cada vez pra backpack , teria como colocar pra puxar todos os loots que estão no corpo do pokémon pra a backpack?

 

parte na lib:

 

 

function doPlayerAddItemStacking(cid, itemid, quant) 
    local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid)
    local piles = 0
    if #item > 0 then
        for i,x in pairs(item) do
            if getThing(x).type < 100 then
                local it = getThing(x)
                doTransformItem(it.uid, itemid, it.type+quant)
                if it.type+quant > 100 then
                    doPlayerAddItem(cid, itemid, it.type+quant-100)
                end
            else
                piles = piles+1
            end
            break
        end
    else
        return doPlayerAddItem(cid, itemid, quant)
    end
    if piles == #item then
        doPlayerAddItem(cid, itemid, quant)
    end
end

 

script do action:

 

 

--local toloot = {11441, 11441, 11443, 11444, 11445, 11446, 11447, 11448, 11449,11450, 11451, 11452, 11453, 11454, 12618, 12232, 12244}
function onUse(cid, item, frompos, item2, topos)
    if getItemAttribute(item.uid, "corpseowner") ~= cid then
        doPlayerSendCancel(cid, "Não foi você que matou esse pokemon.")
        return true
    end
        local items = {}
        for x=0, (getContainerSize(item.uid)) do
            local itens = getContainerItem(item.uid, 0)
            if itens and itens.uid > 0 and itens.itemid ~= 0 then
                --if isInArray(toloot, itens.itemid) then
                table.insert(items, {i=itens.itemid, q=itens.type})
                doRemoveItem(itens.uid)
                --break
                --end
            end
        for y=1, #items do
            doPlayerAddItemStacking(cid, items[y].i, items[y].q)
            doPlayerSendTextMessage(cid, 20, "Looted "..items[y].q.."x "..getItemNameById(items[y].i)..".")
        end
        if #items > 0 then
            return true
        else
            return false
        end
    end
end
SkyLighS
06 de agosto de 2015 às 13:36

Veja este tópico : LINK

Neymar JrN
07 de agosto de 2015 às 08:33

Esse system de autoloot que está nesse tópico é antigo e precisa de talkaction, oque eu estou usando é automatico e está funcionando perfeitamente o unico problema é que só puxa de loot em loot ao ínves de puxa todos loots de uma vez


UP


UP

BrunoB
07 de agosto de 2015 às 11:18

@@Neymar Jr, tenta assim:

function onUse(cid, item, frompos, item2, topos)
    if getItemAttribute(item.uid, "corpseowner") ~= cid then
        doPlayerSendCancel(cid, "Não foi você que matou esse pokemon.")
        return true
    end

    local items = {}
    for x = 0, getContainerSize(item.uid) do
        local itens = getContainerItem(item.uid, 0)
        if itens and itens.uid > 0 and itens.itemid ~= 0 then
		items[#items + 1] = {i = itens.itemid, q = itens.type}
		doRemoveItem(itens.uid)
        end
        for y=1, #items do
		doPlayerAddItemStacking(cid, items[y].i, items[y].q)
		doPlayerSendTextMessage(cid, 20, "Looted " .. items[y].q .. "x " .. getItemNameById(items[y].i) .. ".")
        end
        if #items > 0 then
		return true
        else
		return false
        end
    end
end

Editado Agosto 7 por Bruno Minervino

Luga03L
07 de agosto de 2015 às 11:30

Esse system de autoloot que está nesse tópico é antigo e precisa de talkaction, oque eu estou usando é automatico e está funcionando perfeitamente o unico problema é que só puxa de loot em loot ao ínves de puxa todos loots de uma vez

UP

UP

Cara isto deve ser algum problema com seu tfs ou algum script dando conflito ou até mesmo vc colocou errado! porque eu testei várias vezes e puxava tudo de uma vez!

Neymar JrN
07 de agosto de 2015 às 11:40

Cara isto deve ser algum problema com seu tfs ou algum script dando conflito ou até mesmo vc colocou errado! porque eu testei várias vezes e puxava tudo de uma vez!

 

Eu coloquei certinho , só que está puxando de 1 em 1 grupo de item

BrunoB
07 de agosto de 2015 às 11:42

 

Eu coloquei certinho , só que está puxando de 1 em 1 grupo de item

 

Você tentou usar o que eu postei?

 

Neymar JrN
07 de agosto de 2015 às 12:33

 

Você tentou usar o que eu postei?

 

 

aquele é com comando e esse meu é automatico

BrunoB
07 de agosto de 2015 às 13:17

 

aquele é com comando e esse meu é automatico

 

Man, eu refiz o seu e postei aqui no tópico....

Presta atenção ai...

Testa pra ver se foi, apenas a função onUse...a outra não teve necessidade de alteração.

Neymar JrN
07 de agosto de 2015 às 13:30

 

Man, eu refiz o seu e postei aqui no tópico....

Presta atenção ai...

Testa pra ver se foi, apenas a função onUse...a outra não teve necessidade de alteração.

 

Desculpa não tinha visto , mais testei e está dando esse erro e o item some

 

 

[07/08/2015 13:26:25] [Error - Action Interface] 
[07/08/2015 13:26:25] data/actions/scripts/Autoloot.lua:onUse
[07/08/2015 13:26:25] Description: 
[07/08/2015 13:26:25] data/actions/scripts/Autoloot.lua:16: attempt to concatenate field 'q' (a nil value)
[07/08/2015 13:26:25] stack traceback:
[07/08/2015 13:26:25]  data/actions/scripts/Autoloot.lua:16: in function <data/actions/scripts/Autoloot.lua:1>
BrunoB
07 de agosto de 2015 às 13:44

 

 

Desculpa não tinha visto , mais testei e está dando esse erro e o item some

[07/08/2015 13:26:25] [Error - Action Interface] 
[07/08/2015 13:26:25] data/actions/scripts/Autoloot.lua:onUse
[07/08/2015 13:26:25] Description: 
[07/08/2015 13:26:25] data/actions/scripts/Autoloot.lua:16: attempt to concatenate field 'q' (a nil value)
[07/08/2015 13:26:25] stack traceback:
[07/08/2015 13:26:25]  data/actions/scripts/Autoloot.lua:16: in function <data/actions/scripts/Autoloot.lua:1>

 

Editei, da uma olhada...

Neymar JrN
10 de agosto de 2015 às 13:39

 

Editei, da uma olhada...

 

Está a mesma coisa do original, puxando um item de cada vez

 

ex: se tiver 2 items e o player aperta apenas 1 vez no corpo ai só vai vim um item , eu queria que viesse os items todos do loot apenas do primeiro clique

UP

Neymar JrN
16 de agosto de 2015 às 11:23

UP

1 mês depois...
LumusL
21 de setembro de 2015 às 15:54

Tópico Movido
Este tópico foi movido de "OTServSuporte OTServSuporte Scripting"
para "OTServSuporte OTServSuporte ScriptingPedidos e dúvidas resolvidos - Scripting".