Ir para conteúdo
Entre para seguir isso  
Fadi

[Aula 5] Colocando em prática

Recommended Posts

Fadi    0
Fadi

aulasov2.png

 

 

 

Até agora, vocês aprenderam a idéia, a essência das principais estruturas usadas em lua: Estruturas de Controle, Variáveis/Operadores Matemáticos e Loops(repeat e while).

 

Hoje, iremos ver como podemos utilizar o que já aprendemos nas aulas. Para facilitar o entendimento aconselho a darem uma passada no tópico Biblioteca de Funções.

 

Estruturas de controle {if}

[Aula 2]

 

Essa provavelmente é a que vocês mais irão usar, como dito na aula, com ela nós definimos condições. Vamos ver como podemos usá-la em um script:

 

function onUse(cid, item, frompos, item2, topos)
if item2.itemid == 1111 then
doPlayerSendTextMessage(cid,22,"Eu escolhi o primeiro item.")
elseif item2.itemid == 2222 then
doPlayerSendTextMessage(cid,22,"Eu escolhi o segundo item.")
else
doPlayerSendTextMessage(cid,22,"Eu escolhi outro item.")
end
end

 

Muito bem, agora alguem pode me dizer o que isso faz?

-"EEEU POSSOO, TITIU FADI!"

 

Pois é, quem leu as outras aulas provavelmente pegou a idéia:

 

*A função é chamada para iniciar o script (function onUse)

 

*Usamos um "if":

 

-se o item2.itemid (id do item em que clicamos,usando o "use with") for igual a "1111", o player vai receber a mensagem 'Eu escolhi o primeiro item.'(vide "Biblioteca de Funções")

 

-se o item2.itemid for igual a "2222", o player vai receber a mensagem 'Eu escolhi o segundo item.'

 

-se nenhuma condição anterior for satisfeita, o player vai receber a mensagem 'Eu escolhi outro item.'

 

Entenderam?!

-"SIIIIM!!"

 

 

Variáveis/Operadores Matemáticos

[Aula 3]

 

Sendo outra parte que é muito usada, as variáveis servem para "guardar", armazenar valores, como dito na aula. Já os operadores matemáticos, como o nome diz, realizam operações matemáticas entre valores, como comparar, subtrair, somar, dividir...

Agora, um exemplo de script usando variáveis e operadores matemáticos.

 

function onUse(cid, item, frompos, item2, topos)
nota1 = 10
nota2 = 8
nota3 = 9
nota4 = 9
media = (nota1+nota2+nota3+nota4)/4
doPlayerSendTextMessage(cid,22,"Sua média de prova foi igual a " .. media"!")
end

 

Reparem, no "doPlayerSendTextMessage" eu usei uma partícula mais avançada, que vocês aprenderam melhor mais tarde: o concatenador de strings (".."). Apenas para não deixá-los "boiando" vou explicar desde já que a idéia geral dele é "juntar" strings(conjuntos de letras).

 

Vamos considerar então a equação matemática que criamos:

(10+8+9+9)/4

(36)/4

9

 

Portanto, a mensagem que o player vai receber será:

'Sua média de prova foi igual a 9!'

 

Loops (Repeat/While)

[Aula 4]

 

Como explicado anteriormente, o repeat irá repetir um bloco de informações, até que sua condição seja satisfeita. Por outro lado, o while irá repetir seu bloco, até que sua condição inicial NÃO seja mais satisfeita. Ou seja, podemos dizer que while e repeat são praticamente um o inverso do outro.

 

Vamos dar um exemplo de como o mesmo bloco pode ser executado, usando while e repeat:

 

function onUse(cid, item, frompos, item2, topos)
numero = 1
repeat
doPlayerSendTextMessage(cid,22,numero)
numero = numero+1
until numero == 10
end

 

function onUse(cid, item, frompos, item2, topos)
numero = 1
while numero ~= 10 do
doPlayerSendTextMessage(cid,22,numero)
numero = numero+1
end
end

 

Reparem que, na finalização do repeat, nós colocamos como condição pra parar de repetir que "numero" fosse igual a "10".

repeat
numero = numero+1
until numero == 10

 

Por outro lado, em while foi colocada a condição de que ele só iria repetir enquanto "numero" fosse diferente de "10".

while numero ~= 10 do
numero = numero+1
end

 

Colocando em prática

[Aula 5]

 

Agora, vamos criar um script que usa tudo que usamos anteriormente:

 

function onUse(cid, item, frompos, item2, topos)
nota1 = 5
nota2 = 2
nota3 = 4
nota4 = 9
media = (nota1+nota2+nota3+nota4)/4
if media <= 6 then
falta = 0
repeat
falta = falta+1
until (falta+media) >= 6
doPlayerSendTextMessage(cid,22,"Você foi reprovado, e faltaram ".. falta ..  " pontos na média para que você fosse aprovado.")
else
doPlayerSendTextMessage(cid,22,"Você passou de ano!")
end
end

 

"-Pergunta:O que o script faz, tiu Fadi? ô.Ô"

 

Resposta: Assim como alguém que acompanhou as aulas desde o começo, eu posso dizer que o script faz o seguinte:

 

*A função é chamada para iniciar o script (function onUse)

 

*Algumas variáveis são acrescentadas (nota1, nota2, nota3, nota4)

 

*Outra variável é acrescentada, fazendo operações matemáticas com as primeiras (media)

 

*Usamos um "if":

 

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

-se o número da variável "media" for menor que 6, o seguinte vai acontecer:

 

**Outra variável é declarada (falta)

 

**Um repeat é iniciado: ele irá aumentar o valor da variável "falta" em uma unidade, até que a soma do valor da variável "falta" com o valor da variável "média" seja maior ou igual a "6".

 

**A seguinte mensagem é mandada para o player:

"Você foi reprovado, e faltaram (valor da variável falta) pontos na média para que você fosse aprovado."

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

---------

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

-se o número da variável "media" for maior que 6, o seguinte vai acontecer:

 

**A seguinte mensagem é mandada para o player:

"Você passou de ano!"

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

 

 

==============================================

 

 

Bom, chegamos ao fim de mais uma aula... ("aaaaaaaaahhhh.. =´( ")

 

Espero que tenham gostado. Qualquer dúvida, poste aqui.

 

Obrigado, e até mais! :bye:

 

Edit by Fadi: Comentários desnecessários serão deletados, não poste coisas como "Boa aula", ou "Parabéns", poste apenas se tiver uma dúvida ou crítica fundamentada.

Editado por Dark

Compartilhar este post


Link para o post
Mohamed    0
Mohamed

po cara agora to aprendendo a montaar!!!

mto manero :D

vo faze meu ot entra em colapso mas eu vo vira 1 scripter :D

só uma coisa, a function onUse(cid, item, frompos, item2, topos)

tem que aparecer em todos os scripts?

e tpw... se eu colocar o IF no começo, depois ir usando elseif até o final do script, qual tem que ser a ordem dos elses???

o ultimo elseif = primeiro else?

vlww!!

Compartilhar este post


Link para o post
Dark    3
Dark

@ Mohamed

 

Sim, em caso de actions deve-se colocar o function onUse

 

Você pode usar quantos elseif você quiser, mas lembre-se que ele só será executado caso as condições anteriores a ele retornaram falsas. E o else é executado quando todas as condições retornaram falsas, por isso ele deve ser colocado no final.

 

:bye:

Compartilhar este post


Link para o post
Mohamed    0
Mohamed

mas tpw, se eu colocar (exemplo nd a ver)

if playerpos = 1 then

doteleportthing (cid, 0,0,0)

elseif player pos = 2 then

doteleportthing (cid, 1,1,1)

o primeiro else vai corresponder a qual das ações??

Compartilhar este post


Link para o post
Dark    3
Dark

@ Mohamed

 

As duas, ou seja, se você colocar um else ali no final ele será executado caso o playerpos não seja igual a 1 e nem a 2 ;)

Compartilhar este post


Link para o post
DaNDaNrOxX    0
DaNDaNrOxX

AE... Já começei a pegar a teoria do .lua :D

Vou começar a praticar agora.

Muito obrigado a todos vocês que elaboraram estas aulas para ajudar novatos em scripting como eu!

Só não consegui intender muito sobre "Loops", Mas vou tentar novamente.

Só uma dúvida: Teremos mais aulas? Obrigado!

Abraço

Compartilhar este post


Link para o post
Hero    0
Hero

quero uma aula com os.clock ;)

Compartilhar este post


Link para o post
MotoBoy    0
MotoBoy

huauhsahu[

 

manero..

 

a parte de ler e saber oq o script faz é facill =]

 

Só tem algumas coisas que agente demora pra pergar neh? =/

 

num vai ter nenhuma ula aew com o addEvent?

Compartilhar este post


Link para o post
2585120000    0
2585120000

ta certu issu?

 

function onUse(cid, item, frompos, item2, topos)

level = 10

if level < 60 then

faltam = 0

repeat

faltam = faltam+1

until (faltam+level) >= 60

doPlayerSendTextMessage(cid,22,"Faltam ".. faltam .. " leveis para você chegar ao level 60.")

elseif level = 60

doPlayerSendTextMessage(cid,22,"Você está no level 60!")

else

doPlayerSendTextMessage(cid,22,"Você ja passou do level 60!")

end

end

 

Tá certo??

Compartilhar este post


Link para o post
ultimatearmor    0
ultimatearmor

@2585120000

Bom o uso da variavel level não esta certo ao meu ver...Aproveitando que isto é uma aula vou colocar o script que você fez(certo eu espero 8D) para você ver oque faltava ok?

 

function onUse(cid, item, frompos, item2, topos)

playerlevel = getPlayerLevel(cid)

 

if playerlevel < 60 then

faltam = 0

repeat

faltam = faltam+1

until (faltam+playerlevel) >= 60

doPlayerSendTextMessage(cid,22,"Faltam ".. faltam .. " leveis para você chegar ao level 60.")

elseif playerlevel == 60 --------PRESTE ATENÇÂO AQUI. SE USA DOIS IGUAIS PARA MOSTRAR IGUALDADE.UM SÒ E PRA DECLARAR VALORES

doPlayerSendTextMessage(cid,22,"Você está no level 60!")

else

if playerlevel > 60 then

doPlayerSendTextMessage(cid,22,"Você está acima do nivel 60!")

end

end

end

 

so achei que aquilo de level = 10 não precisava já que tinha que olhar o level do player. De resto está TUDO certo ^^

Compartilhar este post


Link para o post
Iago Felipe    5
Iago Felipe

alguem pode me ajudar com isso

 

eu vou ler todas as outras aulas e ver se esta r0x

 

me desculpem se eu postei alguma coisa errada, me avisem please

Compartilhar este post


Link para o post
myros    0
myros

ae ta começando a ficaa roxx, vlw mais uma vez ai pela iniciativa (Y)

Compartilhar este post


Link para o post
leonardoab    0
leonardoab

Vlw!

Agradeço!

Ta bem explicado!

Compartilhar este post


Link para o post
Dank    0
Dank

Aew, to melhorando :D

Muito bom as aulas, estão me ajudando bastante..

Compartilhar este post


Link para o post
balanar    0
balanar

eu quero saber como mexer com talkations tpw eu montei um map mais so q quando o player morre nao volta no templo ele fica sem posiçao do map ai na da pra entrar

 

alguem pode mi ajudaaar!!! [=D]

Compartilhar este post


Link para o post
DanMago    0
DanMago

Noosa 8D véi !!??!!??

Compartilhar este post


Link para o post
DanMago    0
DanMago

OMG ! acho q eh 6 ou 7D :D

Compartilhar este post


Link para o post
DanMago    0
DanMago

Ei Balanar aff cara num sei como vc tem a paciência q vc tem pra criar map demora umas 3hrs ou uns dias véio.

Compartilhar este post


Link para o post
DanMago    0
DanMago

Eu pego OT num crio map num xP pego criado!

Compartilhar este post


Link para o post
joaogrilobis    0
joaogrilobis

vlw kra arrumei o q precisava no meu serv com isso vlw mesmo.Gratz

 

Oia o Double do DanMago

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×