Ir para conteúdo

Tutorial Sobre Arrays


Tprocheira

Posts Recomendados

Tutorial sobre arrays -- Nível Intermediário



Proibida a cópia não autorizada! Tutorial de minha autoria!

 

Olá a todos. Neste tutorial, ensinarei o básico sobre arrays.

 

Por que utiliza-la?

Maior organização, facilitando a 'manutenção' do seu script, deixando-o 'mais limpo' e carregando menos a CPU.

Exemplo:

É melhor usarmos:

{

{x=1, y=1, z=7},

{x=2, y=2, z=7},

{x=3, y=3, z=7}

}

do que:

local pos1 = {x=1, y=1, z=7}

local pos2 = {x=2, y=2, z=7},

local pos3 = {x=3, y=3, z=7}

Em outras palavras, ele vai, indiretamente, utilizar menos CPU.

Agradecimentos especiais aos usuários Rento e Cayan por darem uma explicação mais profunda sobre arrays

 

-Como utilizar?

As arrays tem uma sintaxe até que fácil de se entender, ficando no meio de duas chaves ({})

Na maioria dos casos, se usa da seguinte maneira:

{

'Orc',

'Orc Spearman',

'Orc Rider'

}

Agora, vamos analisar a sua estrutura.

 

{

Esse símbolo inicia a array.

 

'Orc',

Essa é uma variável dentro da array. Chamamos de variável pois ali poderia ter um Demon, Dragon, e até mesmo posições!

Ao final de uma variável, é colocada uma vírgula (,) indicando que existe outra variável após esta. Lembre-se sempre de colocar áspas ao citar nome de monstros. ('monstro')

 

'Orc Rider'

Nesta variável, da para perceber a falta da vírgula após a mesma. Isso significa que esta é a ultima variável da array.

 

}

Esse símbolo termina a array.

 

Agora, vamos a alguns exemplos (EBAA!!)

 

local position =

{

{x=1, y=1, z=7},

{x=2, y=2, z=7},

{x=3, y=3, z=7}

}

 

function onStepIn(cid, item, item2, position, fromPosition)

if isPlayer(cid) == TRUE and isInArray(position, TRUE) then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You are inside an array!")

end

end

O que este script faz: (Script deixado em negrito para maior visualização das cores)

Se o <a href='#' onClick="hwClick1535116586397(-137805199);return false;" style='cursor: hand; color:#006600; text-decoration:underline; border-bottom:dotted 1px;' onmouseover="hw1535116586397(event, this, '-137805199'); this.style.cursor='hand'; this.style.textDecoration='underline'; this.style.borderBottom='solid';" onmouseout="hideMaybe(event, this); this.style.cursor='hand'; this.style.textDecoration='underline'; this.style.borderBottom='dotted 1px'; " oncontextmenu="return false;">player</a> estiver em alguma destas posições, ele manda a mensagem "You are inside an array!".

Agora, vamos analisar as partes. (vamos dar uma de novatos agora)

 

A parte em laranja é a nossa array.

A parte em vermelho é o início da nossa função. No caso, um moveevent.

A parte em preto é o corpo do script. Ai dentro, você coloca o que quiser :)

Notem que a função function onStepIn(cid, item, item2, position, fromPosition) funciona no The Forgotten Server, ajuste a mesma para a sua distribuição.

 

--Atualização ~ Parte avançada.

Agora, vamos aprender a trabalhar com tabelas (Arrays) de verdade, utilizando comandos, e identificando formas de ser retirar informações de uma array.

--Dando valor à uma variável de acordo com uma posição na tabela.

Você pode utilizar isso de várias maneiras no mundo de Open Tibia.

Vamos começar da forma mais simples.

Quando você for retirar uma informação de sua array, você tem que saber qual a posição daquela variável.

Exemplo:

local names = {"John", "Peter", "Ralph", "Mike"}

