Ir para conteúdo

Tabelas


joaohd

Posts Recomendados

Olha eu de novo por aqui. Dessa vez, o tutorial é sobre tabelas.

 

Muitas pessoas, por não conhecerem o poder das tabelas, acabam criando scripts enormes e de difícil configuração.

 

Após a leitura deste tutorial, você estará apto a criar scripts com tabelas simples ou intermediárias, possibilitando o encurtamento de scripts e até mesmo uma melhor compreensão de scripts feitos com o uso das mesmas.

 

Para ter uma noção da imensidade e importância das tabelas em LUA, este é o único modo de armazenamento de dados, sejam eles numéricos ou textos (strings).

 

Observe como a tabela é representada em LUA:

 

Nome_da_tabela = {}

 

Quando verificar a existência das chaves “{}” em um script, estamos tratando de uma tabela.

 

Vamos criar agora uma tabelinha simples, somente para explicação:

 

Tabela = {“Xtibia”, “apocarai”, 1, 2, 3}

 

Como pode ver, criei uma tabela de conteúdo misto, contendo strings e números. Cada valor separado por vírgulas pode ser chamado de célula, contendo um endereço único que veremos mais à frente.

 

Caso eu queira o valor da primeira célula, devo conhecer seu endereço, que nada mais é que o nome da tabela seguido de seu índice:

 

Xtibia = Tabela[1]

apocarai = Tabela[2]

1 = Tabela[3]

 

Os índices existem mesmo que ocultos. Sempre que você cria uma tabela e não os especifica, subentende-se que cada célula receberá um índice de numero crescente partindo do 1.

 

Caso sejam especificados, estes podem ser escritos assim (existe outra maneira, mais avançada):

 

Tabela = {

Forum = “Xtibia”,

User = “apocarai”

}

 

Logo, para acessarmos qualquer valor da tabela, digitamos o endereço da célula, sendo que agora, o endereço é composto pelo nome da tabela, precedido de um ponto (.) e o índice.

 

Logo,

 

Xtibia = Tabela.Forum

Apocarai = Tabela.User

 

Após entender o básico, podemos passar para as tabelas múltiplas, que apesar de parecerem difíceis, seguem a mesma base das simples.

 

Exemplo de tabela múltipla:

 

TabelaMultipla = {

Xtibia = {assuntos = {“Otserver”, “Tibia”}, users = {“apocarai”, “Gustavo”, “Brumatt”}},

Google = {assuntos = {“Pesquisas”, “Jogos”}, users = {“Eu”, “Você”}}

}

 

Não, não desista ao se deparar com tabelas assim. A interpretação pode ser feita por meio de um organograma:

 

semttulomo.jpg

 

 

Já a parte dos índices são iguais. Por exemplo, quero pegar o valor 1 dos assuntos do xtibia:

 

TabelaMultipla.Xtibia.assuntos[1]

 

Fácil, não?

 

Agora, iremos aprender a obter o “tamanho” de uma tabela. Podemos fazê-lo de duas formas. Criarei uma tabela simples para a explicação:

 

Tabela = {1,2,3,4,5,6,7,8,9,10}

 

Maneira 1:

 

Usamos a função table.getn(tabela) ou a função table.maxn(tabela). O uso é da seguinte maneira:

 

table.getn(NOME DA TABELA)

table.maxn(NOME DA TABELA)

 

Maneira 2 (fácil) :

 

Inserimos o caracter “#” seguido do nome da tabela. Assim:

 

#NOME DA TABELA

 

 

Informações adicionais:

 

► O nome de uma tabela deve ser escrito sem espaços.

► O nome de uma tabela não deve conter caracteres coringas (!@%¨*)

► Tabelas não interpretam um valor vazio (nil)

 

Creio que seja isto por hoje. Vou deixar alguns exercícios simples, para fixação:

 

1)Crie uma tabela simples com 6 valores, onde cada valor é uma string com o nome de um usuário do xtibia.

2)Crie uma tabela múltipla com 3 valores principais, cada um com o nome de uma área do xtibia, e dentro das áreas, o nome de 2 frequentadores da área correspondente.

 

Respostas (tentem fazer primeiro, postando seus resultados):

 

1) Xtibia = {"apocarai", "matheusMkalo", "gustavo", "brumatt", "lordz", "carlos pain"}

 

2)Xtibia = {

Scripting = {"apocarai", "matheusmkalo"},

Design = {"moskitinho, "dj sky"},

Mapping = {"alissow", "brumatt"}

}

 

 

 

Materiais de apoio:

Funções LUA

Introdução à programação LUA + estruturas

Começando a "scriptear"

 

Tutorial sugerido por Vodkart.



Você também pode pedir o seu aqui

 

 

flw

Editado por apocarai
Link para o comentário
Compartilhar em outros sites

Muito bom seus tutoriais.

Rep+

 

Seria bom adicionar alguns erros que podem ocorrer no uso também.

 

a = {"oi"}
b = {"oi"}
print(a == b) -- false

Embora os conteúdos das tabelas sejam iguais elas são diferentes.

 

a = {"oi"}
b = a
b[1] = "tchau"
print(a == b) -- true

Nesse caso o "b" é uma referência para o "a", ou seja, quando fazemos b[1] = "tchau" é a mesma coisa que a[1] = "tchau", logo elas são a mesma tabela.

Isso pode fazer com que a pessoa mude o valor de "a" sem saber.

Editado por kydrai
Link para o comentário
Compartilhar em outros sites

Valeu ae gente, to tentando trazer um pouco mais de conhecimento pra galera =D.

 

 

@Kydrai

 

Não entrei muito em detalhes técnicos até porque, o tutorial é voltado pro pessoal que n sabe nada de LUA.

 

 

 

flw

Link para o comentário
Compartilhar em outros sites

ótimo cara,estou meio sem tempo agora,até mesmo porque meu computador queimou,mais já consegui entender um pouco,e vou fazer as atividades quando meu pc chegar,o cara nem trouxe ainda...

mais as atividades são excelentes ajudam a estimular os conhecimentos!

parabens pelo seu trabalho

continue sempre assim

abraços

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
  • 1 year later...

mano brigadão eu tava fazendo o meu pet system por talkactions e tava precisando disso para por o level dos

summon nossa mano vc ajudo d++ mesmo ++REP

 

Fiquei só com uma duvida.

 

minha tabela

 

 

local pets = {

["Rat"] = {Level = 20},

["Dragon"] = {Level = 25}

}

 

como faço para o script identificar o level do summon

 

 

if getPlayerLevel(cid) < pets[tostring(a)].Level then

 

assim ? pfv aguardando respostas

Editado por eduardobean
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...