RO
erro

Arrumar script Unique item

Por rorix, 06 de jan. de 2016 em Scripts

5
2.8k
rorixR
07 de janeiro de 2016 às 23:56

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

gabriel28G
08 de janeiro de 2016 às 00:04

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

rorixR
08 de janeiro de 2016 às 00:59

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!

2 semanas depois...
rorixR
18 de janeiro de 2016 às 00:38

u

p

1 ano depois...
L3K0TL
19 de novembro de 2017 às 08:06

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