Ir para conteúdo
  • 0

Arrumar script Unique item


rorix

Pergunta

Peguei esse script em um outro forum. O script não deveria deixar o item passar por trade... O jogador apenas poderia mover o item da sua backpack e inventorio para o depot e etc.

Mas o script ta bugado, ele não deixa o player mover o item pra sua propria backpack e nao deixa mover o item para seu proprio inventorio... se vc poe o item dentro do depot, você nao consegue mais pega-lo de volta, como arrumar isso?

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[i])
                end
            else
                if itemid == item.itemid then
                    table.insert(items, item.uid)
                end
            end
        end
    end
    return items
end
local itemId = 19473        --ID do item.
local depot = xxx           --ID do depot.
function onMoveItem(cid, item, count, toContainer, fromContainer, fromPos, toPos)
    if getTileItemById(toPos, depot).uid < 1 then
        if toPos.x ~= 65535 or toPos.y ~= 64 then
            return doPlayerSendCancel(cid, "You can't move this item.") and false
        end
    end
    return true
end
function onTradeRequest(cid, target, item)
    if item.itemid == itemId then
        return doPlayerSendCancel(cid, "You can't trade this item.") and false
    elseif isContainer(item.uid) then
        if #getItemsInContainerById(item.uid, itemId) > 0 then
            return doPlayerSendCancel(cid, "You can't trade this item.") and false
        end
    end
    return true
end
function onTradeAccept(cid, target, item, targetItem)
    if item.itemid == itemId then
        return doPlayerSendCancel(cid, "You can't trade this item.") and false
    elseif isContainer(item.uid) then
        if #getItemsInContainerById(item.uid, itemId) > 0 then
            return doPlayerSendCancel(cid, "You can't trade this item.") and false
        end
    end
    return true
end
function onLogin(cid)
    local events = {"moveItem", "tradeItem", "accItem"}
    for i = 1, #events do
        registerCreatureEvent(cid, events[i])
    end
    return true
end

up

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Você colocou o id do depot nessa parte: local depot = xxx --ID do depot. ???

 

SIm... ele arrasta o item para o depot normal, só que ele nao consegue retirar o item do depot!

Link para o comentário
Compartilhar em outros sites

  • 0

apaga isso e tente 

 

function onMoveItem(cid, item, count, toContainer, fromContainer, fromPos, toPos)
    if getTileItemById(toPos, depot).uid < 1 then
        if toPos.x ~= 65535 or toPos.y ~= 64 then
            return doPlayerSendCancel(cid, "You can't move this item.") and false
        end
    end
    return true
end
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...