Ir para conteúdo

[Encerrado] [Encerrado] [DXP] Abrir Vários Corpos que estão no mesmo SQM


Posts Recomendados

Boa Tarde peço que se estiver na área errada que movam plz

 

Tenho o sistema de autoloot no servidor (tu clica no corpo e o loot vem para a bag) mas qnd tem + de 1 corpo no mesmo sqm o sistema puxa somente o loot do corpo de cima e a minha duvida é se existe alguma função no servidor ou source que faça com que ao abrir um corpo que tenha 1 ou mais corpos em baixo do mesmo ele abra todos esses corpos.

Link para o comentário
Compartilhar em outros sites

E ai,cara \o

Tu vai ter que, no action do autoloot, adicionar os "comandos" para procurar mais items na mesma posição do item clicado, mas em outras stackpos(0, 255), 0 é o tile.

Uma luz pra você:

local pos = fromposlocal corpse = nilfor s = 1, 255 do	pos.stackpos = s	corpse = getThingfromPos(pos)	if corpse and corpse.uid ~= 0 then		--coletar itens do corpo	endend

 

Link para o comentário
Compartilhar em outros sites

vlw meu popançudo de lua eu achei um topico que falava sobre a mesma coisa e consegui colocar no Huatson (base dxp) e ficou assim:

 

 

 



function onUse(cid, item, frompos, item2, topos) 
    if isWatchingTv(cid) then return true end
    
    local function getContainers(pos) 
        local things = getTileInfo(pos).things
        local ret = {}

        for stack = 0, things do
            pos.stackpos = stack
            local item = getTileThingByPos(pos)
            if item and isContainer(item.uid) then
                local quemMatou = getItemAttribute(item.uid, "corpseowner")
                if quemMatou then
                    local player = getCreatureByName(quemMatou)
                    if isPlayer(player) then
                        local isInParyWithPlayer = false
                        if isInParty(cid) and isInParty(player) then
                            isInParyWithPlayer = isPartyEquals(player, cid)
                        end
                        
                        if getCreatureName(cid) == quemMatou or isInParyWithPlayer then
                            table.insert(ret, item)
                        end
                    end
                end
            end
        end
        return ret
    end

    local corpses = getContainers(getThingPosition(item.uid))
    if #corpses == 0 then
        doPlayerSendCancel(cid, "Você não pode abrir um loot que não é seu.")    
        return true
    end

    local autoLootList = getAllItensInMyList(cid)
    local bag = getPlayerSlotItem(cid, 3).uid
    local itemsToRemove = {}

        for _, corpse in pairs(corpses) do
            for a = -1, getContainerSize(corpse.uid) - 1 do
                local it = getContainerItem(corpse.uid, a)
                if it.uid > 0 then
                    --if addItemInFreeBag(bag, it.itemid, it.type) ~= false then
                    if doPlayerAddItemStacking(cid, it.itemid, it.type) ~= false then
                        table.insert(itemsToRemove, it.uid)
                    end
                end
            end
        end

    if #itemsToRemove > 0 then
        for i = 1, #itemsToRemove do
            doChangeTypeItem(itemsToRemove, 0)
        end
    end
    
end

agora só falta arrumar o seguinte:

1 qnd o loot stack dentro de uma bag x e passa a quantidade de 100 o que sobrou de loot volta pra bag principal, exemplo tenho 90 seed na bag x (essa sendo uma bag qlqr que utilizo somente para loot) e qnd coleto + 20 seeds, 10 desses stackam com os 90 e 10 vão para a bag inicial não ficando dentro de mesma bag que estava os seeds.

 

obs: a bag tinha espaço ^^

Link para o comentário
Compartilhar em outros sites

  • 4 months later...
Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...