Tprocheira 5 Postado Novembro 23, 2008 Share Postado Novembro 23, 2008 (editado) 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 Editado Dezembro 22, 2008 por Tprocheira Link para o comentário Compartilhar em outros sites More sharing options...
DropBlood 0 Postado Novembro 23, 2008 Share Postado Novembro 23, 2008 rOx Apezar de não saber nada d lua entendi... Link para o comentário Compartilhar em outros sites More sharing options...
Darth Sidious 3 Postado Novembro 23, 2008 Share Postado Novembro 23, 2008 Putz, impecavel muito bem explicado parabéns, assim não demora muito para aprender Link para o comentário Compartilhar em outros sites More sharing options...
Jvchequer 63 Postado Novembro 23, 2008 Share Postado Novembro 23, 2008 Just Perfect~ Aprovado Link para o comentário Compartilhar em outros sites More sharing options...
Lordfire 309 Postado Novembro 23, 2008 Share Postado Novembro 23, 2008 Boaa Eu nunca entendi direito arrays, vou consultar pra ver se faço algo de bom! Link para o comentário Compartilhar em outros sites More sharing options...
tibiaa4e 86 Postado Novembro 24, 2008 Share Postado Novembro 24, 2008 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 Link para o comentário Compartilhar em outros sites More sharing options...
Tprocheira 5 Postado Novembro 26, 2008 Autor Share Postado Novembro 26, 2008 @UP =D Mas isso ajuda na hora de você dar os scripts para outras pessoas, assim como as variáveis local. =D @OFF~ BUMP! Merece fixo né galera =D Tprocheira Link para o comentário Compartilhar em outros sites More sharing options...
Master Gm Gui 0 Postado Novembro 26, 2008 Share Postado Novembro 26, 2008 (editado) Muito bom mesmo o tutorial Tprocheira. Organizadinho, fácil de entender. Parabéns! :smile_positivo: Editado Novembro 26, 2008 por Master Gm Gui Link para o comentário Compartilhar em outros sites More sharing options...
noobinhu 38 Postado Novembro 26, 2008 Share Postado Novembro 26, 2008 Acho que em LUA, alguém já me disse, é também conhecido como tables. Link para o comentário Compartilhar em outros sites More sharing options...
tibiaa4e 86 Postado Novembro 26, 2008 Share Postado Novembro 26, 2008 @Tprocheira Ajuda sim Variavel local eu uso sempre... Mais me acostumei com muitos elseif e talz ahuahua Mais em outras linguagens eu uso sempre Link para o comentário Compartilhar em outros sites More sharing options...
alissonlinneker 2 Postado Novembro 26, 2008 Share Postado Novembro 26, 2008 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 Link para o comentário Compartilhar em outros sites More sharing options...
Tprocheira 5 Postado Novembro 26, 2008 Autor Share Postado Novembro 26, 2008 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 Link para o comentário Compartilhar em outros sites More sharing options...
Abacate123 2 Postado Dezembro 14, 2008 Share Postado Dezembro 14, 2008 @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 More sharing options...
Eventide 23 Postado Dezembro 15, 2008 Share Postado Dezembro 15, 2008 ids = {2160 = ["crystal_coin"], 2148 = ["gold_coin"], 100 = ["void"]} tá completamente errado isso... 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 More sharing options...
Tprocheira 5 Postado Dezembro 22, 2008 Autor Share Postado Dezembro 22, 2008 @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 Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados