14. Indentação (espaço tabelado)

    Compartilhe
    avatar
    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Título : Não quero acreditar, quero saber.
    Mensagens : 21440
    Reputação : 629
    Desde : 03/05/2012
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    14. Indentação (espaço tabelado)

    Mensagem por Junior_Djjr em Sex 03 Fev 2017, 09:36


    Uma coisinha que você já foi introduzido naturalmente, e agora aprenderá mais a fundo.

    Logo na parte 7 eu já expliquei brevemente o que são os espaços tabelados. Se você esqueceu, problemão!!! Se esqueceu disso, pode ter esquecido de mais coisas já ensinadas aqui, e isso vira uma bola de neve dificultando o aprendizado, cuidado.

    Esta parte é muitíssimo ligada com a parte 7 (Condições) deste tutorial, pois você praticamente só usará o TAB em condições.
    Eu inclusive, mais uma vez, recomendo que você volte na parte sobre condições para dar umas olhadas nos códigos de exemplo lá, para ver como foi organizado os espaços daqueles códigos e ter referências "naturalmente" na base do olho — a não ser que você já esteja seguro quanto a isso e só está aqui para informações mais profundas.

    Concluindo esta parte você vai:
    Poder responder o que é e como usar indentação, assim como seu ponto forte e no que isso ajuda durante o desenvolvimento de um script.



    Por que usar indentação?


    Uma imagem fala mais que mil palavras:

    Sério, olha para o código de baixo. É horrível de ler! Não dá para entender onde que abre e fecha o IF etc.

    É por isso que o bom uso de indentação é tão importante e você precisa se importar tanto em usá-la corretamente.

    Em exemplos pequenos pode até não parecer tão importante, mas um código grande e complexo, fica incompreensível quando não usar:

    Este é um pedaço do código fonte do MDPMv5 que controla os comandos de troca de música. Olhando na segunda imagem, você consegue decifrar o que cada IF faz e deixa de fazer?

    Veja este belo exemplo:

    Laranja: O script andará por aqui caso no "WHILE NA cozinha"
    Verde: Caso abriu a geladeira ("ABRIU_A geladeira"), entrará neste caminho.
    ——Ciano: Se "TEM coca" entrará aqui.
    ——Azul: Se não tem, entrará aqui.
    ———Roxo: Se "TEM Dolly", entrará aqui.
    ————Rosa: Se você gosta de Dolly, aqui.
    ————Amarelo: Se não gosta, aqui.
    ————(Fim do "VOCE_GOSTA_DE dolly")
    ———(Fim do "TEM dolly")
    ——(Fim do "TEM coca")
    —(Fim do "ABRIU_A geladeira")
    (Fim do "WHILE NA cozinha")

    Perceba que tudo praticamente se resume em deixar a abertura e fechadura das coisas uma em cima da outra, ou seja, o "IF", o "ELSE" deste IF, e o "ENDIF" também deste mesmo IF, estão todos um em cima do outro, enquanto "o que irá fazer" está com um espaço na frente. Isso facilita na identificação de "o que faz caso IF? E caso ELSE? Onde termina esta condição?"
    E você lembra de que, após o jogo ter feito o necessário dentro de um "IF" o código continua abaixo de seu "ENDIF"? Então! É importante você saber exatamente onde (e "qual") é o "ENDIF" daquele IF, e aplicando uma boa indentação, nós facilmente encontramos: O "ENDIF" está logo abaixo do "IF".


    Indentação é obrigatória, mesmo que seja só cosmética, e há regras e não regras.

    Por exemplo, algumas pessoas preferem usar indentação ao abrir os escopos, ficando assim:

    Eu particularmente no momento só uso em certos casos, mas você com certeza pode usar quando bem entender.
    Por quê não uso? Uso indentação em escopos só as vezes, em sub-tarefas etc, não na parte principal do script, pois a parte principal geralmente tem muitas linhas e não tem esse fecha e abre de escopos como nas sub-tarefas, portanto não acho necessário, e se eu usasse, basicamente 100% do script seria escrito em espaço tabelado, prefiro não, pelo menos por enquanto.
    Outro motivo é que a Rockstar as vezes não usa mesmo (vendo o source do GTA 3), e eu acho legal seguir uns padrões da Rockstar.

    Há também uma outra utilidade para o uso do espaço tabelado: Esconder partes do script!


    Você já deve ter percebido que ao passar o mouse na parte esquerda da tela aparece uns "-" para fechar e "+" para abrir partes do código. Os locais destes "-" são definidos pela indentação (onde abre e fecha alguma indentação).
    Eu gosto de aproveitar deste recurso para separar meus códigos em seções, onde posso abrir e fechar elas quando eu quiser, assim não ter um código gigante de 3 mil linhas aberto ao mesmo tempo (na qual fica ruim de andar por ele).
    Assim eu uso um comentário com algum nome para aquela seção, e termino a seção com 50 "/" (parecido (mas diferente) com o que a Rockstar fez no source do GTA 3).


    Regras de indentação no GTA3script


    Eu já falei basicamente onde e por que usar. Abaixo vou deixar claro os locais exatos.
    Preste muita atenção, pois mesmo sendo simples e óbvio, as pessoas esquecem:

    Abra um espaço tabelado sempre após digitar um...:
    IF (AND/OR)
    ELSE
    WHILE
    REPEAT
    SWITCH
    CASE
    DEFAULT
    { — opcional

    Feche um espaço tabelado sempre que você digitar um....:
    END(IF/WHILE/REPEAT/SWITCH)
    } — opcional
    Lembre-se: Se o "END" não estiver embaixo de algum comando destes, ou algum comando destes não estiver com algum "END" alinhado embaixo dele. Há alguma coisa errada na sua indentação!

    É tudo simples e você já viu isso várias vezes por este tutorial:
    Código:
    WHILE // digitei um WHILE (abri um WHILE)
        WAIT 0 // abri um espaço tabelado (aqui é o que faz enquanto estiver no WHILE)
    ENDWHILE // fechei um espaço tabelado (fechei o WHILE)
    E se tiver dúvidas, tente dar uma olhada novamente nos códigos de exemplos por este tutorial. Principalmente na parte sobre condições.



    Próxima parte:
    15. Mais sobre condições


    Última edição por Junior_Djjr em Qua 08 Fev 2017, 17:17, editado 2 vez(es)


    ____________________
    avatar
    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Título : Não quero acreditar, quero saber.
    Mensagens : 21440
    Reputação : 629
    Desde : 03/05/2012
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    Re: 14. Indentação (espaço tabelado)

    Mensagem por Junior_Djjr em Sex 03 Fev 2017, 09:41

    Já estamos chegando no fim das partes "essenciais" :)
    Em minha mente, só falta eu aprofundar mais em condições (ensinando umas táticas, SWITCH e REPEAT (que é um tipo de loop)). E poderia vir mais outro exercício, e não sei mais o que de essencial básico ensinar... Já daria para começar coisas pouco mais avançadas (mas de preferência, é bom eu criar mais tutoriais de "Como fazer?" antes)


    ____________________
    avatar
    Nex'
    Scripter CLEO - Básico
    Scripter CLEO - Básico

    Título : Imposto é roubo
    Mensagens : 959
    Reputação : 66
    Desde : 04/03/2013
    Idade : 17

    Re: 14. Indentação (espaço tabelado)

    Mensagem por Nex' em Sex 03 Fev 2017, 10:35

    @Junior_Djjr escreveu:Já estamos chegando no fim das partes "essenciais" :)
    Em minha mente, só falta eu aprofundar mais em condições (ensinando umas táticas, SWITCH e REPEAT (que é um tipo de loop)). E poderia vir mais outro exercício, e não sei mais o que de essencial básico ensinar... Já daria para começar coisas pouco mais avançadas (mas de preferência, é bom eu criar mais tutoriais de "Como fazer?" antes)
    Acho interessante um tutorial de "Como fazer" antes, as pessoas terminam aqui aprendendo as coisas mas não usam a lógica para tentar fazer as coisas, uns exemplos deve dar um empurrãozinho :)
    avatar
    Elyzandro
    Veterano
    Veterano

    Mensagens : 2920
    Reputação : 81
    Desde : 31/07/2013

    Re: 14. Indentação (espaço tabelado)

    Mensagem por Elyzandro em Sex 03 Fev 2017, 12:50

    Arrays, faz de arrays. ;=;


    ____________________
    I̜mpe͢r͚at̲ivoͯ, ͘no̅ mụnd̶o͋ ̺sl͟o͗w
    ́Co͔m͢ó ̼a ̒p̎eçͦa̲ ̖MC͝s ̚só͊ ͡faz̀em̈́ ̛s̸p͆ee͌df̡l̡owͭ
    ̟Pͭra ̌que̲ ä́ p̐r͜es̋s͉aͤ?
    avatar
    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Título : Não quero acreditar, quero saber.
    Mensagens : 21440
    Reputação : 629
    Desde : 03/05/2012
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    Re: 14. Indentação (espaço tabelado)

    Mensagem por Junior_Djjr em Sex 03 Fev 2017, 13:22

    Vdd


    ____________________
    avatar
    DouglasB2310
    Mensagens Nível 4
    Mensagens Nível 4

    Mensagens : 358
    Reputação : 10
    Desde : 12/01/2016
    Localização : 127.0.0.1:25565

    Re: 14. Indentação (espaço tabelado)

    Mensagem por DouglasB2310 em Sex 03 Fev 2017, 13:43

    Quem não identar o código vai pro inferno.
    avatar
    israel
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Mensagens : 655
    Reputação : 111
    Desde : 22/09/2015
    Idade : 19
    Localização : Salvador - BA

    Re: 14. Indentação (espaço tabelado)

    Mensagem por israel em Sex 03 Fev 2017, 13:46

    @Junior_Djjr escreveu:Vdd
    Tava olhando aqui e acho que você esqueceu de falar sobre REPEAT na parte 6 ? philosoraptor


    ____________________
    " Everyone gonna remember my name ! "
    avatar
    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Título : Não quero acreditar, quero saber.
    Mensagens : 21440
    Reputação : 629
    Desde : 03/05/2012
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    Re: 14. Indentação (espaço tabelado)

    Mensagem por Junior_Djjr em Sex 03 Fev 2017, 14:00

    @israel escreveu:
    @Junior_Djjr escreveu:Vdd
    Tava olhando aqui e acho que você esqueceu de falar sobre REPEAT na parte 6 ? philosoraptor
    A pessoa ainda não sabia o que é condição e variável. Principalmente variável, ninguém nunca entenderia corretamente, só saberia que envia alguma coisa ali e aquela coisa será contada aumentando o valor e dando para usar aquela coisa em alguma coisa que use o valor daquela coisa.


    ____________________
    avatar
    israel
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Mensagens : 655
    Reputação : 111
    Desde : 22/09/2015
    Idade : 19
    Localização : Salvador - BA

    Re: 14. Indentação (espaço tabelado)

    Mensagem por israel em Sex 03 Fev 2017, 14:05

    @Junior_Djjr escreveu:
    @israel escreveu:
    @Junior_Djjr escreveu:Vdd
    Tava olhando aqui e acho que você esqueceu de falar sobre REPEAT na parte 6 ? philosoraptor
    A pessoa ainda não sabia o que é condição e variável. Principalmente variável, ninguém nunca entenderia corretamente, só saberia que envia alguma coisa ali e aquela coisa será contada aumentando o valor e dando para usar aquela coisa em alguma coisa que use o valor daquela coisa.
    Verdade, seria muito coisado. pokerface


    ____________________
    " Everyone gonna remember my name ! "
    avatar
    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Título : Não quero acreditar, quero saber.
    Mensagens : 21440
    Reputação : 629
    Desde : 03/05/2012
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    Re: 14. Indentação (espaço tabelado)

    Mensagem por Junior_Djjr em Sex 03 Fev 2017, 14:13

    O mesmo vale para o SWITCH. Explicar o que é SWITCH sem antes explicar o que são variáveis não há como.
    Vou ter que introduzir ambos ainda.
    Se eu mudasse o lado, tipo explicasse variáveis e só depois condições também ficaria ruim (eu comecei o tutorial assim, a explicação ficou uma merda pois não tinha muito como dar exemplos)


    ____________________
    avatar
    israel
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Mensagens : 655
    Reputação : 111
    Desde : 22/09/2015
    Idade : 19
    Localização : Salvador - BA

    Re: 14. Indentação (espaço tabelado)

    Mensagem por israel em Sex 03 Fev 2017, 15:04

    Tem que colocar um exemplo do Sweet no tutorial de Switch. :)
    To brisado.


    ____________________
    " Everyone gonna remember my name ! "
    avatar
    Nex'
    Scripter CLEO - Básico
    Scripter CLEO - Básico

    Título : Imposto é roubo
    Mensagens : 959
    Reputação : 66
    Desde : 04/03/2013
    Idade : 17

    Re: 14. Indentação (espaço tabelado)

    Mensagem por Nex' em Sex 03 Fev 2017, 16:10

    @Junior_Djjr escreveu:O mesmo vale para o SWITCH. Explicar o que é SWITCH sem antes explicar o que são variáveis não há como.
    Vou ter que introduzir ambos ainda.
    Se eu mudasse o lado, tipo explicasse variáveis e só depois condições também ficaria ruim (eu comecei o tutorial assim, a explicação ficou uma merda pois não tinha muito como dar exemplos)
    Acho que todos os tutoriais que vi explicaram primeiro que são variáveis antes de explicar o que são condições
    De começo o que a pessoa só precisa saber é que variáveis são lugares na memoria que você guardar valores que quiser, então exemplos seriam:

    Código:
    quantidade_de_patos = 5
    PRINT_FORMATTED_NOW "eu tenho %d patos" 1000 quantidade_de_patos

    por mais simples que sejam philosoraptor

    em outras linguagens isso é mais fácil ainda de explicar:
    PHP:
    Código:
    <?
    $quantidade_de_patos = 10;

    print "Eu tenho $quantidade_de_patos patos";
    ?>
    Ainda mais em linguagens como PHP que não precisa se preocupar com data types, esse código acima é um código funcional Fuch That Guy


    ____________________
    PC Specs
    CPU: Intel Core i3-6100 Skylake
    GPU: HD Intel 530
    RAM: Crucial Ballistix Elite 4GB 2133MHz DDR4
    PSU: Corsair CX-430W
    MOBO: Gigabyte GA-H110M-H DDR4
    avatar
    Fabio
    Programador - Avançado
    Programador - Avançado

    Título : CEO da Fabio's Gambiarra Industries
    Mensagens : 18541
    Reputação : 338
    Desde : 04/05/2012
    Idade : 20
    Localização : Reserva, Paraná, Brasil, América Latina, America do Sul, América, Planeta Terra, Sistema Solar, Via láctea, Universo
    Link : gtamodvicio.blogspot.com

    Re: 14. Indentação (espaço tabelado)

    Mensagem por Fabio em Sex 03 Fev 2017, 16:45

    @Nex' escreveu:
    PHP:
    Código:
    <?
    $quantidade_de_patos = 10;

    print "Eu tenho $quantidade_de_patos patos";
    ?>
    Ainda mais em linguagens como PHP que não precisa se preocupar com data types, esse código acima é um código funcional Fuch That Guy

    Acho que é melhor fazer assim:

    Código:
    <?php
    $quantidade_de_patos = 10;

    print 'Eu tenho ' . $quantidade_de_patos . ' patos';
    ?>

    Para o PHP, aspas duplas significa que existe código interpretável no meio, então o processamento é mais lento que concatenar strings com aspas simples philosoraptor

    Ou então:
    Código:
    echo 'Eu tenho ', $quantidade_de_patos, ' patos';
    philosoraptor

    Assim não há concatenamento antes de mandar ao echo, é mandado por partes e o resultado é o mesmo visualmente. philosoraptor


    ____________________

    Modifico quase qualquer coisa.   :)
    ------------------>>>http://gtamodvicio.blogspot.com/<<<------------------

    Meu PC:
    Spoiler:

    Configurações PC:
    *Processador: Intel Core i7 4790K 4.00GHz LGA1150
    *Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
    *HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
    *HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
    *Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
    *RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
    *Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
    *Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
    *Monitor: LG 23MP55HQ Full HD HDMI 23'
    avatar
    Nex'
    Scripter CLEO - Básico
    Scripter CLEO - Básico

    Título : Imposto é roubo
    Mensagens : 959
    Reputação : 66
    Desde : 04/03/2013
    Idade : 17

    Re: 14. Indentação (espaço tabelado)

    Mensagem por Nex' em Sex 03 Fev 2017, 16:52

    Conheço ambos ↑
    Foi você quem me ensinou, alias :)
    Usei aquele por questão de facilidade


    ____________________
    PC Specs
    CPU: Intel Core i3-6100 Skylake
    GPU: HD Intel 530
    RAM: Crucial Ballistix Elite 4GB 2133MHz DDR4
    PSU: Corsair CX-430W
    MOBO: Gigabyte GA-H110M-H DDR4
    avatar
    Und
    Mensagens Nível 4
    Mensagens Nível 4

    Mensagens : 446
    Reputação : 28
    Desde : 11/01/2016

    Re: 14. Indentação (espaço tabelado)

    Mensagem por Und em Sex 03 Fev 2017, 22:19

    Uma dúvida, tem como criar um menu de armas igual do da ammu-nation em outro local? ou você precisa fazer o menu todo manual?
    Por exemplo: quando eu fiz o script de atender o telefone eu usei task_play_anim(algo assim) e tal, mas aí vocês me disseram que tinha um comando pra ele fazer tudo automatico task_cellphone(algo assim).
    avatar
    Nex'
    Scripter CLEO - Básico
    Scripter CLEO - Básico

    Título : Imposto é roubo
    Mensagens : 959
    Reputação : 66
    Desde : 04/03/2013
    Idade : 17

    Re: 14. Indentação (espaço tabelado)

    Mensagem por Nex' em Sex 03 Fev 2017, 22:34

    @Und escreveu:Uma dúvida, tem como criar um menu de armas igual do da ammu-nation em outro local? ou você precisa fazer o menu todo manual?
    Por exemplo: quando eu fiz o script de atender o telefone eu usei task_play_anim(algo assim) e tal, mas aí vocês me disseram que tinha um comando pra ele fazer tudo automatico task_cellphone(algo assim).
    Manual
    http://gtag.gtagaming.com/opcode-database/browse/GUI/
    São esses opcode "menu"
    Nunca usei, acho chato de mais criar esses menu


    ____________________
    PC Specs
    CPU: Intel Core i3-6100 Skylake
    GPU: HD Intel 530
    RAM: Crucial Ballistix Elite 4GB 2133MHz DDR4
    PSU: Corsair CX-430W
    MOBO: Gigabyte GA-H110M-H DDR4
    avatar
    AguiaX2
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 599
    Reputação : 37
    Desde : 19/08/2015
    Idade : 14
    Localização : Em algum lugar do brasil

    Re: 14. Indentação (espaço tabelado)

    Mensagem por AguiaX2 em Sex 03 Fev 2017, 22:48

    Tem opcode pra ativar a visão noturna '0' eu fiz um script um tempo atras eu nem procurei o opcode de ativar a visão noturna eu fui pro IDA pegar o endereço de memoria pra ativar ;-; apesar de sido legal eu ativei altas coisas :)


    Última edição por AguiaX2 em Sex 03 Fev 2017, 22:51, editado 1 vez(es)


    ____________________


    avatar
    Und
    Mensagens Nível 4
    Mensagens Nível 4

    Mensagens : 446
    Reputação : 28
    Desde : 11/01/2016

    Re: 14. Indentação (espaço tabelado)

    Mensagem por Und em Sex 03 Fev 2017, 22:50

    @Nex' escreveu:
    @Und escreveu:Uma dúvida, tem como criar um menu de armas igual do da ammu-nation em outro local? ou você precisa fazer o menu todo manual?
    Por exemplo: quando eu fiz o script de atender o telefone eu usei task_play_anim(algo assim) e tal, mas aí vocês me disseram que tinha um comando pra ele fazer tudo automatico task_cellphone(algo assim).
    Manual
    http://gtag.gtagaming.com/opcode-database/browse/GUI/
    São esses opcode "menu"
    Nunca usei, acho chato de mais criar esses menu
    Complicado, mas valeu :v:

    Conteúdo patrocinado

    Re: 14. Indentação (espaço tabelado)

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Qua 24 Maio 2017, 04:55