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?
--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