Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Faaaaala galerinha! A pedido de alguns usúarios estou aqui para postar este tutorial.

Espero que seja útil para todos que tem alguma dúvida quanto ao Stackpos.

Eu sinceramente não domino completamente a magia dos stackpos, mas espero poder tirar algumas dúvidas de quem sabe e ensinar quem ainda não sabe. Vamos logo ao tutorial:

Stackpos

• Introdução

Stackpos é um dos index da tabela que guarda posições. Toda posição é uma tabela, exemplo: {x=160, y=50, z=7}, mas o que pouca gente sabe, é que o stackpos também faz parte desta tabela. Todos sabem que em uma unica posição podem haver vários itens, formando uma pilha de itens, portanto, para diferenciar a posição de um item da pilha para o outro foi criado o stackpos, que é o número que diz em qual lugar da pilha está o item.

• Descobrindo o Stackpos

O stackpos segue um padrão, ou seja, uma ordem. Vou mostrar primeiramente os stackpos especiais:



0 - O stackpos 0 de uma posição é sempre o tile, ou seja, o chão.


253 - Este número refere-se ao stackpos das criaturas que estão na posição, sejam monstros, players ou npcs.


255 - O item mais alto de um pilha tem o stackpos 255, além do stackpos normal dela.

Agora vou mostrar como descobrir o stackpos de um item apenas olhando para a pilha. Considere a seguinte pilha:


Tile sempre terá o stackpos 0.

Agora os outros recebem o stackpos contrário da ordem deles acima do chão.


Coin receberá o stackpos 1 e 255.

Chair receberá o stackpos 2.

Table receberá o stackpos 3.

Simples não? É sempre ao contrário da ordem deles acima do chão. Vamos a mais um exemplo para ficar bem claro, considere a seguinte pilha:

Para pegar o stackpos pelo uid do item, usamos a função getThingPos(uid), a qual já retorna uma tabela com o stackpos do item.

É isso galera, qualquer dúvida só perguntar. Até mais. meliga.gif

Creditos :

Shoeei

2zdr76d.gif
Primeiro vamos contar quantos itens tem a pilha. Neste caso, em um total de 4 itens (tile, table, chair, coin).
295pjcy.gif

Tile receberá o stackpos 0.

Ring receberá o stackpos 1 e 255.

Hammer receberá o stackpos 2.

Coin receberá o stackpos 3.

Chair receberá o stackpos 4.

Table receberá o stackpos 5.

• Montando uma Tabela com Stackpos Eu havia tido anteriormente que toda posição é uma tabela. Para montarmos uma posição com o index stackpos, simplesmente adicionamos ele no final, exemplo:

{x=160, y=50, z=7, stackpos=253}

Simples, não é mesmo? • Funções Auxiliares Sempre que preciso descobrir o stackpos através de um script, uso as seguintes funções: Pegar o stackpos pela posição e id do item.


function getItemStackpos(position, id)

if getTileItemById(position, id).itemid == 0 then return nil end

  for i = 0, 255 do

   local pos = getThingFromPos({x=position.x, y=position.y, z=position.z, stackpos=i})

   if pos.itemid == id then

    return i

   end

  end

end

end

Contato;

6yonKDJ.png god.marinii

TaxNfhb.png

  • 10 years later...
Postado

Obrigado Ryzor estava com um problema em spells onde em determinado lugar o dano da spell não ocorria no player, sua explicação detalhada e cirúrgica me tirou uma dor de cabeça e consegui corrigir os problemas do meu projeto, parabéns 😄

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.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo