Histórico de Curtidas
-
3visan recebeu reputação de ZekeBaiano em Modern AAC WebSite Poketibia 1.0Bem simples, porem pode ser util para alguem, por ser modern account é bem provavel que seja bem seguro
Obrigado por compartilhar.
-
3visan recebeu reputação de Drankar em [9.60/9.61] The Forgotten Server v0.2.14 (Mystic Spirit)The Forgotten Server
Versão: 0.2.14 (Mystic Spirit)!
A lista completa de alterações pode ser encontrada em doc / changelog.
Este lançamento vem com suporte para o protocolo de 9.60/9.61, uma série de correções de bugs, otimizações, duas falhas potenciais fixa e melhorias de código.
Microsoft Visual C + + Redistributable Package 2010 é necessário para executar o servidor:
32-bit redistributable package download
64-bit redistributable package download
Source Code:
Link externo
Download The Forgotten Server 0.2.14:
theforgottenserver-v0.2.14-win32console.7z
theforgottenserver-v0.2.14-win32gui.7z
theforgottenserver-v0.2.14-win64console.7z
theforgottenserver-v0.2.14-win64gui.7z
Créditos:
OTLand.net e TFS Developers.
Vittu, pelo upload.
-
3visan recebeu reputação de Lucas Casagrande em [9.60/9.61] The Forgotten Server v0.2.14 (Mystic Spirit)The Forgotten Server
Versão: 0.2.14 (Mystic Spirit)!
A lista completa de alterações pode ser encontrada em doc / changelog.
Este lançamento vem com suporte para o protocolo de 9.60/9.61, uma série de correções de bugs, otimizações, duas falhas potenciais fixa e melhorias de código.
Microsoft Visual C + + Redistributable Package 2010 é necessário para executar o servidor:
32-bit redistributable package download
64-bit redistributable package download
Source Code:
Link externo
Download The Forgotten Server 0.2.14:
theforgottenserver-v0.2.14-win32console.7z
theforgottenserver-v0.2.14-win32gui.7z
theforgottenserver-v0.2.14-win64console.7z
theforgottenserver-v0.2.14-win64gui.7z
Créditos:
OTLand.net e TFS Developers.
Vittu, pelo upload.
-
3visan recebeu reputação de testotface em Walking Effect On OutfitParabéns Vodkart, eu vi esse script em algum servidor, só não lembro qual.
-
3visan recebeu reputação de DiigooMix em Free for use!Sua agua ficou muito bacana Nechros,
Uma espada bem diferente que fiz a alguns dias .-.
-
3visan recebeu reputação de DiigooMix em Free for use!Ótimo tópico, estarei fixando o tópico pois se trata de um conteúdo bom, e sempre há pessoas procurando sprites para usar em seus projetos, vou começar doando uma sprite antiga que fiz para um duelo, é uma demon sword.
-
3visan recebeu reputação de Augusto em Sr. Samuel, quem lembra? rsrsgostoso
-
3visan recebeu reputação de robson pablo dos san em [Aula 11] FunçõesBem amigos da rede globo, estou aqui para dar continuidade as aulas. E a aula de hoje é sobre Funções, suas utilizações e como criar.
O que são?
Bom, você jovem padawan já deve ter se deparado com algo assim em algum script:
function doPlayerAddAddons(cid, addon) for i = 0, table.maxn(maleOutfits) do doPlayerAddOutfit(cid, maleOutfits[i], addon) end for i = 0, table.maxn(femaleOutfits) do doPlayerAddOutfit(cid, femaleOutfits[i], addon) end end Peguei essa função no arquivo lib/functions.lua Isso é uma função (dãa). As funções são blocos de instruções (comandos) que o servidor lê e executa. Você tem a liberdade de criar elas na pasta lib e usar em todos os seus scripts ou apenas criar e usar em um unico script. Elas tambem podem ser criadas no próprio distro (sources) e compiladas, se tornando assim uma função própria do teu servidor. local items = {} for i=1,10 do if isPlayer(cid) and getPlayerSlotItem(cid, i).uid ~= (nil or 0) then table.insert(items, getPlayerSlotItem(cid, i).itemid) end end Isso retornaria os ids dos items do corpo do player. Mas agora suponhamos que você precisa usar isso umas 3x. Você teria que ficar repetindo isso pelas 3x. Então seria bem mais pratico criar um "atalho" para isso. E é ai que entra a parte das funções, tu cria uma função que irá executar esse bloco de ações toda vez que você chama-la. Exemplo: unction getPlayerItemsOnBody(cid) local items = {} for i=1,10 do if isPlayer(cid) and getPlayerSlotItem(cid, i).uid ~= (nil or 0) then table.insert(items, getPlayerSlotItem(cid, i)) end end return items end Agora, sempre que você precisar pegar todos os items do player, você apenas usa a função getPlayerItemsOnBody (Função criada pelo dalvorsn). function getPlayerItemsOnBody(cid) function - Nessa parte, estou declarando a função (tal como declarar uma variável) getPlayerItemsOnBody - Aqui estou declarando o nome da função (geralmente a primeira letra da primeira palavra é minuscula e o resto das primeiras letras das outras palavras são maiúsculas, mas isso é só frescura, nada obrigatório) (cid) - Aqui, eu estou declarando os parâmetros para a função. No caso só vou usar a cid. Mas você pode colocar os parâmetros que for precisar. 2º Parte: Escopo. local items = {} for i=1,10 do if isPlayer(cid) and getPlayerSlotItem(cid, i).uid ~= (nil or 0) then table.insert(items, getPlayerSlotItem(cid, i)) end end Esse é o escopo da função, onde você cria o corpo da função. Pode botar outras funções, variáveis, tabelas e estruturas de controle/repetição. 3º Parte: Return. return items Nessa linha, você especifica o que você quer que a função retorne. No meu caso, eu botei para retornar a tabela items. Tu pode botar valores booleanos, variáveis, tabelas e até outras funções. 4º Parte: Fechamento. end
Bem, logicamente é nessa parte que você especifica o fim da função.
Onde cria-las?
Bom, existem duas maneiras de criar uma função:
Função local.
Criando uma função local no script, você poderá usa-la inúmeras vezes dentro do script. Porem, ela só poderá ser usada só nesse script.
Função global (libs).
Criando a função dentro de um arquivo .lua dentro da pasta libs do teu server, tu criará uma função global. Elas podem ser usadas em todos os seus scripts, sem restrições.
Exercícios de fixação.
Tu deverá criar uma função que mudará a town do personagem para a town escolhida e teleportará o player para tal town.
Funções necessárias:
getTownTemplePosition(townId)
doPlayerSetTown(cid, townid)
doTeleportThing(cid,pos)
Funções Opcionais:
doSendMagicEffect(pos, type)
Resposta
Creditos:
99% iuniX
1% Vittu
Quais são suas utilidades? Vamos lá, suponhamos que você tenha que pegar todos os items do corpo de um player várias vezes. Tu teria que usar toda vez algo mais ou menos assim: Como fazer? Agora vamos começar criar nossas próprias funções. Vou explicar linha por linha. 1º Parte: Declaração da função, nome da função e parâmetros. -
3visan recebeu reputação de gabriel28 em Aula [8] Loops: while e repeatWhile & repeat
Aula 8
Primeiramente desculpe a demora por essa aula, ficou meio aquela de; ah faz você, não faz você, anem faz você; Mais em fim estamos de volta com uma coisa indispensável em scripting que são os loops. Antes de tudo devo avisa que loops são perigosos, você pode travar seu servidor inteiro usando errado um loop.
Os loops são usados para inicialmente quando temos varias funções juntas iguais, por exemplo, fazendo um jogador falar oi 10 vezes. Sem os loops você faria assim:
doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) Com loops você resume isso a 4 linhas, e ainda pode fazer milhares de coisas com eles! While Sintaxe: while (sentença) do (bloco) end Traduzindo: enquanto (algo for verdadeiro) Fazer (coisas) fim Entao repare, enquanto algo for verdadeiro fazer... Ele vai executar o que estiver dentro do loop infinitas veses até que o ((sentença)) seja falso ou você mande ele parar. Veja um exemplo: while getPlayerLevel(cid) < 10 do --- Enquanto o level for menor que 10 doPlayerAddExp(cid,1000) adcionar 1k de exp por vez end Viram? enquanto o nível for menor que 10 ele vai adicionar 1k de exp. Ele ira verificar, se for false (maior que 10) ele pula tudo e vai para o que estiver depois do end, se for true (for menor que 10) ele ira adicionar 1k de exp e depois ira verificar dinovo, ele vai executar até que seje 10. Nessa hora que se tem que tomar cuidado, é na verificação. Se você colocar algo como: while 1 < 2 do, ele vai executar eternamente, até que vc encerre o programa forçadamente (ctrl-alt-del) ou reinicie o pc, ou entao fexe o programa no X Veja mais alguns exemplos: pos = {x=100,y=100,z=100,stackpos=0} local stack = 0 while stack < 255 do pos.stackpos = stack local item = getThingFromPos(pos) if item.itemid ~= 0 and isCreature(item.uid) == false then doRemoveItem(item.uid,item.type) end stack = stack+1 end player ou monster ele ira remover o item e no final adcionar +1 numero a nossa variavel stack, Nisso repare, ele ira executar 255 veze e ira deletar todos os items daquela posição imagina vc escrevendo isso 255 vezes sem o loop . Repeat Ao contrario do while ele é tudo ao contrario, a verificação é no fim e ele só repete se for false (contrario de while que é se for true) Sintaxe: repeat (bloco) until (sentença) Tradução: Repetir (coisas) até (bloco) Bem nao seria até seria até que nao, pois se você usar: until true ele vai parar, e se usar: until false ele vai continuar. è ao contrario especificando mais. Diferente do while, o repeat ele executa primeiro o bloco para depois verificar, a verificação é no final. Tambem perigoso pois se usado incorretamente vc vai travar seu server tambem. Mais nao ligue pra isso todos que começam a mexer com loops sempre travam seus servidores no começo é normal. Veja o repeat em uso: local n = 0 repeat n = n+1 print('ola pessoas este é o loop numero:'..n) until n == 10 Ele ira executar 10 vezes, ele ira parar quando n for 10. Agora veja o exemplo de limpar o char adaptado para o repeat e veja a diferença (repare nos sinais de > e< ) pos = {x=100,y=100,z=100,stackpos=0} local stack = 0 repeat pos.stackpos = stack local item = getThingFromPos(pos) if item.itemid ~= 0 and isCreature(item.uid) == false then doRemoveItem(item.uid,item.type) end stack = stack+1 until stack > 255 Viram? Ao invez da verificação ser no começo do loop ela é feita no final, entao ao final do lopp antes da verificação eu adciono +1 no valor da variavel stack, e ele so ira parar o loop assim que stack for maior que 255 (ou seja 256), entao assim que o script dentro do loop temrinar com o valor 256 ele ira parar o loop e prosseguir com o resto do script. break Antes de terminarmos irei falar rapidamente sobre o break. Ele é usado APENAS em loops e serve para "quebrar" o loop, acontece quando vc quer parar o loop sem a verificação, ou parar antes de algo. Veja: local parar = 0 while os.date('%S') == '45' do print('Verificando se agora são 45 segundos') if parar > 25 then break end print('Nem é agora são:'..os.date('%S')..' segundos') parar = para+1 end print('oi')
Nesse caso criei um script para ver se agora são X horas X minutos e 45 segundos (não importa quantas horas e minutos só os segundos), e se depois de 25 verificações não for 45 segundos ele ira usar o break. Quando usado ele ira finalizar o loop e irar continuar a executar o script depois do loop, no caso o print('oi') ai e o resto do script (caso exista)
Exercicios
Faça seguinte:
Crie um loop que execute enquanto o player estiver online, e enquanto ele estiver online colocar para kickar ele.
Use o repeat para criar um script que solte 25 magic effects diferentes.
Use qualquer loop para criar um scritp que mova um player por 5 sqm em direções aleatorias (o script deve parar com o break!)
DESAFIO
Crie um script que gere um loop infinite que so pare depois de 10 segundos de execução.
Creditos:
99% Mock
1% Vittu
Aula 9 Tabelas
-
3visan recebeu reputação de mohamedxd em Como criar novos SpritesCaso for outfits.
-
3visan recebeu reputação de Martim Tiburcio em [Aula 10] O Comando forO Comando for
Aula 10
Você nunca viu o comando for? Ou já abriu um Script e não entendeu nada por causa dele? Eis aqui uma explicação de como funciona o comando e alguns exemplos de utilização, assim como alguns exercícios.
Antes de mais nada, o que faz o for?
R: O for causa um "loop", mas não é como o while e o repeat. Por que? Porque ele atribui à uma variavel todos os valores entre o valor inicial e o valor final.
Editado: O For não é um comando Condicional!
Estrutura do For:
for variavel = valor inicial, valor final[, incremento] do bloco end não entendeu? Então vamos à breves explicações, começando com um exemplo abstrato: local i = 1 local j = 10 local inc = 1 for var = i, j, inc do print(var) end "Oh! Que bicho é este?" R: Isto é um exemplo ridículo do uso do for. Se você nunca viu isso antes, obviamente não entendeu, mas não é nenhum monstro de três cabeças. Quando eu explicar o que foi feito, você vai ver que é muito simples. Nas três primeiras linhas eu defini três variaveis locais, para "limpar" o script e facilitar o entendimento de quem ainda não conhece o for: local i = 1: Aqui eu usei "i" como inicial e ela é usada na linha 5. Seu valor é 1. local j = 10: Aqui eu usei "j" como final e ela é usada na linha 5. Seu valor é 10. local inc = 1: Esté é o incremento do for e seu valor é 1. Vai ser explicada mais pra frente, então não se preocupe com ela agora. var: É a variável à qual será atribuida os valores. "Perai, agora estou com dúvida. Você não declarou a variavel var!" R: Isto é porque ela não precisa ser declarada! Ela só vai servir como variavel dentro do laço(for). Se eu tentasse usar ela em um bloco fora do for bloco do sem ter declarado ela antes, vai resultar num simples nil(Nulo)! print(): Só vai escrever no console. Explicada as variáveis, vamos entender o funcionamento do código: O for vai atribuir à var todos os valores entre o "i"(valor inicial) e o "j"(valor final), incluindo os dois! Não vamos nos preocupar com o incremento agora, pois você pode escrever o código sem ele. No caso, o valor padrão do incremento é 1. Vamos à mais um exemplo: print("-- Início --") for var = 1, 5 do print("Valor de var: "..var) end print("-- Fim --") As saídas geradas por esse Script serão: -- Início -- Valor de var: 1 Valor de var: 2 Valor de var: 3 Valor de var: 4 Valor de var: 5 -- Fim -- Entendeu agora? Na primeira vez o for atribuiu à var o valor 1, executou o bloco, depois ele fez um loop, voltando para o começo e re-atribuiu à var o valor inicial + 1 que é 2, executando o bloco de novo usando o novo valor de var. Depois valor inicial + 1 + 1 e assim vai até chegar no valor final que é 5, e é aonde ele para. "Tá, mas não vejo a utilidade do for." Então você, com todo o respeito, é cego! O que eu fiz em três linhas poderia ser feito assim: i = 1 j = 5 switch = TRUE while switch == TRUE do if i == j then print("Valor de i: "..i) switch = FALSE else print("Valor de i: "..i) i = i + 1 end end Ou, dando um desconto, para encurtar, no máximo poderia ser feito assim: i = 1 j = 5 while i <= j do print("Valor de i: "..i) i = i + 1 end Além de que você não pode usar variaveis locais dentro de whiles. Você entendeu tudo o que foi feito até aqui? R: Não! Então volte até a parte onde você "se perdeu" e não leia, estude, até entender. R: Sim! Então vamos complicar um pouco mais e aplicar o for em tabelas! (Atenção, você não precisa conhecer tabelas para continuar!) Aplicando o For em Tabelas! "Qual a utilidade de aplicar o For em tabelas?" R: Não sei se você percebeu, mas não podemos aplicar, do jeito que eu exemplifiquei acima, strings no for, mas há como fazer isso, sim! Usando tabelas(tables, arrays) "Como fazemos então?" Você precisa, antes de mais nada, declarar a tabela! Para quem não conhece, as tabelas são declaradas igual a variáveis, e podem ser locais ou globais. Você pode dar-lhes o nome que quiser, desde que não contenha caracteres especiais: !@#$%¨&*()-+=-*/,.ESPAÇO<>:;?|\"'`´[]{}°ºª¹²³£¢¬§. Underlines (_) são permitidos. Você pode utilizá-los como espaços. O valor das Tabelas ficam sempre entre chaves({}) e são separados por vírgulas! As strings seguem o padrão de estarem sempre entre aspas("")! local Tabela = {} "Pronto! E agora?" R: Está esperando o que? Adicione os valores! Vou inserir na minha tabela o meu nick e o nick de mais 3 amigos: <Falta de Imaginação > local Tabela = {"Skyen Hasus", "Hwoarang", "MotoBoy", "Luketez"} Agora entra o for, mas omo fazemos para pegar os valores da tabela? Simples! Qual é a posição do primeiro valor da tabela? É 1, então como valor inicial do for nós colocamos 1! E como valor final? Este valor varia, já que uma tabela pode conter vários e vários valores. Resposta: Nós usamos o #nome_da_tabela! O # retorna o número de valores que a tabela tem! Um outro jeito de fazer isso seria usando o table.getn(tabela), mas é mais fácil e curto com o #! "Ah! Então é só construir a estrutura do for e no bloco colocar print(var)!" Errado, meu amigo, embora a culpa seja minha. O for atribui à variável somente o valor NUMÉRICO, ou seja, ele vai atribuir a posição do valor na tabela. "Então como eu tenho que fazer?" Se você já conhece tabelas, pense um pouco, não é tão difícil! Pensou? Não conseguiu? Fácil! Como eu disse, a variável vai ter o valor da posição na tabela, então só temos que "achar" este valor, seguindo sua posição! Este não conhece tabelas-> "Mas como fazemos isso?" Usando o nome_da_tabela[posição] sendo a [posição] o valor da variável, já que ela tem o valor da posição! Veja como vai ficar: local Tabela = {"Skyen Hasus", "Hwoarang", "MotoBoy", "Luketez"} for var = 1, #Tabela do print("Valor "..var..": "..Tabela[var]) end E este script vai retornar: Valor 1: Skyen Hasus Valor 2: Hwoarang Valor 3: MotoBoy Valor 4: Luketez Acho que aqui vocês já entenderam guande parte e já podem sair fazendo suas "experiências". Caso queiram continuar, tem só mais um conteúdo: incrementos, e para outros, no final tem uns exercícios. Uso de Incrementos no For! Agora que você já aprendeu a usar o for, vai ser moleza aprender os Incrementos. "Mas o que eles fazem?" Eles continuam atribuindo os valores às variáveis, mas o incremento faz eles pularem alguns valores! Exemplo: for var = 1, 16, 3 do print(var) end Saídas geradas por este Script: 1 4 7 10 13 16 Ou seja: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Os números 2, 3, 5, 6, 8, 9, 11, 12, 14 e 15 são pulados pelo for! "Mas como eu uso?" Simples! Verifique no começo do tutorial a estrutura do for. Aonde está escrito incremento você "substitói" pelo número de valores que vai pular! À pedido do Mock! - Os comandos: in pairs() e in ipairs()! Antes de mais nada, saiba que ambos funcionam somente em tabelas! A diferença entre pairs() e ipairs() é que o pairs() vai incluir os índices no for, e o ipairs() não. Mas os dois fazer quase a mesma coisa: Além de definir um valor para uma variável "x", ele vai definir para a variável "y" a posição ou, no caso do pairs(), o índice. Exemplo do ipairs: local tabela = {2, 3, 4, 5, seis=6} for i, v in ipairs(tabela) do print(i, v) end Que retornará Posição(i), Valor(v): [color=#0000ff]1[/color], 2 [color=#0000ff]2[/color], 3 [color=#0000ff]3[/color], 4 4, 5 Observe que o ipairs() não retornou o "seis=6" Exemplo do pairs: local tabela = {2, 3, 4, 5, seis=6}[/b][/size] [size="3"][b]for i, v in pairs(tabela) do print(i, v) end Que retornará Posição(i), Valor(v): 1, 2 2 , 3 3, 4 4, 5 seis, 6 E agora sim, o pairs() retornou o índice "seis=6" Acho que isso é tudo o que precisam saber sobre o ipairs() e pairs(). O resto depende da criatividade e necessidade de cada um. Exemplos de Uso do For! function onSay(cid, words, param) local Online = getPlayersOnline() -- Retorna uma Tabela for pid = 1, #Online do doPlayerSendTextMessage(Online[pid], MESSAGE_INFO_DESCR, "Server will be Restarted in "..param.." Minute(s)!") -- Arrumado por MotoBoy! end end local creatures = {"deer", "rabbit", "minotaur", "ghoul", "orc"} for crat = 1, #creatures do table.remove(creatures, crat) end function pularDois(i, j) local naoPulados = {} for index = i, j, 2 do table.insert(naoPulados, index) end return table.concat(naoPulados, ", ") end for a = 664, 668 do if a == 666 then print("O número da vez é "..a.."! O número amaldiçoado!") else print("O número da vez é "..a.."!") end end Exercícios! Atenção! Faça os exercícios com sinceridade! Não os copie no Debugger do LUA nem olhe as respostas antes de ter certeza de que sua resposta está correta, mesmo que esteja errada, pois a resposta é só para conferir. Exercício 1 - O que há de errado na seguinte função? function exemplo(i, j, inc) for valor = i, j, inc then print(valor) end end Exercício 2 - O que há de errado na seguinte função? function exemplo(i, j, inc) for a = i, j, inc do print(b) end end Exercício 3 - O Script: local tabela = {"Teste 1", "Teste 2", "Teste 3", "Teste 4", "Teste 5", "Teste 6"} for valor = 1, 3 do print(tabela[valor*2]) end
Vai retornar?
A) 1, 2, 3
B) "Teste 1", "Teste 2", "Teste 3"
C) nil, nil, nil
D) 2, 4, 6
E) "Teste 2", "Teste 4", "Teste 6"
Resposta o Script abaixo, ache se puder
"Teste 2", "Teste 4", "Teste 6"
-----
Creditos:
99% Skyen Hasus
1% Vittu
Aula 11 Funções
-
3visan recebeu reputação de Gold Knight em [9.60/9.61] The Forgotten Server v0.2.14 (Mystic Spirit)The Forgotten Server
Versão: 0.2.14 (Mystic Spirit)!
A lista completa de alterações pode ser encontrada em doc / changelog.
Este lançamento vem com suporte para o protocolo de 9.60/9.61, uma série de correções de bugs, otimizações, duas falhas potenciais fixa e melhorias de código.
Microsoft Visual C + + Redistributable Package 2010 é necessário para executar o servidor:
32-bit redistributable package download
64-bit redistributable package download
Source Code:
Link externo
Download The Forgotten Server 0.2.14:
theforgottenserver-v0.2.14-win32console.7z
theforgottenserver-v0.2.14-win32gui.7z
theforgottenserver-v0.2.14-win64console.7z
theforgottenserver-v0.2.14-win64gui.7z
Créditos:
OTLand.net e TFS Developers.
Vittu, pelo upload.
-
3visan recebeu reputação de cN.FiNN em Erro: no map description availableProvavelmente o erro está na descrição do seu mapa, abre o mapa com o RME vai em propriedades e retire a descrição do mapa, se der errado poste uma foto do erro.
-
3visan recebeu reputação de maixmilion12 em [Aula 1] IntroduçãoIntrodução
Aula 1
O que é scripting?
Do modo mais simples possível: scripting é o ato de programar. O nome scripting vem do nome "script".
O que é um script?
De um modo geral, um script é um bloco de Código escrito em uma linguagem de programação interpretada, ou seja, ele precisa que alguma coisa leia ele e possa "traduzir" seu conteúdo. Lembre-se de que "script" não é um termo específico de Open Tibia Servers.
O que é uma linguagem de programação interpretada?
Os brasileiros falam português, ingleses falam inglês e chineses falam mandarim, e com isso o mundo é composto por várias línguas.
No mundo da programação não é diferente. Existem várias línguas que podem ser usadas, cada uma com uma característica e modo de escrever diferente (Assim como o português é diferente do inglês).
Entre estas linguagens, existem 2 tipos: as linguagens interpretadas e as linguagens compiladas (Não-interpretadas). Podemos fazer uma comparação tosca com a vida real: o português seria uma linguagem interpretada (Nosso cérebro precisa "traduzir" a mensagem), e os desenhos seriam a língua compilada (Nosso cérebro reconhece automaticamente a "mensagem" do desenho).
As linguagens compiladas são aquelas que não precisam ser lidas por nenhum programa, pois "conversam" diretamente com o computador, enquando a linguagem interpretada não consegue se comunicar com o computador, então a linguagem compilada recebe a mensagem do codigo interpretado e traduz numa linguagem que o computador entenda, dai a linguagem interpretada pode conversar com o computador (Desde que alguém traduza suas mensagens).
Voltando para a parte de Open Tibia Servers, a linguagem compilada é a linguagem usada no seu servidor: o .exe no Windows, por exemplo, e a linguagem interpretada são os scripts .lua. O seu servidor compilado vai ler os scripts .lua e traduzir o conteúdo deles para que o computador possa executar o que o script manda.
Se os scripts são escritos em linguagens interpretadas, qual é a linguagem dos script usados nos Open Tibia Servers?
Os Open Tibia Servers usam uma linguagem de programação (Interpretada) chamada Lua, que foi feita aqui no Brasil mesmo.
Características da linguagem de programação Lua:
Linguagem de Programação Interpretada
Linguagem de Programação Imperativa ou Programação Procedural
Linguagem de Scripts ou Linguagem de Extensão
Pequena, Fácil, Leve e Eficiente
" Lua foi criada por um time de desenvolvedores do Tecgraf da PUC-Rio, a princípio, para ser usada em um projeto da Petrobras. Devido à sua eficiência, clareza e facilidade de aprendizado, passou a ser usada em diversos ramos da programação, como no desenvolvimento de jogos (a LucasArts, por exemplo, usou a linguagem no jogo Escape from Monkey Island), controle de robôs, processamento de texto, etc. Também é freqüentemente usada como uma linguagem de propósito geral. "
Wikipédia - Lua (Linguagem de Programação)
O que eu preciso para aprender Lua e começar a produzir meus scripts?
Paciência (Embora seja de fácil aprendizado, você vai levar algum tempo para aprender a linguagem)
Humildade (Nunca se sinta o melhor, nem ridicularize aqueles que tiverem um conhecimento menor que o seu)
Vontade (Não adianta fazer as coisas sem o menor interesse, você não chegará a lugar nenhum sem vontade)
Criatividade (O principal para produzir um script é ter a idéia do que você vai fazer)
Conhecer a Lógica da Programação (Não se preocupe, eu vou ensinar a Lógica da Programação nas próximas aulas.)
Interpretador Lua (Para testar seus scripts, claro. Você pode usar o seu OTServer para testar, e ainda usar um interpretador Lua para testar seus scripts simples fora do OTServer)
Editor Lua (Não é realmente necessário, uma vez que você pode usar um editor de textos qualquer, como o bloco de notas, mas ter um Editor Lua vai ajudar muito, e alguns até vêm com um Interpretador Lua junto!)
Pagar uma taxa de R$ 700,00, afinal, não estou escrevendo estas aulas de graça! (OK, não precisa pagar nada, mas no mínimo poste seus scripts aqui e ajude a seção a crescer )
Onde posso encontrar um Interpretador e/ou Editor Lua?
Como interpretador (No caso de produzir scripts para Open Tibia Servers) você deve usar um servidor próprio, pessoal somente para testar os scripts que você fez, e pode usar também um Interpretador Lua geral, para testar seus scripts fora dos OTServers.
Como Editor Lua você pode usar qualquer editor de textos, mas eu recomendo usar um editor que seja próprio para a linguagem Lua. Existem dois editores que já vem com um Interpretador Lua "embutido". São eles: OTScript Live! [Download] e SciTE (Scintilla) [Removido].
Exercício-Tarefa:
Pesquise mais na internet sobre a linguagem Lua, Scripts, etc...
Creditos:
99%: Skyen Hasus
1% Vittu
#Aula 2 Logica da Programação
-
3visan recebeu reputação de Soleister em Free for use!Ótimo tópico, estarei fixando o tópico pois se trata de um conteúdo bom, e sempre há pessoas procurando sprites para usar em seus projetos, vou começar doando uma sprite antiga que fiz para um duelo, é uma demon sword.
-
3visan recebeu reputação de Calisto em [Aula 1] IntroduçãoIntrodução
Aula 1
O que é scripting?
Do modo mais simples possível: scripting é o ato de programar. O nome scripting vem do nome "script".
O que é um script?
De um modo geral, um script é um bloco de Código escrito em uma linguagem de programação interpretada, ou seja, ele precisa que alguma coisa leia ele e possa "traduzir" seu conteúdo. Lembre-se de que "script" não é um termo específico de Open Tibia Servers.
O que é uma linguagem de programação interpretada?
Os brasileiros falam português, ingleses falam inglês e chineses falam mandarim, e com isso o mundo é composto por várias línguas.
No mundo da programação não é diferente. Existem várias línguas que podem ser usadas, cada uma com uma característica e modo de escrever diferente (Assim como o português é diferente do inglês).
Entre estas linguagens, existem 2 tipos: as linguagens interpretadas e as linguagens compiladas (Não-interpretadas). Podemos fazer uma comparação tosca com a vida real: o português seria uma linguagem interpretada (Nosso cérebro precisa "traduzir" a mensagem), e os desenhos seriam a língua compilada (Nosso cérebro reconhece automaticamente a "mensagem" do desenho).
As linguagens compiladas são aquelas que não precisam ser lidas por nenhum programa, pois "conversam" diretamente com o computador, enquando a linguagem interpretada não consegue se comunicar com o computador, então a linguagem compilada recebe a mensagem do codigo interpretado e traduz numa linguagem que o computador entenda, dai a linguagem interpretada pode conversar com o computador (Desde que alguém traduza suas mensagens).
Voltando para a parte de Open Tibia Servers, a linguagem compilada é a linguagem usada no seu servidor: o .exe no Windows, por exemplo, e a linguagem interpretada são os scripts .lua. O seu servidor compilado vai ler os scripts .lua e traduzir o conteúdo deles para que o computador possa executar o que o script manda.
Se os scripts são escritos em linguagens interpretadas, qual é a linguagem dos script usados nos Open Tibia Servers?
Os Open Tibia Servers usam uma linguagem de programação (Interpretada) chamada Lua, que foi feita aqui no Brasil mesmo.
Características da linguagem de programação Lua:
Linguagem de Programação Interpretada
Linguagem de Programação Imperativa ou Programação Procedural
Linguagem de Scripts ou Linguagem de Extensão
Pequena, Fácil, Leve e Eficiente
" Lua foi criada por um time de desenvolvedores do Tecgraf da PUC-Rio, a princípio, para ser usada em um projeto da Petrobras. Devido à sua eficiência, clareza e facilidade de aprendizado, passou a ser usada em diversos ramos da programação, como no desenvolvimento de jogos (a LucasArts, por exemplo, usou a linguagem no jogo Escape from Monkey Island), controle de robôs, processamento de texto, etc. Também é freqüentemente usada como uma linguagem de propósito geral. "
Wikipédia - Lua (Linguagem de Programação)
O que eu preciso para aprender Lua e começar a produzir meus scripts?
Paciência (Embora seja de fácil aprendizado, você vai levar algum tempo para aprender a linguagem)
Humildade (Nunca se sinta o melhor, nem ridicularize aqueles que tiverem um conhecimento menor que o seu)
Vontade (Não adianta fazer as coisas sem o menor interesse, você não chegará a lugar nenhum sem vontade)
Criatividade (O principal para produzir um script é ter a idéia do que você vai fazer)
Conhecer a Lógica da Programação (Não se preocupe, eu vou ensinar a Lógica da Programação nas próximas aulas.)
Interpretador Lua (Para testar seus scripts, claro. Você pode usar o seu OTServer para testar, e ainda usar um interpretador Lua para testar seus scripts simples fora do OTServer)
Editor Lua (Não é realmente necessário, uma vez que você pode usar um editor de textos qualquer, como o bloco de notas, mas ter um Editor Lua vai ajudar muito, e alguns até vêm com um Interpretador Lua junto!)
Pagar uma taxa de R$ 700,00, afinal, não estou escrevendo estas aulas de graça! (OK, não precisa pagar nada, mas no mínimo poste seus scripts aqui e ajude a seção a crescer )
Onde posso encontrar um Interpretador e/ou Editor Lua?
Como interpretador (No caso de produzir scripts para Open Tibia Servers) você deve usar um servidor próprio, pessoal somente para testar os scripts que você fez, e pode usar também um Interpretador Lua geral, para testar seus scripts fora dos OTServers.
Como Editor Lua você pode usar qualquer editor de textos, mas eu recomendo usar um editor que seja próprio para a linguagem Lua. Existem dois editores que já vem com um Interpretador Lua "embutido". São eles: OTScript Live! [Download] e SciTE (Scintilla) [Removido].
Exercício-Tarefa:
Pesquise mais na internet sobre a linguagem Lua, Scripts, etc...
Creditos:
99%: Skyen Hasus
1% Vittu
#Aula 2 Logica da Programação
-
3visan recebeu reputação de liborio99 em [Aula 4] Operadores e BibliotecasOperadores Aritméticos e Bibliotecas
Aula 4
Na aula anterior vimos como chamar funções e conhecemos as funções print e type. Nesta aula apenas vou reforçar a aula anterior ensinando as funções mais básicas e usadas que são nativas da linguagem Lua, ou seja, não são funções criadas para Open Tibia Server, e sim funções prontas que já estão incluídas na linguagem Lua, e vou ensinar também os operadores aritméticos. Vamos começar com eles.
Os Operadores Aritméticos
OBS: Você pode fazer seus testes no editor e interpretador Lua usando a função print para exibir os resultados.
Enquanto você quiser mecher em Lua (Ou em qualquer outra linguagem de programação), você vai precisar fazer contas matemáticas, sejam elas contas simples como uma adição, ou até mesmo contas complexas, incluindo fórmulas e etc...
Os operadores aritméticos funcionam exatamente como na matemática que você está acostumado na escola. Os operadores aritméticos que você provavelmente conhece (A não ser que esteja usando fraldas) são:
Adição (+)
Subtração (-)
Multiplicação (*)
Divisão (/)
Você já pode começar a testá-los:
print(3+2) print(3-2) print(3*2) print(3/2) O resultado será: 5 1 6 1.5 OBS: Se este não for o resultado, procure a assistência técnica pois seu sistema operacional só pode ser pirateado... Existem mais 3 operadores aritméticos que você talvez não conheça. São eles: Módulo (%) Exponencição (^) Unário (-)
As Bibliotecas
Vimos na aula anterior que existem vários tipos de dados, como por exemplo, strings e números. Assim como estes tipos, existem bibliotecas (Conjuntos de funções) para manipular estes tipos. Vamos conhecer as funções mais básicas das bibliotecas mais usadas.
A Biblioteca Padrão:
A biblioteca padrão não contém funções para manipular especificamente um tipo de dado, e sim o ambiente de programação. Suas funções mais básica, importantes e mais usadas são:
Sintaxe: Modo correto de escrever o código.
OBS: O que estiver entre [ e ] são argumentos opcionais, ou seja, você pode defini-los ou não. Quando houver três pontos (...) significa que você pode enviar quantos argumentos desejar.
dofile(filename)
Abre o arquivo e o executa como um bloco de código Lua. Otima função para carregar bibliotecas criadas em Lua.
print(···)
Escreve uma ou mais frases no interpretador. Ótima para fazer testes. A função suporta todos os tipos de dados.
tonumber(value [, base])
Transforma um valor em número. Se não for possível converter, retorna 'nil'.
tostring(value)
Transforma um valor em string.
type(value)
Retorna o tipo de um valor.
Funções de bibliotecas padrões
A Biblioteca Math:
A biblioteca Math serve para manipular operações aritméticas, números, etc...
math.ceil(x)
Retorna um valor inteiro maior que x mais próximo de x. (Em outras palavras, arredonda para cima.)
math.floor(x)
Retorna um valor inteiro menor que x mais próximo de x. (Em outras palavras, arredonda para baixo.)
math.random([m [, n]])
Retorna um valor pseudo-randômico entre m e n baseado em uma semente (Um número que determina a sequência).
math.randomseed(value)
Altera a semente do pseudo-randomismo.
todas as funções de biblioteca math
A Biblioteca String:
A biblioteca string manipula strings...
string.gsub(s, pattern, repl [, n])
Procura na string 's' por valores iguais à string 'pattern' e substitui pela string 'repl'.
string.len(s)
Esta função retorna o tamanho da string 's'.
string.lower(s)
Retorna a string 's' com as letras em minúsculas.
string.upper(s)
Retorna a string 's' com as letras em maiúsculas.
string.rep(s, n)
Retorna a string 's' repetida 'n' vezes.
string.reverse(s)
Retorna a string 's' ao contrário.
string.sub(s, i [, j])
Retorna a parte da string 's' entre as posições i e j.
todas as funções da biblioteca string
A Biblioteca OS:
Esta biblioteca serve para pegar valores ou manipular o sistema operacional, como por exemplo, pegar a data.
os.clock()
Retorna o tempo de execução do script, em segundos...
os.date([format [, time]])
Retorna a data baseada no formato 'format'.
os.time([table])
Retorna um número correspondente à hora atual.
Todas as funções biblioteca OS
Vamos ver um por um: O Operador de Módulo (%): Este operador vai lhe dar o resto de uma divisão, por exemplo, o módulo de 3 por 2 é 1, pois 3 dividido por 2 dá 2 e sobra 1. print(3%2) 1 O Operador de Exponencição (^): Este operador vai lhe dar o valor de uma potência, por exemplo, a potência de 3 por 2 é 9, pois 3 elevado a 2 dá 9. print(3^2) O Operador Unário (-): Este operador vai lhe dar o inverso de um valor, por exemplo, o inverso de 3 é -3, pois 3 vezes -1 dá -3. print(-3) Prioridades Aritméticas (( e )): Existem também as prioridades aritméticas, que devem ser definidas com ( para iniciar e ) para finalizar. Por exemplo: print(3+3*3) print((3+3)*3)
-
3visan recebeu reputação de liborio99 em [Aula 3] Primeiros PassosPrimeiros Passos
Aula 3
Relembrando o que eu disse na primeira aula, você precisará de um interpretador Lua e é muito recomendado que possua também um bom editor com suporte à sintaxe Lua, então nosso primeiro passo será obter o editor e o interpretador.
As aulas serão voltadas ao scripting para Open Tibia Servers, então nada melhor do que um bom OTServer para testar seus scripts, mas ficar testando os scripts em um OTServer pode ser uma tarefa cansativa e demorada, então vamos usar também scripts fora de OTServers para praticar. Para isso, você pode fazer o download de qualquer um dos seguintes programas:
Editores + Interpretadores:
SciTE Scintilla [Avançado]
OTScript Live! [Recomendado]
Editores:
Notepad++
Interpretadores:
Lua [Oficial]
Depois que você tiver seu editor e interpretador Lua (Recomendo o OTScript Live!), instale ele. No caso do OTScript Live!, depois de descompactar, vá em "Help", no menu, e clique em "Register To Lua". Abrirá uma caixa confirmando a alteração, basta apertar "OK" e todos os seus scripts irão abrir com o OTScript Live!.
testando seus scripts!
No caso do SciTE, para testar o seu script você deve primeiro salvá-lo com a extensão Lua (*.lua). No caso do SciTE e do OTScript Live! você pode testar seu script apenas apertando F5, sendo que no OTScript Live! não é necessário salvar o script antes de testar.
Após pressionar F5, o SciTE irá abrir uma área de textos abaixo da área de edição com as informações do teste, e o OTScript Live! vai abrir uma janela.
Para testar se o seu SciTE ou OTScript Live! está funcionando, use o seguinte script:
print("Hello world!") Nas informações mostradas pelo interpretador deve estar escrito "Hello world!". Se aparecer, parabéns, você testou o seu primeiro script Lua...(Ou não >.<) O que o script fez? o0 Uma das coisas mais importantes nos scripts são as funções. Uma função é "um bloco de código previamente pronto", uma subrotina, que quando chamada executa esse bloco. Imagine as funções como um atalho para executar alguma coisa. Pode ser usada, por exemplo, para encurtar scripts que tenham alguma parte do codigo que se repita muitas vezes. Criando uma função você pode usar esse código que se repete muitas vezes somente uma vez (Dentro da função), então em vez de usar esse bloco várias vezes, você só precisaria chamar a função várias vezes. Você pode criar suas próprias funções, mas isso veremos mais para frente. Tudo o que importa agora é aprender a chamar funções. O "Nome da Função", na verdade, é o nome da variável em que está armazenada a função, mas não se preocupem com isto ainda... O "Nome da Função" é o nome que você deve chamar para que a função ocorra, pois há vária funções (Obviamente), então você deve especificar qual função quer chamar. É a mesma coisa do que ter 3 pessoas. Quando quiser chamar uma das pessoas, deve dizer o nome dela. Os argumentos são as "Respostas" para as "Perguntas" da função chamada. A maioria das funções faz "perguntas". No caso da função "print", ela nos "perguntou" o que queriamos escrever na tela, e "respondemos": "Hello world!". É importante lembrar que cada pergunta deve ser respondida adequadamente, por exemplo, se alguém te pergunta: "Que horas são?" você não pode responder: "Sim.". A mesma coisa acontece com as funções, você deve responder exatamente o que ela está perguntando. Outra observação importante é que você deve responder as perguntas da função na ordem em que foram perguntadas. Se a pergunta nº 1 for "Que horas são?" e a nº 2 for "Quer um biscoito?", você deve responder respectivamente que horas são e se você quer um biscoito. OBS: Algumas funções fazem "perguntas" opcionais, ou seja, você pode ou não responder. Se você não "responder", a própria função atribuirá um valor padrão para a resposta. Os parâmetros são simplesmente o conjunto de todos os argumentos. OBS: Todos os argumentos (Respostas) do parâmetro devem estar entre parênteses e ser separados por vírgulas! Tipos de valores! Bem, como eu disse, cada resposta deve seguir o tipo da pergunta, então vou citar aqui os tipos destes valores. OBS: Existe uma função para descobrir o tipo de cada valor! Esta função é a função type(valor)... Numbers Como o nome diz, numbers são números, não há muito o que falar sobre eles... Exemplo: print(1) print(2) print(3) OBS: A função print aceita todos os tipos como resposta. Strings As strings devem iniciar com um símbolo especial e deve terminar com o mesmo caractere que foi usado para iniciar a string. Esses símbolos são: Apóstrofo: Começa com ' e termina com '. Aspas: Começa com " e termina com ". Colchete-Colchete: Começa com [[ e termina com ]]. Colchete-Igual-Igual-Colchete: Começa com [==[ e termina com ]==]. As strings são conjuntos de caracteres, como letras, números (Não são numbers, pois se houver um número entre os símbolos especiais será tomado como string!!!), acentos, espaços, etc... Se você quiser escrever uma frase na tela, por exemplo, não pode deixá-la solta pelo script. Esta frase deve ser uma string, ou o script dará erro. Exemplo: print('Apóstrofos') print("Aspas") print([[Colchete-Colchete]]) print([==[Colchete-Igual-Igual-Colchete]==]) OBS: 1 << Isto é um number. "1" << Isto é uma string. Booleanos Os booleanos podem assumir apenas dois valores: true e false. true: Valor verdadeiro. false: Valor falso. OBS: Os booleanos podem ser complicados de entender no começo, mas com o tempo você acostuma. Não se preocupe com eles agora... Exemplo: print(true) print(false) print(nil) Functions Exatamente o que o nome diz: é o que estamos vendo agora. Functions são nada mais nada menos do que funções. Exemplo: print(function() end) OBS: Não se preocupe com isso ainda! Tables ou Arrays São tabelas, ou seja, armazenam mais do que um valor dentro de uma "caixa". Tabelas podem armazenar outras tabelas e todos os valores dentro de uma tabela possuem um identificador, chamado "index" (índice). Tabelas começam com o símbolo { (Chave) e terminam com o símbolo } (Chave). Exemplo: print({}) Userdata Lua é uma linguagem de programação criada para dar extensão à linguagem de programação C e C++. Userdatas são ponteiros que indicam valores em C ou C++. Não se preocupe com eles. Nil Nil simboliza um valor nulo. Não deixa de ser um valor, mas é um valor sem conteúdo. Exemplo: print(nil) As funções retornam! Toda função retorna um ou mais valores, nem que sejam valores nulos (nil), portanto você pode usar uma função dentro do print para escrever os valores que a função retornar! Vamos usar como exemplo a função type(valor), que vai nos retornar uma string com o tipo do valor. Exemplo: print(type(1))
O exemplo acima vai escrever em sua tela a frase: "Number", pois 1 é um number!
Exercícios:
Usando a função print para escrever na tela e type para pegar o tipo de algum valor, obtenha as seguintes frases na tela:
Resposta no spoiler abaixo, tente fazer antes de ver.
Creditos:
99% Skyen Hasus
1% Vittu
Aula 4 Operadores e biblioteca
-
3visan recebeu reputação de liborio99 em [Aula 2] Lógica da Programação#Aula 1 Introdução
Lógica da Programação
Aula 2
O que é a Lógica da Programação?
Bem, tudo o que é escrito em alguma linguagem de programação deve seguir uma lógica para poder funcionar. Vamos pegar um exemplo simples e curto: Um script de SD. (Sudden Death Rune)
Quando o script de SD for chamado (Alguém usou a SD), ela segue passos básicos, que é basicamente a execução dela. Primeiro o script vai verificar se quem usou a SD possui nível, magic level, etc... suficiente para poder usar a SD. Se não possuir opa! Ela vai enviar uma mensagem de erro ao jogador, um efeito de fumaça e vai encerrar a execução. Caso contrário: se for um jogador com todos os requerimentos básicos para usar uma SD, então o script vai verificar se o alvo é um Player ou Monstro. Se não for vai enviar uma mensagem de erro, efeito, e vai parar de executar. Se for um monstro ou player, então o script fará um efeito da SD atingindo o alvo, toda aquela piromancia louca, e então vai tirar o devido dano do jogador.
Um pouco cansativo de ler tudo isso, mas observe o exemplo abaixo:
Quando uma SD for usada, então faça: Verifique se o jogador que usou a SD possui nível igual ou maior que 45, e se possui nível mágico maior ou igual a 15. Se possuir, faça: Se o alvo da SD for um Monstro ou Jogador, então faça: Calcule o dano que causará ao alvo. Remova uma carga da SD. Execute o efeito de SD. Calcule o dano que causará ao alvo e execute-o no alvo, tirando a vida dele ou mana, no caso de o alvo estiver usando o Magic Shield (Utamo Vita). Mas se o alvo da SD não for um Monstro ou Jogador, então faça: Envie uma mensagem de erro ao jogador. Envie um efeito de fumaça na posição do jogador. Aqui termina a verificação se o alvo da SD é um Monstro ou Jogador, ou nenhum dos dois. Mas se o jogador não possuir estes requerimentos, então faça: Envie uma mensagem de erro ao jogador. Envie um efeito de fumaça na posição do jogador. Aqui termina a verificação se o jogador possui ou não os requerimentos. Aqui termina a execução da SD. Agora, depois deste algoritmo, talvez tenha ficado mais claro como os programas de computador funcionam. Tudo não passa de um processo lógico, onde a linguagem de programação só serve como uma "máscara" para que o programador escreva o código seguindo esta lógica, por isso é ultra importante saber a lógica da programação antes de começar a programar. O que é um Algoritmo? O "código" que eu escrevi acima (Dentro da caixa de texto) representando o uso da SD foi um algoritmo. Os algoritmos são formas de representar a lógica seguida pelo programa. São passos que o programa segue para atingir determinado objetivo ou em outras palavras, completar uma tarefa (No caso da SD, matar ou não o alvo, ou enviar uma mensagem de erro). Um exemplo de algoritmo são as operações matemáticas, como somar, dividir, multiplicar, subtrair... Quando você soma 2 mais 2, você está executando um algoritmo para ele atingir o objetivo (O resultado!!), que é 4. Um programa ou script é basicamente a escrita dos algoritmos em uma linguagem de programação que é executada pelo computador de forma lógica. Alguns exemplos de algoritmos para representar ações da vida real: Tomar Banho: Código: Ir ao banheiro Tentar ligar o registro Verificar se o chuveiro ligou, se ligou então faça: Se molhe Se ensaboe Se lave Se enxague Desligue o registro Se enchugue Verificar se tem vontade de colocar uma roupa, se tiver, então faça: Coloque uma roupa Mas se não tiver vontade de colocar uma roupa, então faça: Saia pelado pela rua gritando: "Preciso de um penico!!" Finalize a verificação se tem vontade de colocar uma roupa ou não Mas se o chuveiro não ligar, então faça: Chame um técnico e arrume o problema Finalize a verificação se o chuveiro funciona ou não Finalize a execução do banho Comer Pizza: Convidar os amigos e amigas Ir até a pizzaria Se houver uma menina (Ou menino) no grupo que esteja a fim de você e você não esteja a fim dela ou dele, então faça: Peça pizza de alho, cebola e atum Mas se houver uma menina (Ou menino) no grupo que esteja a fim de você e você esteja a fim dela ou dele, então faça: Lamente-se por não ter ido a um cinema Mas se não houver ninguém a fim de você, então faça: Peça qualquer pizza Finalize a verificação se há ou não uma menina (Ou menino) no grupo que esteja a fim de você e você esteja ou não a fim dela ou dele Peça uma coca cola Diga ao garçom que prefere gelada (Ciclo) Enquanto não for a hora de pagar a conta, faça: Coma a pizza Peide Diga que foi mal Tome um gole da coca Arrote Diga que é natural Finalize se for a hora de pagar a conta ou volte ao começo do ciclo se ainda não for Se você tiver dinheiro suficiente, então faça: Diga aos seus amigos que não tem dinheiro e pague só metade Mas se você não tiver dinheiro, então faça: Diga aos seus amigos que não tem dinheiro e corra para não apanhar Finalize a verificação se você tem dinheiro ou não Vá embora Finalize a execução de comer pizza
Esta aula foi curta pois eu prefiro lhes ensinar as estruturas lógicas conforme ensino as mesmas em Lua, assim trabalhando a lógica e Lua ao mesmo tempo. Primeiro ensino como funciona a estrutura na Lógica e depois ensino como aplicar em Lua.
Exercícios-Tarefa:
1. Monte o algoritmo de um script de "Shovel (Pá)".
2. Monte o algoritmo de um script de "Pedra que troca sexo".
3. Monte o algoritmo de "Ir ao cinema".
4. Monte o algoritmo de "Fazer bolo".
Resposta1:
verifique se o alvo da pá é um buraco que pode ser aberto
, se for, então faça: Verifique se o buraco está aberto,
se não estiver, então faça: Transforme o ID do buraco fechado para o ID de um buraco aberto
Mas se o buraco estiver aberto, então faça: Envie uma mensagem de erro ao jogador dizendo: "This hole is already opened."
Envie um efeito de fumaça na posição do jogador Finalize a verificação se o buraco está aberto
Mas se não for, então faça: Envie uma mensagem de erro ao jogador dizendo: "Sorry, this is not possible." Envie um efeito de fumaça na posição do jogador Finalize a verificação se é ou não um buraco que pode ser aberto.
Resposta2:
Verifique se quem clicou na pedra é um jogador
, se for, então faça:
Verifique se o jogador é mulher
, se for, então faça:
Transforme o sexo dele em homem
Execute um efeito de magia azul
na posição do jogador Envie uma mensagem ao jogador afirmando que o sexo dele foi trocado
Mas se o jogador é homem, então faça:
Transforme o sexo dele em mulher
Execute um efeito de magia azul na posição do jogador
Envie uma mensagem ao jogador afirmando que o sexo dele foi trocado
Finalize a verificação se o jogador é mulher ou homem
Finalize a verificação se quem clicou na pedra é um jogador
Resposta3:
Se arrume
Tome banho
Dirija seu carro até o cinema
Pague o ingresso
Assista o filme
Volte para casa
Resposta4:
AQUI
Sei que isso é meio estranho mas acredite ira ajudar sim.
Creditos:
99% Skyen Hasus
1% Vittu
#Aula 3 Primeiros passos
-
3visan recebeu reputação de liborio99 em [Aula 1] IntroduçãoIntrodução
Aula 1
O que é scripting?
Do modo mais simples possível: scripting é o ato de programar. O nome scripting vem do nome "script".
O que é um script?
De um modo geral, um script é um bloco de Código escrito em uma linguagem de programação interpretada, ou seja, ele precisa que alguma coisa leia ele e possa "traduzir" seu conteúdo. Lembre-se de que "script" não é um termo específico de Open Tibia Servers.
O que é uma linguagem de programação interpretada?
Os brasileiros falam português, ingleses falam inglês e chineses falam mandarim, e com isso o mundo é composto por várias línguas.
No mundo da programação não é diferente. Existem várias línguas que podem ser usadas, cada uma com uma característica e modo de escrever diferente (Assim como o português é diferente do inglês).
Entre estas linguagens, existem 2 tipos: as linguagens interpretadas e as linguagens compiladas (Não-interpretadas). Podemos fazer uma comparação tosca com a vida real: o português seria uma linguagem interpretada (Nosso cérebro precisa "traduzir" a mensagem), e os desenhos seriam a língua compilada (Nosso cérebro reconhece automaticamente a "mensagem" do desenho).
As linguagens compiladas são aquelas que não precisam ser lidas por nenhum programa, pois "conversam" diretamente com o computador, enquando a linguagem interpretada não consegue se comunicar com o computador, então a linguagem compilada recebe a mensagem do codigo interpretado e traduz numa linguagem que o computador entenda, dai a linguagem interpretada pode conversar com o computador (Desde que alguém traduza suas mensagens).
Voltando para a parte de Open Tibia Servers, a linguagem compilada é a linguagem usada no seu servidor: o .exe no Windows, por exemplo, e a linguagem interpretada são os scripts .lua. O seu servidor compilado vai ler os scripts .lua e traduzir o conteúdo deles para que o computador possa executar o que o script manda.
Se os scripts são escritos em linguagens interpretadas, qual é a linguagem dos script usados nos Open Tibia Servers?
Os Open Tibia Servers usam uma linguagem de programação (Interpretada) chamada Lua, que foi feita aqui no Brasil mesmo.
Características da linguagem de programação Lua:
Linguagem de Programação Interpretada
Linguagem de Programação Imperativa ou Programação Procedural
Linguagem de Scripts ou Linguagem de Extensão
Pequena, Fácil, Leve e Eficiente
" Lua foi criada por um time de desenvolvedores do Tecgraf da PUC-Rio, a princípio, para ser usada em um projeto da Petrobras. Devido à sua eficiência, clareza e facilidade de aprendizado, passou a ser usada em diversos ramos da programação, como no desenvolvimento de jogos (a LucasArts, por exemplo, usou a linguagem no jogo Escape from Monkey Island), controle de robôs, processamento de texto, etc. Também é freqüentemente usada como uma linguagem de propósito geral. "
Wikipédia - Lua (Linguagem de Programação)
O que eu preciso para aprender Lua e começar a produzir meus scripts?
Paciência (Embora seja de fácil aprendizado, você vai levar algum tempo para aprender a linguagem)
Humildade (Nunca se sinta o melhor, nem ridicularize aqueles que tiverem um conhecimento menor que o seu)
Vontade (Não adianta fazer as coisas sem o menor interesse, você não chegará a lugar nenhum sem vontade)
Criatividade (O principal para produzir um script é ter a idéia do que você vai fazer)
Conhecer a Lógica da Programação (Não se preocupe, eu vou ensinar a Lógica da Programação nas próximas aulas.)
Interpretador Lua (Para testar seus scripts, claro. Você pode usar o seu OTServer para testar, e ainda usar um interpretador Lua para testar seus scripts simples fora do OTServer)
Editor Lua (Não é realmente necessário, uma vez que você pode usar um editor de textos qualquer, como o bloco de notas, mas ter um Editor Lua vai ajudar muito, e alguns até vêm com um Interpretador Lua junto!)
Pagar uma taxa de R$ 700,00, afinal, não estou escrevendo estas aulas de graça! (OK, não precisa pagar nada, mas no mínimo poste seus scripts aqui e ajude a seção a crescer )
Onde posso encontrar um Interpretador e/ou Editor Lua?
Como interpretador (No caso de produzir scripts para Open Tibia Servers) você deve usar um servidor próprio, pessoal somente para testar os scripts que você fez, e pode usar também um Interpretador Lua geral, para testar seus scripts fora dos OTServers.
Como Editor Lua você pode usar qualquer editor de textos, mas eu recomendo usar um editor que seja próprio para a linguagem Lua. Existem dois editores que já vem com um Interpretador Lua "embutido". São eles: OTScript Live! [Download] e SciTE (Scintilla) [Removido].
Exercício-Tarefa:
Pesquise mais na internet sobre a linguagem Lua, Scripts, etc...
Creditos:
99%: Skyen Hasus
1% Vittu
#Aula 2 Logica da Programação
-
3visan recebeu reputação de Mathias Kenfi em [Aula 1] IntroduçãoIntrodução
Aula 1
O que é scripting?
Do modo mais simples possível: scripting é o ato de programar. O nome scripting vem do nome "script".
O que é um script?
De um modo geral, um script é um bloco de Código escrito em uma linguagem de programação interpretada, ou seja, ele precisa que alguma coisa leia ele e possa "traduzir" seu conteúdo. Lembre-se de que "script" não é um termo específico de Open Tibia Servers.
O que é uma linguagem de programação interpretada?
Os brasileiros falam português, ingleses falam inglês e chineses falam mandarim, e com isso o mundo é composto por várias línguas.
No mundo da programação não é diferente. Existem várias línguas que podem ser usadas, cada uma com uma característica e modo de escrever diferente (Assim como o português é diferente do inglês).
Entre estas linguagens, existem 2 tipos: as linguagens interpretadas e as linguagens compiladas (Não-interpretadas). Podemos fazer uma comparação tosca com a vida real: o português seria uma linguagem interpretada (Nosso cérebro precisa "traduzir" a mensagem), e os desenhos seriam a língua compilada (Nosso cérebro reconhece automaticamente a "mensagem" do desenho).
As linguagens compiladas são aquelas que não precisam ser lidas por nenhum programa, pois "conversam" diretamente com o computador, enquando a linguagem interpretada não consegue se comunicar com o computador, então a linguagem compilada recebe a mensagem do codigo interpretado e traduz numa linguagem que o computador entenda, dai a linguagem interpretada pode conversar com o computador (Desde que alguém traduza suas mensagens).
Voltando para a parte de Open Tibia Servers, a linguagem compilada é a linguagem usada no seu servidor: o .exe no Windows, por exemplo, e a linguagem interpretada são os scripts .lua. O seu servidor compilado vai ler os scripts .lua e traduzir o conteúdo deles para que o computador possa executar o que o script manda.
Se os scripts são escritos em linguagens interpretadas, qual é a linguagem dos script usados nos Open Tibia Servers?
Os Open Tibia Servers usam uma linguagem de programação (Interpretada) chamada Lua, que foi feita aqui no Brasil mesmo.
Características da linguagem de programação Lua:
Linguagem de Programação Interpretada
Linguagem de Programação Imperativa ou Programação Procedural
Linguagem de Scripts ou Linguagem de Extensão
Pequena, Fácil, Leve e Eficiente
" Lua foi criada por um time de desenvolvedores do Tecgraf da PUC-Rio, a princípio, para ser usada em um projeto da Petrobras. Devido à sua eficiência, clareza e facilidade de aprendizado, passou a ser usada em diversos ramos da programação, como no desenvolvimento de jogos (a LucasArts, por exemplo, usou a linguagem no jogo Escape from Monkey Island), controle de robôs, processamento de texto, etc. Também é freqüentemente usada como uma linguagem de propósito geral. "
Wikipédia - Lua (Linguagem de Programação)
O que eu preciso para aprender Lua e começar a produzir meus scripts?
Paciência (Embora seja de fácil aprendizado, você vai levar algum tempo para aprender a linguagem)
Humildade (Nunca se sinta o melhor, nem ridicularize aqueles que tiverem um conhecimento menor que o seu)
Vontade (Não adianta fazer as coisas sem o menor interesse, você não chegará a lugar nenhum sem vontade)
Criatividade (O principal para produzir um script é ter a idéia do que você vai fazer)
Conhecer a Lógica da Programação (Não se preocupe, eu vou ensinar a Lógica da Programação nas próximas aulas.)
Interpretador Lua (Para testar seus scripts, claro. Você pode usar o seu OTServer para testar, e ainda usar um interpretador Lua para testar seus scripts simples fora do OTServer)
Editor Lua (Não é realmente necessário, uma vez que você pode usar um editor de textos qualquer, como o bloco de notas, mas ter um Editor Lua vai ajudar muito, e alguns até vêm com um Interpretador Lua junto!)
Pagar uma taxa de R$ 700,00, afinal, não estou escrevendo estas aulas de graça! (OK, não precisa pagar nada, mas no mínimo poste seus scripts aqui e ajude a seção a crescer )
Onde posso encontrar um Interpretador e/ou Editor Lua?
Como interpretador (No caso de produzir scripts para Open Tibia Servers) você deve usar um servidor próprio, pessoal somente para testar os scripts que você fez, e pode usar também um Interpretador Lua geral, para testar seus scripts fora dos OTServers.
Como Editor Lua você pode usar qualquer editor de textos, mas eu recomendo usar um editor que seja próprio para a linguagem Lua. Existem dois editores que já vem com um Interpretador Lua "embutido". São eles: OTScript Live! [Download] e SciTE (Scintilla) [Removido].
Exercício-Tarefa:
Pesquise mais na internet sobre a linguagem Lua, Scripts, etc...
Creditos:
99%: Skyen Hasus
1% Vittu
#Aula 2 Logica da Programação
-
3visan recebeu reputação de Hawk213 em [Aula 3] Primeiros PassosPrimeiros Passos
Aula 3
Relembrando o que eu disse na primeira aula, você precisará de um interpretador Lua e é muito recomendado que possua também um bom editor com suporte à sintaxe Lua, então nosso primeiro passo será obter o editor e o interpretador.
As aulas serão voltadas ao scripting para Open Tibia Servers, então nada melhor do que um bom OTServer para testar seus scripts, mas ficar testando os scripts em um OTServer pode ser uma tarefa cansativa e demorada, então vamos usar também scripts fora de OTServers para praticar. Para isso, você pode fazer o download de qualquer um dos seguintes programas:
Editores + Interpretadores:
SciTE Scintilla [Avançado]
OTScript Live! [Recomendado]
Editores:
Notepad++
Interpretadores:
Lua [Oficial]
Depois que você tiver seu editor e interpretador Lua (Recomendo o OTScript Live!), instale ele. No caso do OTScript Live!, depois de descompactar, vá em "Help", no menu, e clique em "Register To Lua". Abrirá uma caixa confirmando a alteração, basta apertar "OK" e todos os seus scripts irão abrir com o OTScript Live!.
testando seus scripts!
No caso do SciTE, para testar o seu script você deve primeiro salvá-lo com a extensão Lua (*.lua). No caso do SciTE e do OTScript Live! você pode testar seu script apenas apertando F5, sendo que no OTScript Live! não é necessário salvar o script antes de testar.
Após pressionar F5, o SciTE irá abrir uma área de textos abaixo da área de edição com as informações do teste, e o OTScript Live! vai abrir uma janela.
Para testar se o seu SciTE ou OTScript Live! está funcionando, use o seguinte script:
print("Hello world!") Nas informações mostradas pelo interpretador deve estar escrito "Hello world!". Se aparecer, parabéns, você testou o seu primeiro script Lua...(Ou não >.<) O que o script fez? o0 Uma das coisas mais importantes nos scripts são as funções. Uma função é "um bloco de código previamente pronto", uma subrotina, que quando chamada executa esse bloco. Imagine as funções como um atalho para executar alguma coisa. Pode ser usada, por exemplo, para encurtar scripts que tenham alguma parte do codigo que se repita muitas vezes. Criando uma função você pode usar esse código que se repete muitas vezes somente uma vez (Dentro da função), então em vez de usar esse bloco várias vezes, você só precisaria chamar a função várias vezes. Você pode criar suas próprias funções, mas isso veremos mais para frente. Tudo o que importa agora é aprender a chamar funções. O "Nome da Função", na verdade, é o nome da variável em que está armazenada a função, mas não se preocupem com isto ainda... O "Nome da Função" é o nome que você deve chamar para que a função ocorra, pois há vária funções (Obviamente), então você deve especificar qual função quer chamar. É a mesma coisa do que ter 3 pessoas. Quando quiser chamar uma das pessoas, deve dizer o nome dela. Os argumentos são as "Respostas" para as "Perguntas" da função chamada. A maioria das funções faz "perguntas". No caso da função "print", ela nos "perguntou" o que queriamos escrever na tela, e "respondemos": "Hello world!". É importante lembrar que cada pergunta deve ser respondida adequadamente, por exemplo, se alguém te pergunta: "Que horas são?" você não pode responder: "Sim.". A mesma coisa acontece com as funções, você deve responder exatamente o que ela está perguntando. Outra observação importante é que você deve responder as perguntas da função na ordem em que foram perguntadas. Se a pergunta nº 1 for "Que horas são?" e a nº 2 for "Quer um biscoito?", você deve responder respectivamente que horas são e se você quer um biscoito. OBS: Algumas funções fazem "perguntas" opcionais, ou seja, você pode ou não responder. Se você não "responder", a própria função atribuirá um valor padrão para a resposta. Os parâmetros são simplesmente o conjunto de todos os argumentos. OBS: Todos os argumentos (Respostas) do parâmetro devem estar entre parênteses e ser separados por vírgulas! Tipos de valores! Bem, como eu disse, cada resposta deve seguir o tipo da pergunta, então vou citar aqui os tipos destes valores. OBS: Existe uma função para descobrir o tipo de cada valor! Esta função é a função type(valor)... Numbers Como o nome diz, numbers são números, não há muito o que falar sobre eles... Exemplo: print(1) print(2) print(3) OBS: A função print aceita todos os tipos como resposta. Strings As strings devem iniciar com um símbolo especial e deve terminar com o mesmo caractere que foi usado para iniciar a string. Esses símbolos são: Apóstrofo: Começa com ' e termina com '. Aspas: Começa com " e termina com ". Colchete-Colchete: Começa com [[ e termina com ]]. Colchete-Igual-Igual-Colchete: Começa com [==[ e termina com ]==]. As strings são conjuntos de caracteres, como letras, números (Não são numbers, pois se houver um número entre os símbolos especiais será tomado como string!!!), acentos, espaços, etc... Se você quiser escrever uma frase na tela, por exemplo, não pode deixá-la solta pelo script. Esta frase deve ser uma string, ou o script dará erro. Exemplo: print('Apóstrofos') print("Aspas") print([[Colchete-Colchete]]) print([==[Colchete-Igual-Igual-Colchete]==]) OBS: 1 << Isto é um number. "1" << Isto é uma string. Booleanos Os booleanos podem assumir apenas dois valores: true e false. true: Valor verdadeiro. false: Valor falso. OBS: Os booleanos podem ser complicados de entender no começo, mas com o tempo você acostuma. Não se preocupe com eles agora... Exemplo: print(true) print(false) print(nil) Functions Exatamente o que o nome diz: é o que estamos vendo agora. Functions são nada mais nada menos do que funções. Exemplo: print(function() end) OBS: Não se preocupe com isso ainda! Tables ou Arrays São tabelas, ou seja, armazenam mais do que um valor dentro de uma "caixa". Tabelas podem armazenar outras tabelas e todos os valores dentro de uma tabela possuem um identificador, chamado "index" (índice). Tabelas começam com o símbolo { (Chave) e terminam com o símbolo } (Chave). Exemplo: print({}) Userdata Lua é uma linguagem de programação criada para dar extensão à linguagem de programação C e C++. Userdatas são ponteiros que indicam valores em C ou C++. Não se preocupe com eles. Nil Nil simboliza um valor nulo. Não deixa de ser um valor, mas é um valor sem conteúdo. Exemplo: print(nil) As funções retornam! Toda função retorna um ou mais valores, nem que sejam valores nulos (nil), portanto você pode usar uma função dentro do print para escrever os valores que a função retornar! Vamos usar como exemplo a função type(valor), que vai nos retornar uma string com o tipo do valor. Exemplo: print(type(1))
O exemplo acima vai escrever em sua tela a frase: "Number", pois 1 é um number!
Exercícios:
Usando a função print para escrever na tela e type para pegar o tipo de algum valor, obtenha as seguintes frases na tela:
Resposta no spoiler abaixo, tente fazer antes de ver.
Creditos:
99% Skyen Hasus
1% Vittu
Aula 4 Operadores e biblioteca
-
3visan recebeu reputação de
Nazoem [Aula 3] Primeiros PassosPrimeiros Passos
Aula 3
Relembrando o que eu disse na primeira aula, você precisará de um interpretador Lua e é muito recomendado que possua também um bom editor com suporte à sintaxe Lua, então nosso primeiro passo será obter o editor e o interpretador.
As aulas serão voltadas ao scripting para Open Tibia Servers, então nada melhor do que um bom OTServer para testar seus scripts, mas ficar testando os scripts em um OTServer pode ser uma tarefa cansativa e demorada, então vamos usar também scripts fora de OTServers para praticar. Para isso, você pode fazer o download de qualquer um dos seguintes programas:
Editores + Interpretadores:
SciTE Scintilla [Avançado]
OTScript Live! [Recomendado]
Editores:
Notepad++
Interpretadores:
Lua [Oficial]
Depois que você tiver seu editor e interpretador Lua (Recomendo o OTScript Live!), instale ele. No caso do OTScript Live!, depois de descompactar, vá em "Help", no menu, e clique em "Register To Lua". Abrirá uma caixa confirmando a alteração, basta apertar "OK" e todos os seus scripts irão abrir com o OTScript Live!.
testando seus scripts!
No caso do SciTE, para testar o seu script você deve primeiro salvá-lo com a extensão Lua (*.lua). No caso do SciTE e do OTScript Live! você pode testar seu script apenas apertando F5, sendo que no OTScript Live! não é necessário salvar o script antes de testar.
Após pressionar F5, o SciTE irá abrir uma área de textos abaixo da área de edição com as informações do teste, e o OTScript Live! vai abrir uma janela.
Para testar se o seu SciTE ou OTScript Live! está funcionando, use o seguinte script:
print("Hello world!") Nas informações mostradas pelo interpretador deve estar escrito "Hello world!". Se aparecer, parabéns, você testou o seu primeiro script Lua...(Ou não >.<) O que o script fez? o0 Uma das coisas mais importantes nos scripts são as funções. Uma função é "um bloco de código previamente pronto", uma subrotina, que quando chamada executa esse bloco. Imagine as funções como um atalho para executar alguma coisa. Pode ser usada, por exemplo, para encurtar scripts que tenham alguma parte do codigo que se repita muitas vezes. Criando uma função você pode usar esse código que se repete muitas vezes somente uma vez (Dentro da função), então em vez de usar esse bloco várias vezes, você só precisaria chamar a função várias vezes. Você pode criar suas próprias funções, mas isso veremos mais para frente. Tudo o que importa agora é aprender a chamar funções. O "Nome da Função", na verdade, é o nome da variável em que está armazenada a função, mas não se preocupem com isto ainda... O "Nome da Função" é o nome que você deve chamar para que a função ocorra, pois há vária funções (Obviamente), então você deve especificar qual função quer chamar. É a mesma coisa do que ter 3 pessoas. Quando quiser chamar uma das pessoas, deve dizer o nome dela. Os argumentos são as "Respostas" para as "Perguntas" da função chamada. A maioria das funções faz "perguntas". No caso da função "print", ela nos "perguntou" o que queriamos escrever na tela, e "respondemos": "Hello world!". É importante lembrar que cada pergunta deve ser respondida adequadamente, por exemplo, se alguém te pergunta: "Que horas são?" você não pode responder: "Sim.". A mesma coisa acontece com as funções, você deve responder exatamente o que ela está perguntando. Outra observação importante é que você deve responder as perguntas da função na ordem em que foram perguntadas. Se a pergunta nº 1 for "Que horas são?" e a nº 2 for "Quer um biscoito?", você deve responder respectivamente que horas são e se você quer um biscoito. OBS: Algumas funções fazem "perguntas" opcionais, ou seja, você pode ou não responder. Se você não "responder", a própria função atribuirá um valor padrão para a resposta. Os parâmetros são simplesmente o conjunto de todos os argumentos. OBS: Todos os argumentos (Respostas) do parâmetro devem estar entre parênteses e ser separados por vírgulas! Tipos de valores! Bem, como eu disse, cada resposta deve seguir o tipo da pergunta, então vou citar aqui os tipos destes valores. OBS: Existe uma função para descobrir o tipo de cada valor! Esta função é a função type(valor)... Numbers Como o nome diz, numbers são números, não há muito o que falar sobre eles... Exemplo: print(1) print(2) print(3) OBS: A função print aceita todos os tipos como resposta. Strings As strings devem iniciar com um símbolo especial e deve terminar com o mesmo caractere que foi usado para iniciar a string. Esses símbolos são: Apóstrofo: Começa com ' e termina com '. Aspas: Começa com " e termina com ". Colchete-Colchete: Começa com [[ e termina com ]]. Colchete-Igual-Igual-Colchete: Começa com [==[ e termina com ]==]. As strings são conjuntos de caracteres, como letras, números (Não são numbers, pois se houver um número entre os símbolos especiais será tomado como string!!!), acentos, espaços, etc... Se você quiser escrever uma frase na tela, por exemplo, não pode deixá-la solta pelo script. Esta frase deve ser uma string, ou o script dará erro. Exemplo: print('Apóstrofos') print("Aspas") print([[Colchete-Colchete]]) print([==[Colchete-Igual-Igual-Colchete]==]) OBS: 1 << Isto é um number. "1" << Isto é uma string. Booleanos Os booleanos podem assumir apenas dois valores: true e false. true: Valor verdadeiro. false: Valor falso. OBS: Os booleanos podem ser complicados de entender no começo, mas com o tempo você acostuma. Não se preocupe com eles agora... Exemplo: print(true) print(false) print(nil) Functions Exatamente o que o nome diz: é o que estamos vendo agora. Functions são nada mais nada menos do que funções. Exemplo: print(function() end) OBS: Não se preocupe com isso ainda! Tables ou Arrays São tabelas, ou seja, armazenam mais do que um valor dentro de uma "caixa". Tabelas podem armazenar outras tabelas e todos os valores dentro de uma tabela possuem um identificador, chamado "index" (índice). Tabelas começam com o símbolo { (Chave) e terminam com o símbolo } (Chave). Exemplo: print({}) Userdata Lua é uma linguagem de programação criada para dar extensão à linguagem de programação C e C++. Userdatas são ponteiros que indicam valores em C ou C++. Não se preocupe com eles. Nil Nil simboliza um valor nulo. Não deixa de ser um valor, mas é um valor sem conteúdo. Exemplo: print(nil) As funções retornam! Toda função retorna um ou mais valores, nem que sejam valores nulos (nil), portanto você pode usar uma função dentro do print para escrever os valores que a função retornar! Vamos usar como exemplo a função type(valor), que vai nos retornar uma string com o tipo do valor. Exemplo: print(type(1))
O exemplo acima vai escrever em sua tela a frase: "Number", pois 1 é um number!
Exercícios:
Usando a função print para escrever na tela e type para pegar o tipo de algum valor, obtenha as seguintes frases na tela:
Resposta no spoiler abaixo, tente fazer antes de ver.
Creditos:
99% Skyen Hasus
1% Vittu
Aula 4 Operadores e biblioteca
-
3visan recebeu reputação de Guilherme Ortega em [Aula 3] Primeiros PassosPrimeiros Passos
Aula 3
Relembrando o que eu disse na primeira aula, você precisará de um interpretador Lua e é muito recomendado que possua também um bom editor com suporte à sintaxe Lua, então nosso primeiro passo será obter o editor e o interpretador.
As aulas serão voltadas ao scripting para Open Tibia Servers, então nada melhor do que um bom OTServer para testar seus scripts, mas ficar testando os scripts em um OTServer pode ser uma tarefa cansativa e demorada, então vamos usar também scripts fora de OTServers para praticar. Para isso, você pode fazer o download de qualquer um dos seguintes programas:
Editores + Interpretadores:
SciTE Scintilla [Avançado]
OTScript Live! [Recomendado]
Editores:
Notepad++
Interpretadores:
Lua [Oficial]
Depois que você tiver seu editor e interpretador Lua (Recomendo o OTScript Live!), instale ele. No caso do OTScript Live!, depois de descompactar, vá em "Help", no menu, e clique em "Register To Lua". Abrirá uma caixa confirmando a alteração, basta apertar "OK" e todos os seus scripts irão abrir com o OTScript Live!.
testando seus scripts!
No caso do SciTE, para testar o seu script você deve primeiro salvá-lo com a extensão Lua (*.lua). No caso do SciTE e do OTScript Live! você pode testar seu script apenas apertando F5, sendo que no OTScript Live! não é necessário salvar o script antes de testar.
Após pressionar F5, o SciTE irá abrir uma área de textos abaixo da área de edição com as informações do teste, e o OTScript Live! vai abrir uma janela.
Para testar se o seu SciTE ou OTScript Live! está funcionando, use o seguinte script:
print("Hello world!") Nas informações mostradas pelo interpretador deve estar escrito "Hello world!". Se aparecer, parabéns, você testou o seu primeiro script Lua...(Ou não >.<) O que o script fez? o0 Uma das coisas mais importantes nos scripts são as funções. Uma função é "um bloco de código previamente pronto", uma subrotina, que quando chamada executa esse bloco. Imagine as funções como um atalho para executar alguma coisa. Pode ser usada, por exemplo, para encurtar scripts que tenham alguma parte do codigo que se repita muitas vezes. Criando uma função você pode usar esse código que se repete muitas vezes somente uma vez (Dentro da função), então em vez de usar esse bloco várias vezes, você só precisaria chamar a função várias vezes. Você pode criar suas próprias funções, mas isso veremos mais para frente. Tudo o que importa agora é aprender a chamar funções. O "Nome da Função", na verdade, é o nome da variável em que está armazenada a função, mas não se preocupem com isto ainda... O "Nome da Função" é o nome que você deve chamar para que a função ocorra, pois há vária funções (Obviamente), então você deve especificar qual função quer chamar. É a mesma coisa do que ter 3 pessoas. Quando quiser chamar uma das pessoas, deve dizer o nome dela. Os argumentos são as "Respostas" para as "Perguntas" da função chamada. A maioria das funções faz "perguntas". No caso da função "print", ela nos "perguntou" o que queriamos escrever na tela, e "respondemos": "Hello world!". É importante lembrar que cada pergunta deve ser respondida adequadamente, por exemplo, se alguém te pergunta: "Que horas são?" você não pode responder: "Sim.". A mesma coisa acontece com as funções, você deve responder exatamente o que ela está perguntando. Outra observação importante é que você deve responder as perguntas da função na ordem em que foram perguntadas. Se a pergunta nº 1 for "Que horas são?" e a nº 2 for "Quer um biscoito?", você deve responder respectivamente que horas são e se você quer um biscoito. OBS: Algumas funções fazem "perguntas" opcionais, ou seja, você pode ou não responder. Se você não "responder", a própria função atribuirá um valor padrão para a resposta. Os parâmetros são simplesmente o conjunto de todos os argumentos. OBS: Todos os argumentos (Respostas) do parâmetro devem estar entre parênteses e ser separados por vírgulas! Tipos de valores! Bem, como eu disse, cada resposta deve seguir o tipo da pergunta, então vou citar aqui os tipos destes valores. OBS: Existe uma função para descobrir o tipo de cada valor! Esta função é a função type(valor)... Numbers Como o nome diz, numbers são números, não há muito o que falar sobre eles... Exemplo: print(1) print(2) print(3) OBS: A função print aceita todos os tipos como resposta. Strings As strings devem iniciar com um símbolo especial e deve terminar com o mesmo caractere que foi usado para iniciar a string. Esses símbolos são: Apóstrofo: Começa com ' e termina com '. Aspas: Começa com " e termina com ". Colchete-Colchete: Começa com [[ e termina com ]]. Colchete-Igual-Igual-Colchete: Começa com [==[ e termina com ]==]. As strings são conjuntos de caracteres, como letras, números (Não são numbers, pois se houver um número entre os símbolos especiais será tomado como string!!!), acentos, espaços, etc... Se você quiser escrever uma frase na tela, por exemplo, não pode deixá-la solta pelo script. Esta frase deve ser uma string, ou o script dará erro. Exemplo: print('Apóstrofos') print("Aspas") print([[Colchete-Colchete]]) print([==[Colchete-Igual-Igual-Colchete]==]) OBS: 1 << Isto é um number. "1" << Isto é uma string. Booleanos Os booleanos podem assumir apenas dois valores: true e false. true: Valor verdadeiro. false: Valor falso. OBS: Os booleanos podem ser complicados de entender no começo, mas com o tempo você acostuma. Não se preocupe com eles agora... Exemplo: print(true) print(false) print(nil) Functions Exatamente o que o nome diz: é o que estamos vendo agora. Functions são nada mais nada menos do que funções. Exemplo: print(function() end) OBS: Não se preocupe com isso ainda! Tables ou Arrays São tabelas, ou seja, armazenam mais do que um valor dentro de uma "caixa". Tabelas podem armazenar outras tabelas e todos os valores dentro de uma tabela possuem um identificador, chamado "index" (índice). Tabelas começam com o símbolo { (Chave) e terminam com o símbolo } (Chave). Exemplo: print({}) Userdata Lua é uma linguagem de programação criada para dar extensão à linguagem de programação C e C++. Userdatas são ponteiros que indicam valores em C ou C++. Não se preocupe com eles. Nil Nil simboliza um valor nulo. Não deixa de ser um valor, mas é um valor sem conteúdo. Exemplo: print(nil) As funções retornam! Toda função retorna um ou mais valores, nem que sejam valores nulos (nil), portanto você pode usar uma função dentro do print para escrever os valores que a função retornar! Vamos usar como exemplo a função type(valor), que vai nos retornar uma string com o tipo do valor. Exemplo: print(type(1))
O exemplo acima vai escrever em sua tela a frase: "Number", pois 1 é um number!
Exercícios:
Usando a função print para escrever na tela e type para pegar o tipo de algum valor, obtenha as seguintes frases na tela:
Resposta no spoiler abaixo, tente fazer antes de ver.
Creditos:
99% Skyen Hasus
1% Vittu
Aula 4 Operadores e biblioteca
-
3visan recebeu reputação de premii em Criatividade - poste suas idéias!Créditos: Xadrian