Poccnn 385 Postado Abril 10, 2017 Share Postado Abril 10, 2017 (editado) Palavras e caracteres reservados Link da aula anterior, caso não tenha lido. Palavras reservadas que será usado nessa aula: if, else, elseif, then, end, and, or, not Estrutura de controle (if) O if serve para criar uma condição; ele está precedido de outra palavra que finaliza a condição, que se chama “then”, e também de outra palavra para fechar o if, que se chama “end”. Caso a condição seja verdadeira, o bloco criado por if será executado, caso não seja verdadeira, ele passa para a próxima instrução. Exemplo: if (condição) then -- caso a condição seja verdadeira, executa as instruções abaixo. print(“condição verdadeira”) return true end -- finaliza o if. E se precisarmos de mais condições? Podemos usar dentro do if a palavra “and” que diz ao sistema que há mais condições para ser analisadas. if (condição) and (condição) then -- abertura do bloco. print(“as duas condições são verdadeiras”) -- evento dentro do bloco criado por then. end -- finaliza o if. Podemos também usar a palavra “or” que diz ao sistema que caso uma condição não seja verdadeira, ele tem que verificar se a próxima condição é verdadeira. if (condição) or (condição) then -- abertura do bloco. print(“uma, ou as duas condições é, são verdadeira\’s”) – evento dentro do bloco criado por then. end -- finaliza o if. O “elseif” faz a mesma coisa do “if”, ele cria uma nova condição e um novo bloco, e nela, podemos inserir instruções distintas para cada ocasião. valordaconta = 100 if valordaconta > 100 then print(“não temos essa quantia”) elseif valordaconta <= 100 and valordaconta > 0 then print(“pague a conta”) elseif valordaconta <= 0 then print(“conta não tem valor, portanto não precisa paga-la”) end -- fecha o if. Não é necessário fechar os elseif’s, pois eles fazem parte do if. Existe outra palavra reservada que ajuda muito quando determinamos diversas condições, mas não são validas; O “else” é a ultima possibilidade de se criar um bloco de instruções caso nenhuma condição anterior seja valida. cor = “azul” if cor == “vermelha” then print(“sinal de pare”) elseif cor == “amarela” then print(“sinal de atenção”) elseif cor == “verde” then print(“sinal de liberado”) else -- executa o bloco, desde que as demais condições acima não sejam validas. print(“cor desconhecida”) end A palavra reservado “not” serve para inverte o valor da condição; caso a condição seja verdadeira, ao usar a palavra not, ela se torna falsa e assim vice-versa. if not 1+1 ~= 2 then -- 1+1 não é diferente de 2, portanto é uma condição falsa. print(“mesmo 1+1 não sendo diferente de 2, esse bloco foi executado porquê a palavra \“not\” inverteu o valor da condição de \“false\” para \”true\”.”) end Agora no código que vocês criaram nas aulas anteriores, acrescentem estruturas de controles com condições a eles. Inté a próxima aula. Editado Maio 5, 2017 por Poccnn spoockk reagiu a isso 1 Link para o comentário https://xtibia.com/forum/topic/244990-4-aula-de-scripting-lua-estrutura-de-controle-if/ Compartilhar em outros sites More sharing options...
Jakson Souza 95 Postado Abril 19, 2017 Share Postado Abril 19, 2017 (editado) Cara te admiro, mesmo sabendo que não tem muitas pessoas no fórum para aproveitar esse conteúdo você continua fazendo e com qualidade, meus parabéns carinha eu mesmo pensei em fazer aulas de lógica da programação, algoritmo e c/c++ de acordo com os métodos que estou aprendendo na faculdade, porém não tenho essa paciência que você tem, mesmo eu não estando utilizando essas aulas não deixei de notar a qualidade do seu trabalho, então deixo aqui meu obrigado por mesmo nos dias de hoje continuar ajudando a comunidade. Editado Abril 19, 2017 por Jakson Souza Link para o comentário https://xtibia.com/forum/topic/244990-4-aula-de-scripting-lua-estrutura-de-controle-if/#findComment-1716462 Compartilhar em outros sites More sharing options...
Poccnn 385 Postado Abril 19, 2017 Autor Share Postado Abril 19, 2017 @Jakson Souza: Obrigado companheiro por seu apoio. Quiçá nós não faremos um pacto para criar estudos de c/c++. passar bem. Link para o comentário https://xtibia.com/forum/topic/244990-4-aula-de-scripting-lua-estrutura-de-controle-if/#findComment-1716464 Compartilhar em outros sites More sharing options...
Nildson 2 Postado Abril 19, 2017 Share Postado Abril 19, 2017 (editado) if getPlayerLevel(cid) == 20 then doPlayerSendTextMessage(cid, 24,Você tem nível 20") elseif getPlayerLevel(cid) >= 21 then doPlayerSendTextMessage(cid, 24,Você tem nível maior que 20") end return true end Editado Abril 20, 2017 por Nildson Link para o comentário https://xtibia.com/forum/topic/244990-4-aula-de-scripting-lua-estrutura-de-controle-if/#findComment-1716469 Compartilhar em outros sites More sharing options...
Saymon14 115 Postado Abril 19, 2017 Share Postado Abril 19, 2017 Marcando, que próxima semana irei começar a estudar. Link para o comentário https://xtibia.com/forum/topic/244990-4-aula-de-scripting-lua-estrutura-de-controle-if/#findComment-1716470 Compartilhar em outros sites More sharing options...
ZoR 8 Postado Abril 19, 2017 Share Postado Abril 19, 2017 if getPlayerLevel(cid) <= 100 then print("Voçe passou do level 100") return true end elseif getPlayerLevel(cid) == 200 then print("Voçe precisa de level 200") return true end espero q esteja certo @Poccnn Link para o comentário https://xtibia.com/forum/topic/244990-4-aula-de-scripting-lua-estrutura-de-controle-if/#findComment-1716471 Compartilhar em outros sites More sharing options...
Poccnn 385 Postado Abril 20, 2017 Autor Share Postado Abril 20, 2017 (editado) 16 horas atrás, Nildson disse: if getPlayerLevel(cid) == 20 then doPlayerSendTextMessage(cid, 24,Você tem nível 20") elseif getPlayerLevel(cid) > 21 then doPlayerSendTextMessage(cid, 24,Você tem nível maior que 20") end return true end Não sei como é o restante desse script, mas esse return true e esse end no final não fazem parte de nenhum bloco e o end não está fehando nenhum escopo, portanto geraria um erro de execução. 15 horas atrás, ZikaLord disse: if getPlayerLevel(cid) <= 100 then print("Voçe passou do level 100") return true end elseif getPlayerLevel(cid) == 200 then print("Voçe precisa de level 200") return true end espero q esteja certo @Poccnn Totalmente errado. Tu fechou o if e após ter fechado quis abrir um elseif. O elseif está intimamente ligado ao if, portanto não pode ser declarado sozinho. Outra coisa: a mensagem que tu pos nos dois blocos criados tanto por if quanto por elseif não condizem com a declaração da condição poata nos mesmo. Sugiro que reveja a condição declarada ou a mensagem enviada e, caso seja preciso, re-leia essa aula: Editado Abril 20, 2017 por Poccnn Link para o comentário https://xtibia.com/forum/topic/244990-4-aula-de-scripting-lua-estrutura-de-controle-if/#findComment-1716495 Compartilhar em outros sites More sharing options...
Nildson 2 Postado Abril 20, 2017 Share Postado Abril 20, 2017 (editado) if getPlayerLevel(cid) < 20 then doPlayerSendTextMessage(cid, 25,"Você tem nível menor que 20") elseif getPlayerLevel(cid) == 20 then doPlayerSendTextMessage(cid, 25,"Você tem nível 20") else doPlayerSendTextMessage(cid, 25,"Você tem nível maior que 20") end E agora ta certo ? Editado Abril 20, 2017 por Nildson Link para o comentário https://xtibia.com/forum/topic/244990-4-aula-de-scripting-lua-estrutura-de-controle-if/#findComment-1716497 Compartilhar em outros sites More sharing options...
wevertonvrb 25 Postado Abril 21, 2017 Share Postado Abril 21, 2017 (editado) if not isPremium(cid) or getPlayerLevel(cid) <= 49 then doPlayerSendTextMessage(cid,22,"Este item só pode ser usado por jogadores VIP lvl 50+") return false end --- nao sei se é pra fazer com print ou sendText então fiz com sendText --------------------------------------------------------------------------------------------------ou---------------------------------------------------------------------------------------------------- if getPlayerLevel (cid) < 50 then --- uma duvida esse espaço antes do (cid) interfere no script? eu sempre faço isso e como sei q faço isso sempre no final eu verifico doPlayerSendTextMessage (cid, 22," você ainda não alcançou o nível 50 e nao tem direiro a nenhum premio ") alseif getPlayerLevel(cid) >= 50 then doPlayerSendTextMessage(cid, 22,"parabéns você ultrapassou o nível 50 e receberá um premio pela façanha") doPlayerAddItem(cid,itemid,quantidade) return true end ---- eu sempre uso esses return true ou false talvez nem precise gostaria de uma dica a respeito de se precisa ou não. acredito que no primeiro exemplo se faz necessário (ajuda no erro la rsrsrs) outra duvida eu tb as vezes deixo minusculas algumas letras tipo doplayerAdditem(cid) essas letras minusculas gera erro? é obrigatório maiúsculo ou é apenas mais arrumado? Editado Abril 21, 2017 por wevertonvrb Link para o comentário https://xtibia.com/forum/topic/244990-4-aula-de-scripting-lua-estrutura-de-controle-if/#findComment-1716523 Compartilhar em outros sites More sharing options...
Poccnn 385 Postado Abril 21, 2017 Autor Share Postado Abril 21, 2017 20 horas atrás, Nildson disse: if getPlayerLevel(cid) < 20 then doPlayerSendTextMessage(cid, 25,"Você tem nível menor que 20") elseif getPlayerLevel(cid) == 20 then doPlayerSendTextMessage(cid, 25,"Você tem nível 20") else doPlayerSendTextMessage(cid, 25,"Você tem nível maior que 20") end E agora ta certo ? Certíssimo. Faça agora com mais condições e mescle uma condição junto com outra condição usando and, or e not. 9 horas atrás, wevertonvrb disse: --- nao sei se é pra fazer com print ou sendText então fiz com sendText O script é seu, tu faz como quiser. 9 horas atrás, wevertonvrb disse: -- uma duvida esse espaço antes do (cid) interfere no script? eu sempre faço isso e como sei q faço isso sempre no final eu verifico Não tem problema algum. Na ora da execução do código a formatação é removida e fica apenas uma linha de execução desse código. 9 horas atrás, wevertonvrb disse: alseif getPlayerLevel(cid) >= 50 then Cuidado com erro de digitação. 9 horas atrás, wevertonvrb disse: -- eu sempre uso esses return true ou false talvez nem precise gostaria de uma dica a respeito de se precisa ou não. acredito que no primeiro exemplo se faz necessário (ajuda no erro la rsrsrs) Isso é relativo a source da distro. Alguns requerem que seja retornado algum valor verdadeiro, outros não. Irei tratar melhor essa questão quando entrarmos nas aulas sobre tfs. 9 horas atrás, wevertonvrb disse: outra duvida eu tb as vezes deixo minusculas algumas letras tipo doplayerAdditem(cid) essas letras minusculas gera erro? é obrigatório maiúsculo ou é apenas mais arrumado? Lua é sensível a letras minúsculas para maiúsculas; ou seja, ela diferencia maiúsculas de minúsculas. Se existe uma função chamada isLua e tu chamar islua, ela não irá encontra-lo pois ele diferencia o "L" maiúsculo do "l" minúsculo. Link para o comentário https://xtibia.com/forum/topic/244990-4-aula-de-scripting-lua-estrutura-de-controle-if/#findComment-1716534 Compartilhar em outros sites More sharing options...
rorix 15 Postado Abril 23, 2017 Share Postado Abril 23, 2017 if isPlayer(cid) then if getPlayerLevel(cid) >= 1 and getPlayerLevel(cid) <= 100 then doPlayerSendTextMessage(cid, 25,"Você tem nível entre um e cem") elseif getPlayerLevel(cid) > 100 then doPlayerSendTextMessage(cid, 25,"Seu nivel é maior que 101") end else print("Nao é player") end Link para o comentário https://xtibia.com/forum/topic/244990-4-aula-de-scripting-lua-estrutura-de-controle-if/#findComment-1716607 Compartilhar em outros sites More sharing options...
Poccnn 385 Postado Abril 23, 2017 Autor Share Postado Abril 23, 2017 2 horas atrás, rorix disse: if isPlayer(cid) then if getPlayerLevel(cid) >= 1 and getPlayerLevel(cid) <= 100 then doPlayerSendTextMessage(cid, 25,"Você tem nível entre um e cem") elseif getPlayerLevel(cid) > 100 then doPlayerSendTextMessage(cid, 25,"Seu nivel é maior que 101") end else print("Nao é player") end Ficou certo as sentenças, única coisa que poderia mudar é a mensagem que diz que o player tem level maior que 101 o que pode não ser verdade; ele pode ter level 101 e cair no bloco do elseif. Outra coisa é que tu poderia ter unido a condição de se é player junto com o outro if; mas ai depende muito do que tu queira fazer. Já usou também as palavras or e not em condições? Link para o comentário https://xtibia.com/forum/topic/244990-4-aula-de-scripting-lua-estrutura-de-controle-if/#findComment-1716614 Compartilhar em outros sites More sharing options...
Nildson 2 Postado Abril 24, 2017 Share Postado Abril 24, 2017 if getPlayerLevel(cid) >= 2 and getPlayerLevel(cid) <= 20 then doSendMagicEffect(getThingPos(cid), 40) doPlayerSendTextMessage(cid, 25,"Parabéns você fez a quest iniciante do nivel 2 ao 20") elseif getPlayerLevel(cid) == 21 or getPlayerLevel(cid) >= 22 then doSendMagicEffect(getThingPos(cid), 41) doPlayerSendTextMessage(cid, 25,"Você não pode fazer mais esta quest por estar nível superior ao 21") else doSendMagicEffect(getThingPos(cid), 39) doPlayerSendTextMessage(cid, 25,"Você tem nível 0, upe até nível 1 e retorne aqui") end Bom, eu entendi sobre o exercício e adicionei o and e or que o senhor pediu, más tenho uma dúvida, sei que quando adiciona not, mesmo quando a função é correta ela se torna falsa, más quando fui adicionar um if not ela não funcionava no tíbia, em vez de por o if not coloquei o else que é praticamente quase a mesma coisa, obrigado pela suas aulas, eu estou aprendendo bastante do básico do script e quero que continue cada vez mais e me incentivo mais ainda quando tem aquela notificação de nova aula. Link para o comentário https://xtibia.com/forum/topic/244990-4-aula-de-scripting-lua-estrutura-de-controle-if/#findComment-1716631 Compartilhar em outros sites More sharing options...
Poccnn 385 Postado Abril 24, 2017 Autor Share Postado Abril 24, 2017 1 hora atrás, Nildson disse: más tenho uma dúvida, sei que quando adiciona not, mesmo quando a função é correta ela se torna falsa, más quando fui adicionar um if not ela não funcionava no tíbia, em vez de por o if not coloquei o else que é praticamente quase a mesma coisa Como assim não funcionou no tíbia? E o que tem haver o tibia com o script? O not é uma negação de uma condição e o else não requer condição alguma, portanto não são sequer parecidas. Tu tentou por o not nesse script ai? Link para o comentário https://xtibia.com/forum/topic/244990-4-aula-de-scripting-lua-estrutura-de-controle-if/#findComment-1716638 Compartilhar em outros sites More sharing options...
Nildson 2 Postado Abril 24, 2017 Share Postado Abril 24, 2017 (editado) 58 minutos atrás, Poccnn disse: Como assim não funcionou no tíbia? E o que tem haver o tibia com o script? O not é uma negação de uma condição e o else não requer condição alguma, portanto não são sequer parecidas. Tu tentou por o not nesse script ai? tudo bem, me desculpe se interpretei de maneira errada, mas, sim tentei adicionar ao script. o script funciona só nas partes de elseif, más só não funciona na parte do if not. if not getPlayerLevel(cid) == 1 then doSendMagicEffect(getThingPos(cid), 39) doPlayerSendTextMessage(cid, 25,"Você tem nível 0, upe até nível 1 e retorne aqui") elseif getPlayerLevel(cid) >= 2 and getPlayerLevel(cid) <= 20 then doSendMagicEffect(getThingPos(cid), 40) doPlayerSendTextMessage(cid, 25,"Parabéns você fez a quest iniciante do nivel 2 ao 20") elseif getPlayerLevel(cid) == 21 or getPlayerLevel(cid) >= 22 then doSendMagicEffect(getThingPos(cid), 41) doPlayerSendTextMessage(cid, 25,"Você não pode fazer mais esta quest por estar nível superior ao 21") end se tiver alguma coisa errada me explique por favor ... Editado Abril 24, 2017 por Nildson Link para o comentário https://xtibia.com/forum/topic/244990-4-aula-de-scripting-lua-estrutura-de-controle-if/#findComment-1716640 Compartilhar em outros sites More sharing options...
Posts Recomendados