O nome John é o primeiro nome da tabela, sendo assim, ele é o ID 1 da tabela.

Da mesma maneira, Peter é o segundo membro da tabela, tendo o ID 2.

Para retirar alguma informação da tabela, usamos a seguinte estrutura:

nomedatabela[id]

Por exemplo, se eu querer atribuir à variável var1, o nome John, eu utilizo o seguinte comando:

local var1 = names[1]

Simples assim.

Da mesma maneira, podemos utilizar um valor randomizado para atribuir um valor à variável, da seguinte maneira:

local chance = math.random(1, 4)
local names = {"John", "Peter", "Ralph", "Mike"}
local var1 = names[chance]

Simples assim.

 

--Carregando uma variável de uma tabela.

A maioria dos scripters usam isso diariamente e não sabem!

Digamos que você tem a seguinte tabela:

ids = {[2160] = "crystal_coin", [2148] = "gold_coin", [100] = "void"}

E você quer utilizar uma dessas variáveis em seu script.

Ao invés de você fazer da seguinte maneira:

local item = ids[1]

Você faz da seguinte maneira:

local item = ids.crystal_coin

Para isso utilizamos a seguinte base:

nomedatabel.nomedavariável

Simples assim. Mas você se pergunta, onde eu uso isso?

Aqui vai:

local player = getPlayerPosition(cid)
local pos = {x = [b]player.x[/b], y = 500, z = 7}

Viram? :D

--Removendo valores de uma tabela.

Para isso, usamos o seguinte comando:

table.remove(nomedatabela.posição)

Exemplo:

local var1 = {"Carl", "Mike", "Peter"}
table.remove(var1, 2)

Isso irá remover o nome Mike da tabela.

--Adicionando valores à tabela.

Utuilizamos o seguinte comando:

table.insert(nomedatabela, posiçãodesejada, valor)

Note que o valor posiçãodesejada é opcional. Mas sem ele, a variável vai ser adicionada no final da tabela

Exemplo:

local var1 = {"Carl", "Mike", "Peter"}
table.insert(var1, "James")

Isso adiciona a variável James na ultima posição, deixando a tabela assim:

local var1 = {"Carl", "Mike", "Peter", "James"}

Se você quisesse adicionar no primeiro lugar, seria assim:

local var1 = {"Carl", "Mike", "Peter"}
table.insert(var1, 1, "James")

Isso deixaria a tabela assim:

local var1 = {"James", "Carl", "Mike", "Peter"}

Também, é possível adicionar um valor à uma tabela da seguinte maneira:

local var1 = {"Carl", "Mike", "Peter"}
var1[2] = "James"

Isso adicionaria a variável James no lugar de Mike.

Se você quiser adicionar a variável no último lugar, faça o seguinte:

local var1 = {"Carl", "Mike", "Peter"}
var1[4] = "James"

Usando a seguinte base:

nomedatabela[posiçãodesejada] = variável

 

Estarei atualizando com mais informações.

 

Tprocheira

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

  • 3 weeks later...
@OFF~ BUMP!

Merece fixo né galera =D

 

merece mesmo ;]

 

muito bom o tuto, eu tava me complicando em algumas coisinhas bestas, mas com isso ajuda bastante x]

 

Trocheira, em [*code][*/code] não é possivel usar [*b][*/b] e nenhum outro tipo de comando...

local player = getPlayerPosition(cid)
local pos = {x = [b]player.x[/b], y = 500, z = 7}

 

;]

té+

Link para o comentário
Compartilhar em outros sites

ids = {2160 = ["crystal_coin"], 2148 = ["gold_coin"], 100 = ["void"]}

tá completamente errado isso... o.O

 

1° - não se pode declarar números sozinhos como variável.

2° - pra que raios você colocou [] ? poderia ter declarado com uma tabela secundaria ali ou então só a variável e o numero mesmo

 

fora isso, tá bom pro começo do conteúdo... :-D

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...