Ir para conteúdo
  • Cadastre-se

(Resolvido)Item que não faz trade e não possa jogar.


Ir para solução Resolvido por zipter98,

Posts Recomendados

Quero que o player não possa jogar o item para fora da bagpack e não fazer trade com ele.

So possa guardar no deport e vender.

ID do item: 19473

"O sucesso é uma consequência e não um objetivo. A persistência é o caminho do êxito".
Link para o post
Compartilhar em outros sites
  • Solução

Primeiramente, você deverá ter este callback instalado no seu servidor.

data/creaturescripts/scripts:

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
Tags:
    <event type="traderequest" name="tradeItem" event="script" value="nome_do_arquivo.lua"/>
    <event type="moveitem" name="moveItem" event="script" value="nome_do_arquivo.lua"/>
    <event type="tradeaccept" name="accItem" event="script" value="nome_do_arquivo.lua"/>
    <event type="login" name="itemLogin" event="script" value="nome_do_arquivo.lua"/>

Caso você não possua as sources do seu servidor, avise.

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

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Não testei, mas eu sei que vai da certo... então melhor resposta. REP

"O sucesso é uma consequência e não um objetivo. A persistência é o caminho do êxito".
Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo