Tutorial Sobre Arrays

Tprocheira
em Tutoriais de Scripting
  • 1
  • 2

Tprocheira

WOOOOW
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 23/12/07Posts: 566Char no Tibia: Tprocheira soldier

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

DropBlood

Your nightmare hide here
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 14/11/08Posts: 9

rOx

 

Apezar de não saber nada d lua entendi...



Darth Sidious

Em chamas...
avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 31/07/07Posts: 533Char no Tibia: Kninght'Danilo

Putz, impecavel muito bem explicado parabéns, assim não demora muito para aprender :p


Xtibia 2006 ~ 2009!
Eu não to mais aguentando e a vida tá passando...





Quots :
QUOTE
17:24 Ulryx Shadowseeker [13]: eu acessava site pedofilo ~ Leo94
17:26 Next Shadowseeker [7]: SELL THAIS SWORD ~ Christian
'      Léo 1OO     diz:
ngm come minha xaninha
'      Léo 1OO     diz:
se nao tive
'      Léo 1OO     diz:
eu do meu cu

Jvchequer

"Veni, vidi, vici."
avatar
Lenda
Lenda

INFOS

Grupo: LendaRegistrado: 10/10/05Posts: 2161Char no Tibia: Master Chequer

Just Perfect~

 

 

Aprovado :thumbsupsmiley:

1271330714-U1306.gif

 

~ Fiz parte da Equipe Xtibia em um tempo que Tibia era minha família. Saudades de todos vocês.

Lordfire

TFS Maintainer
avatar
Lenda
Lenda

INFOS

Grupo: LendaRegistrado: 04/10/06Posts: 2605Gênero: MasculinoChar no Tibia: Knight Orion

Boaa

Eu nunca entendi direito arrays, vou consultar pra ver se faço algo de bom!

tibiaa4e

Ex amante de Tibia
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 18/12/05Posts: 912Gênero: MasculinoChar no Tibia: Kohzete

Boa iniciativa

 

Eu so ia explicar isso no ultimo tuto

 

Esse tipo de função é bom pra diminuir mesmo

 

Porém s eu fazer com isso eu me confudo todo :p

Aposentado de OTserver e Tibia

Meus melhores tutoriais
Enciclopédia Pasta Data
Tutorial de quest

Master Gm Gui

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 28/05/06Posts: 88Char no Tibia: ­

Muito bom mesmo o tutorial Tprocheira.

Organizadinho, fácil de entender.

Parabéns!

 

:smile_positivo:

tibiaa4e

Ex amante de Tibia
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 18/12/05Posts: 912Gênero: MasculinoChar no Tibia: Kohzete

@Tprocheira

 

Ajuda sim

Variavel local eu uso sempre...

 

Mais me acostumei com muitos elseif e talz ahuahua

 

Mais em outras linguagens eu uso sempre

Aposentado de OTserver e Tibia

Meus melhores tutoriais
Enciclopédia Pasta Data
Tutorial de quest

alissonlinneker

ñ frite bacon sem kmiza xP
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 15/12/07Posts: 239

Muito bom mesmo,

uso bastante array no meu ot...ate mesmo no caso onde os P.A podem acessar e os free não..

 

isso irá facilitar muito para novos scripters



Devo esquecer aqueles que me impuseram obstáculos infundados e agradecer àqueles que me impulsionaram adiante. É hora, mais do que nunca, de valorizar as amizades e os conhecimentos adquiridos aqui. Agradeço a todos que me apoiaram. Vlw xTibia!
Amais!
[Retired]



~~>Meus Trabalhos:

---Sistema De Domínio De Castelos. (Action)
---Sistema De Mineraçao (Action)
---Scroll Que Da X Exp Quando é Usada (Action)
---Portas Não Abrem? Venha Aqui Ver Como Arruma! (Action)
---Crie Suas Quest´s De Uma Maneira Rapida E Facil. (Action)
---The Demon OaK Quest (Action)

---Addon Por Item, Com Todos Os Outfits. (Npc)

---Aprenda a colocar suas quests no Quest Log (Tutorial+scripts _ data/xml/quests.xml)
---Conhecendo Melhor A Pasta Globalevents (Tutorial+scripts)
---Gerencie O Seu Mysql Como Se Fosse Sqlite (Tutorial)
---Multi World Sistem - Como Funciona. (Tutorial)

---Projeto de tradução do TFS 8.31 SQL - Inglês para o Portugês (Server 8.31)

---2 Templantes para Web Site de OT (Websites de OTserv)
---Atualização de sites do Gesior para sistema de mult-world (Websites de OTserv)

---Thyrania editado (Map)
---Yalahar Global Completo (Map)

---Pic Editor para Tibia 8.2+ (Programa)
---Ztracker - Clone mapas 8.4 (Programa)



Tprocheira

WOOOOW
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 23/12/07Posts: 566Char no Tibia: Tprocheira soldier
Acho que em LUA, alguém já me disse, é também conhecido como tables.

Sim, mas é mais conhecido por Arrays, já que isso tem o mesmo nome em C/C++ e outras linguagens :)

 

Tprocheira

Abacate123

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 19/05/06Posts: 125
@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é+

Atenciosamente Kiko5

--------------------------------------







kiko5fanmf0.gif

By: Anokinha

Eventide

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 08/10/08Posts: 189

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



?

 

 

1440522_2.png

 

Tprocheira

WOOOOW
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 23/12/07Posts: 566Char no Tibia: Tprocheira soldier

@Eventide~

Na verdade, não está errado, isso é para declarar um valor da tabela, porém, acredito que eu tenha invertido os valores.

Vou arrumar o mesmo.

Obrigado pelo report.

 

Tprocheira

  • 1
  • 2