Ir para conteúdo

Stackpos


Posts Recomendados

Faaaaala galerinha! A pedido do usuário PsyMcKenzie 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:

 

2zdr76d.gif

 

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

 

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:

 

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

 

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.

Link para o comentário
Compartilhar em outros sites

só uma curiosidade se eu fizer um TP e na posição para onde o player vai eu botar:

 

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

 

E nesse tile tiver por exemplo um gold,

 

O player vai ficar embaixo do gold? o.O

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...