joaohd 200 Postado Fevereiro 6, 2010 Share Postado Fevereiro 6, 2010 (editado) Introdução à programação LUA e lógica de programação Assim como todas as linguagens de programação, LUA tem suas particularidades e sua estrutura lógica própria, a qual envolve suas funções, operadores e engines. Para começarmos a programação em LUA, devemos conhecer sua lógica, para que possamos aplicá-la em nossos códigos. Abaixo, você encontra os operadores da linguagem e sua explicação: • “Local” = É usado para a definição de variáveis. Pode ser encontrado também destacando uma função. Neste último caso, seu uso pode ser dispensado quando a função não se encontra embutida na função principal. Exemplo de uso: ► local a = 1 ► function onUse(cid, item, fromPosition, itemEx, toPosition) local function helloWorld() print("Hello World") return TRUE end return helloWorld() end ► function helloWorld() print("Hello World") return TRUE end function onUse(cid, item, fromPosition, itemEx, toPosition) return helloWorld() end Note a diferença entre o segundo e o terceiro exemplos. Em ambos, a função principal é a “onUse”, porém, em um dos casos foi usado o operador “local” destacando a função secundária, que se encontrava embutida na função principal, ou seja, “abaixo” da função principal. • “If” = É usado para definir condições. Ele é bastante usado para tornar o script restrito ao uso não programado. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) > 10 then print("O jogador possui level maior que 10") end return TRUE end Neste exemplo, o código só poderá ser usado para jogadores com level maior que 10 e retornará a mensagem “O jogador possui level maior que 10”. • “Elseif” = Assim como o “if”, é usado para definir condições, porém, seu uso deve estar obrigatoriamente associado ao “if”. Este operador define outras condições para que o código entre em vigor. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) > 10 then print("O jogador possui level maior que 10") elseif getPlayerLevel(cid) == 10 then print("O jogador possui level 10") end return TRUE end Neste exemplo, caso o jogador tenha level maior que 10, o código retornará a mensagem “O jogador possui level maior que 10”, mas se o jogador tiver level 10, o código retornará a mensagem “O jogador possui level 10”. Note que para usar o “elseif”, antes tive de usar um “if”. • “For” = É usado para fazer loops no código, executando várias ações ao mesmo tempo. Seu uso é indicado para encurtamento de scripts, fazendo com que leve menos tempo para o código ser processado e economizando memória. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) local pos = { {x=1, y=2, z=3}, {x=4, y=5, z=6} } for a = 1,2 do doSummonCreature("rat", pos[a]) end return TRUE end Neste exemplo, uma tabela indica as posições onde serão sumonados os monstros. O “for” foi usado para indicar que deveriam ser sumonados 1 rat em cada uma das posições especificadas na tabela. • “While” = É usado para fazer loops no código, porém, diferente do “for”, este executa a ação até ser interrompido. Não é muito usado em OpenTibia pelo fato de usar muita memória para ser executado. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) local i = 0 while i < 10 do print (i) i = i + 1 end return TRUE end No caso acima, a variável “i” foi definida inicialmente como sendo zero. Quando o código é executado, os valores assumidos por “i” são retornados até que “i” chegue ao valor nove, que é quando o código se encerra. • “Else” = É usado para definir o que será feito caso a condição definida anteriormente seja falsa ou verdadeira, de acordo com o código e com o que se deseja. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) >= 10 then print("O jogador possui level 10 ou mais") else print("O jogador possui level 9 ou menos") end return TRUE end Note que foi usado anteriormente um “if” para a definição da condição. Neste exemplo, caso o jogador tenha level 10 ou mais, será retornada a mensagem “O jogador possui level 10 ou mais”. Mas se o jogador não tiver atingido level 10, será retornado “O jogador possui level 9 ou menos”. Operadores matemáticos em LUA Após entender a função de cada operador de linguagem acima, podemos passar aos operadores matemáticos ou “Operadores relacionais”. São usados para fazer a comparação numérica ou de uma string. Veja abaixo: • “<” = É usado para dizer que algo é “menor que” outro. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) < 8 then print("O jogador não possui vocação, pois seu level é menor que oito") end return TRUE end A comparação feita mostra se o jogador possui vocação de acordo com seu level, mostrando se ele tem level mínimo para ter vocação, visto que no Tíbia, jogadores abaixo do level 8 não possuem vocação. • “>” = O inverso de seu antecessor. É usado para dizer que algo é “maior que” outro. Exemplo de uso: ►function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) > 8 then print("O jogador pode posuir vocação") end return TRUE end Neste caso, o código retornará que o jogador pode possuir alguma vocação pois possui level maior que 8. •“<=” = Este operador faz a comparação que algo é “menor ou igual” que/a outro. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) <= 8 then print("O jogador não pode usar exura") end return TRUE end Neste exemplo, o código verifica se o jogador possui level 8 ou menos para dizer se ele pode ou não usar exura, visto que no Tíbia o jogador só pode usar exura se tiver level 9 ou maior. • “>=” = Este operador faz a comparação que algo é “maior ou igual” que/a outro. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) >= 9 then print("O jogador pode usar exura") end return TRUE end Neste caso, o código verifica se o jogador possui level 9 ou mais para dizer se ele pode ou não usar exura. • “==” = Este operador faz a comparação de igualdade. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) == 8 then print("O jogador já pode abandonar rookgaard") end return TRUE end A comparação feita mostra se o level do jogador é ou não 8. Se for 8, o código retorna a mensagem “O jogador já pode abandonar rookgaard”. • “~=” = Este operador faz a comparação de diferença. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) ~= 10 then print("Somente jogadores com level 10 podem usar") end return TRUE end O exemplo restringe o uso apenas a jogadores com level 10. Se o jogador não possuir level 10, o código retorna a mensagem “Somente jogadores com level 10 podem usar”. _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._. Bom, é isso. Tentei fazer um tutorial completo e que ajudasse quem quisesse aprender a linguagem. Tutorial feito totalmente por mim. Espero que esteja bom e espero comentários também. @Editado Editado a fim de corrigir alguns erros de ortografia e nos scripts. Será que ganho um ponto de reputação? Editado Fevereiro 6, 2010 por apocarai Link para o comentário https://xtibia.com/forum/topic/127900-introdu%C3%A7%C3%A3o-%C3%A0-programa%C3%A7%C3%A3o-lua/ Compartilhar em outros sites More sharing options...
Henrique Moura 193 Postado Fevereiro 9, 2010 Share Postado Fevereiro 9, 2010 Eu poderia escrever um mini-texto preparado para tutoriais aprovados, mas três palavras resumem isso tudo: Simples, útil e direto. Tópico movido, Grato. Link para o comentário https://xtibia.com/forum/topic/127900-introdu%C3%A7%C3%A3o-%C3%A0-programa%C3%A7%C3%A3o-lua/#findComment-845380 Compartilhar em outros sites More sharing options...
Maluko Aprendiz 52 Postado Fevereiro 14, 2010 Share Postado Fevereiro 14, 2010 @Aprovado! --------- Parabens pelo topico... Link para o comentário https://xtibia.com/forum/topic/127900-introdu%C3%A7%C3%A3o-%C3%A0-programa%C3%A7%C3%A3o-lua/#findComment-846550 Compartilhar em outros sites More sharing options...
Vodkart 1515 Postado Maio 24, 2010 Share Postado Maio 24, 2010 Parabens pelo tutorial Realmente muito bom. Obrigado por compartilhar seus conhecimentos. =) Acho que todos que começam na linguagem lua deveriam ler,ajuda muito! abraços Link para o comentário https://xtibia.com/forum/topic/127900-introdu%C3%A7%C3%A3o-%C3%A0-programa%C3%A7%C3%A3o-lua/#findComment-879890 Compartilhar em outros sites More sharing options...
XJhoow 27 Postado Maio 26, 2010 Share Postado Maio 26, 2010 Muito bom cara, aprendi altos ;* Beijos me liga.. BEM Útil.. Link para o comentário https://xtibia.com/forum/topic/127900-introdu%C3%A7%C3%A3o-%C3%A0-programa%C3%A7%C3%A3o-lua/#findComment-880698 Compartilhar em outros sites More sharing options...
joaohd 200 Postado Maio 26, 2010 Autor Share Postado Maio 26, 2010 Ae, até que enfim começaram a ler isso aqui. Seção sem movimento... flw Link para o comentário https://xtibia.com/forum/topic/127900-introdu%C3%A7%C3%A3o-%C3%A0-programa%C3%A7%C3%A3o-lua/#findComment-880821 Compartilhar em outros sites More sharing options...
Oapocalipse 1 Postado Junho 25, 2010 Share Postado Junho 25, 2010 Poderia me explicar: [25/06/2010 16:04:50] data/actions/scripts/teste.lua:6: 'then' expected near 'end' Obg.. Link para o comentário https://xtibia.com/forum/topic/127900-introdu%C3%A7%C3%A3o-%C3%A0-programa%C3%A7%C3%A3o-lua/#findComment-895849 Compartilhar em outros sites More sharing options...
joaohd 200 Postado Junho 25, 2010 Autor Share Postado Junho 25, 2010 Isto significa que falta o "then" na linha 6, perto do "end" flw Link para o comentário https://xtibia.com/forum/topic/127900-introdu%C3%A7%C3%A3o-%C3%A0-programa%C3%A7%C3%A3o-lua/#findComment-895852 Compartilhar em outros sites More sharing options...
Oapocalipse 1 Postado Junho 25, 2010 Share Postado Junho 25, 2010 (editado) Sim, mais o que seria ess ethen , quero dizer, PORQUE? tipo: [25/06/2010 16:43:57] data/actions/scripts/teste.lua:9: '<eof>' expected near 'end' Editado Junho 25, 2010 por hretro Link para o comentário https://xtibia.com/forum/topic/127900-introdu%C3%A7%C3%A3o-%C3%A0-programa%C3%A7%C3%A3o-lua/#findComment-895857 Compartilhar em outros sites More sharing options...
joaohd 200 Postado Junho 25, 2010 Autor Share Postado Junho 25, 2010 (editado) Esse "then" significa que há uma condição, e caso ela for obedecida, a ação seguinte seja executada. Exemplo: local a = 1if a == 1 then print("A letra a vale 1") O "then" significa "então". Se (isto é verdadeiro) então escreva "É verdadeiro" flw Editado Junho 25, 2010 por apocarai Link para o comentário https://xtibia.com/forum/topic/127900-introdu%C3%A7%C3%A3o-%C3%A0-programa%C3%A7%C3%A3o-lua/#findComment-895863 Compartilhar em outros sites More sharing options...
Oapocalipse 1 Postado Junho 25, 2010 Share Postado Junho 25, 2010 Outra duvida: Com seu tutorial fiz isso: function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) >= 100 then doSummonCreature ("Chicken", [color="#FF0000"]Position[/color] + 1) else print ("Você e noob") end return TRUE end Aonde a chicken vai ser sumonada etsa como position. Como eu configuro esta position? por exemplo pra apareçer na frente do player Link para o comentário https://xtibia.com/forum/topic/127900-introdu%C3%A7%C3%A3o-%C3%A0-programa%C3%A7%C3%A3o-lua/#findComment-895871 Compartilhar em outros sites More sharing options...
joaohd 200 Postado Junho 25, 2010 Autor Share Postado Junho 25, 2010 Esta position você pode fazer assim: doSummonCreature("Chicken", getPlayerLookPos(cid)) flw Link para o comentário https://xtibia.com/forum/topic/127900-introdu%C3%A7%C3%A3o-%C3%A0-programa%C3%A7%C3%A3o-lua/#findComment-895880 Compartilhar em outros sites More sharing options...
ZaskxD 5 Postado Julho 19, 2010 Share Postado Julho 19, 2010 Muito Bom!! Estou tentando aprender um pouco seu tuto ajudou muito! REP+ Link para o comentário https://xtibia.com/forum/topic/127900-introdu%C3%A7%C3%A3o-%C3%A0-programa%C3%A7%C3%A3o-lua/#findComment-908541 Compartilhar em outros sites More sharing options...
Hensei 3 Postado Julho 23, 2010 Share Postado Julho 23, 2010 ow... , tipow se eu quiser ke no if , tenha duas condições eu faço como? tipo , seu quero ke o level do cara esteja entre 10 e 15 eu boto como? assim? if getPlayerLevel(cid) > 10 and getPlayerLevel(cid) < 15 then Link para o comentário https://xtibia.com/forum/topic/127900-introdu%C3%A7%C3%A3o-%C3%A0-programa%C3%A7%C3%A3o-lua/#findComment-910245 Compartilhar em outros sites More sharing options...
junior2b 18 Postado Outubro 20, 2010 Share Postado Outubro 20, 2010 Valeu @Apocarai , Muito bom tuto, consegui aprender alguma coisa =] Rep + Link para o comentário https://xtibia.com/forum/topic/127900-introdu%C3%A7%C3%A3o-%C3%A0-programa%C3%A7%C3%A3o-lua/#findComment-947573 Compartilhar em outros sites More sharing options...
Posts Recomendados