Ir para conteúdo

Featured Replies

Postado

 

Estou tentando fazer com que o player só possa usar um item em determinada position, só que meu getCreaturePosition(cid) não está me retornando nada (coloquei para enviar uma msg com ele), enfim esse é o código:

function onUse(cid, item, fromPosition, item2, toPosition)

    local potID  = 13762 -- ID do item a ser sacrificado
    local tab = { -- Posição de usar a potion
        pos1 = {x=33, y=307, z=11, stackpos=253}, 
       pos2 = {x=32, y = 307, z = 11, stackpos=253},
        storage = 120020
    }

    
    if item.itemid == potID and isPlayer(cid) then
        doPlayerSendTextMessage(cid, 27, getCreaturePosition(cid))
        if (getGlobalStorageValue(tab.storage) ~= 0) then
            if getCreaturePosition(cid) == tab.pos1 or getCreaturePosition(cid) == tab.pos2 then
                doSendMagicEffect(getCreaturePosition(cid), CONST_ME_EXPLOSIONHIT)
                --setGlobalStorageValue(storage)
                doPlayerRemoveItem(cid, potID, 1)
            else
                doPlayerSendTextMessage(cid, 27, "Nao ha nada aqui")
            end
        else
            doPlayerSendTextMessage(cid, 27, "O item ja foi colocado antes.")
        end
    end
    return true
end

 

Na parte que eu coloquei a msg com a position antes do if de checagem, aparece isso:

image.png.e1fa3f141cb9bba7ef55ec503161a1aa.png

 

Postado
6 horas atrás, Lucce disse:

 

Estou tentando fazer com que o player só possa usar um item em determinada position, só que meu getCreaturePosition(cid) não está me retornando nada (coloquei para enviar uma msg com ele), enfim esse é o código:



function onUse(cid, item, fromPosition, item2, toPosition)

    local potID  = 13762 -- ID do item a ser sacrificado
    local tab = { -- Posição de usar a potion
        pos1 = {x=33, y=307, z=11, stackpos=253}, 
       pos2 = {x=32, y = 307, z = 11, stackpos=253},
        storage = 120020
    }

    
    if item.itemid == potID and isPlayer(cid) then
        doPlayerSendTextMessage(cid, 27, getCreaturePosition(cid))
        if (getGlobalStorageValue(tab.storage) ~= 0) then
            if getCreaturePosition(cid) == tab.pos1 or getCreaturePosition(cid) == tab.pos2 then
                doSendMagicEffect(getCreaturePosition(cid), CONST_ME_EXPLOSIONHIT)
                --setGlobalStorageValue(storage)
                doPlayerRemoveItem(cid, potID, 1)
            else
                doPlayerSendTextMessage(cid, 27, "Nao ha nada aqui")
            end
        else
            doPlayerSendTextMessage(cid, 27, "O item ja foi colocado antes.")
        end
    end
    return true
end

 

Na parte que eu coloquei a msg com a position antes do if de checagem, aparece isso:

image.png.e1fa3f141cb9bba7ef55ec503161a1aa.png

 

eu passei por um problema parecido quando fui me aventurar nesse código aqui 

o que acontece é que a função "getCreaturePosition(cid)" retorna uma tabela, se você passar ela para string e logo após enviar na tela do computador, vai poder ver isso perfeitamente, (doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, tostring(getCreaturePosition(cid))).
e como você compara a posição de uma tabela que muda a todo momento, com outra tabela (algo como uma comparação do tipo if [table123123=table12121212] sempre vai retornar false e nunca entrará naquele bloco de código

 

a solução é bem simples, como ela retorna uma tabela, basta acessar o valor dela "getCreaturePosition(cid).x"

e agora sim, vai retornar a posição no eixo x do jogador, agora basta comparar

código final:

Spoiler


function onUse(cid, item, fromPosition, item2, toPosition)

    local potID  = 13762 -- ID do item a ser sacrificado
    local tab = { -- Posição de usar a potion
        pos1 = {x=33, y=307, z=11, stackpos=253}, 
       pos2 = {x=32, y = 307, z = 11, stackpos=253},
        storage = 120020
    }
    local ppos = getCreaturePosition(cid)
    
    if item.itemid == potID and isPlayer(cid) then
        doPlayerSendTextMessage(cid, 27, tostring(getCreaturePosition(cid)))
        if (getGlobalStorageValue(tab.storage) ~= 0) then
            if(ppos.x == tab.pos1.x and ppos.y == tab.pos1.y and ppos.z == tab.pos1.z or ppos.x == tab.pos2.x and ppos.y == tab.pos2.y and ppos.z == tab.pos2.z)
                doSendMagicEffect(getCreaturePosition(cid), CONST_ME_EXPLOSIONHIT)
                --setGlobalStorageValue(storage)
                doPlayerRemoveItem(cid, potID, 1)
            else
                doPlayerSendTextMessage(cid, 27, "Nao ha nada aqui")
            end
        else
            doPlayerSendTextMessage(cid, 27, "O item ja foi colocado antes.")
        end
    end
    return true
end

 

 

 

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo