CA

Tabelas

Por caotic, 31 de ago. de 2012 em Tutoriais de Scripting

tibia
script
otserv
7
2.3k
caoticC
31 de agosto de 2012 às 18:20

Tabelas são estruturas de facil edição e são ultilizadas para diminuição e simplificação de um script lua.

Muitos pessoas tem duvidas sobre elas vamos resolver todas elas:

<------------------------------------------------------------------------------------------------------------------------------------------------------------->

Vamos ver uma tabela vazia.

 

tab = { }

 

Para adicionar um valor na tab usamos

 

table.insert

 

Para ver a quantidade de valores na tabela usamos #tab

print(#tab) que retornaria 0 ja que não existe nenhum valor na tabela

Outros exemplo e usar a estrutura for para a repetição dos valores na tabelas.

 

 



<------------------------------------------------------------------------------------------------------------------------------------------------------------->

Considere outra tabela



 
tab = { "rad", "leg" }

 

Esta tabela apresenta as seguintes string(rad e leg)

Sendo

 

Rad[1] e leg[2]

 

 

Para acessar o valor delas podemos defenir sua posição por numeros crescentes.

 

Logo podemos fazer assim:


print(tab[1])
Que retornaria rad
ou
print(tab[2)
Que retornaria leg



 

 

<------------------------------------------------------------------------------------------------------------------------------------------------------------->

 

Vamos agora em uma estrutura mais complexa.

 

 


local transf = {
["Morte"] = {level = 1, type = "(Dark)", health = 2222, addlevel = 10, looktype = 300, spell = exori, addmana = 2000},
["Demon"] = {level = 1, type = "(Demonio)", health = 22622, addlevel = 20, looktype = 35, spell = exori, addmana = 1800},
["Dragon"] = {level = 1, type = "(Dragon)", health = 22622, addlevel = 20, looktype = 34, spell = exori, addmana = 1222}

}



 

Esta tabela veem do Sistema de Transformação logo e usada num script de Opentibia.

 

Para colocar uma string em um valor da tabela simplesmente colocamos "..." ou '...' normalmente.

 

Se quisermos adicionar um numero não ultilizamos ".." nem '..' ja que não e uma string.

 

Para acessar uma coluna corresponde da tabela ultilizamos a seguinte maneira:

 

local transflevel = transf[Valor].level



 

Logo se o valor for "Demon" o script acessaria a coluna tal:

 

["Demon"] = {level = 1, type = "(Demonio)", health = 22622, addlevel = 20, looktype = 35, spell = exori, addmana = 1800},



 

Exemplo de um valor:

 

local transflevel = transf[param].level

 

Como pode observar escolhi param de talkactions.

Logo se o player falar Demon a coluna seria do "Demon"

 

<------------------------------------------------------------------------------------------------------------------------------------------------------------->

Funçoes Tables

 

table.sort (table) --Ordena uma table

table.insert (table, value) – Acrescentar um valor da tabela

table.remove (table, value) – Remove o valor da tablea

Editado Agosto 31 por caotic

SkyDangerousS
31 de agosto de 2012 às 18:21

O.0'?

Isso é seu tutorial?

 

Coloca mais sobre ela..

notle2012N
31 de agosto de 2012 às 18:34

o.O

cade

Exemplo na prática

 

 

local tabela = {

["Morte"] = {level = 1, type = "(Dark)", health = 2222, addlevel = 10, looktype = 300, spell = exori, addmana = 2000},

["Demon"] = {level = 1, type = "(Demonio)", health = 22622, addlevel = 20, looktype = 35, spell = exori, addmana = 1800},

["Dragon"] = {level = 1, type = "(Dragon)", health = 22622, addlevel = 20, looktype = 34, spell = exori, addmana = 1222}

}

 

-- peguei um pedaço aqui incompleto

Editado Agosto 31 por notle2012

caoticC
31 de agosto de 2012 às 18:43

Sem querer quando tava fazendo o tutorial cliquei em ENTER.

hehe mais ja pus o resto do tuto

SkymagnumS
02 de setembro de 2012 às 00:51

Tipo bem legal até mais esqueceu do table.find e poderia colocar uns tutoriais.

 

table.find (procura algo na tabela) table.find(tabela, oque procurar)

 

function onAttack(cid, target)
local blockedTargets = {"Rat", "Demon", "Cave Rat"}
if isMonster(target) and table.find(blockedTargets, string.lower(getCreatureName(target))) then
doPlayerSendTextMessage(cid, 28, "You can't attack this creature.")
return false
end
return true
end

 

caoticC
02 de setembro de 2012 às 10:21

Existe outros sim.

 

Mais eu coloquei mais para a manipulação da tabela como adicionar e remover valores.

CriticalC
02 de setembro de 2012 às 21:15

Seu tutorial foi aprovado, está sendo movido para seção correta.

 

Atenciosamente, Critical.