Forums » RGSS

Lendo comentários por scripts - Aula 3

    • 683 posts
    4 de junho de 2015 13h16min13s ART

    Introdução

     

    Para começar, acho que ficaram algumas dúvidas em relação á última aula e o comando \n, por que ele tem funcionalidades diferentes. Observe:

    (\n[p])

    Neste Regex, o caractere p deve ser encontrado, mas nao é adimitido dentro da primeira linha, ou seja, o \n lê caracteres em uma nova linha.
    Mas em:

    ([\n{p}])

    Eu posso escrever p em qualquer linha e o caractere será lido.
    Ou seja, tudo depende dos comandos ao redor. Bom, agora acho que ficou bem explicado, vamos á aula:

     

    Nesta Aula:

     

    Hoje vamos trabalhar alguns comandos novos entre eles:

    ([a-z])

    Esse comando procura uma letra qualquer, entre a e z, sendo assim, pode fazer um evento com o comentário 3231 que não vai acontecer nada.
    Aconselho que abra o comparador de códigos Regex para esta aula. Se esqueceu o link, Clique Aqui, pois nesta aula vamos usá-lo mais que o Rpg Maker até.

    Então, vamos estudar melhor o nosso código, que como já perceberam está entre ([ ]), vamos explicar iso também.

    ( ) - Vai encontrar o que estiver nos parênteses
    [ ] - É usado para abrigar alguns tipos de códigos
    a - z - O sistema só aceita letras de a até z, e com este comando, não aceita letras maiúsculas.

    Agora, o que vamos criar:

    "Se um monstro tiver como comentario Mover:Esquerda, e o jogador pressionar a tecla A, o monstro vai andar para baixo".

     

    Movendo monstro por comentários

     

    Na verdade, este código é relativamente simples, mas vamos implementar mais coisas nele ao longo das aulas. 

    A condição para que o monstro se mova, é que o comentário seja Mover:Esquerda. Isto é o mais simples do Regex. Quando quer selecionar um texto em si, é só botar dentro dos parênteses, sendo assim:

    (Mover:Esqerda)

    Lembrando que o código inteiro deve ficar entre / /i.

    Para quem nao entendeu como usar o Editor de textos, veja a imagem em spoiler:
    Spoiler 
    Imagem Postada



    Agora, só falta fazer a segunda condição, se pressionar a tecla A. Para quem não sabe muito de RGSS, use o código abaixo:

    Input.trigger?(Input::X)

    Então, como podemos juntar duas condições por um and no RGSS, é só usar a primeira condição:

    if comment =~ /(Mover:Abaixo)/i

    Depois, adicionar um "And" e botar a segunda condição:

    if comment =~ /(Mover:Abaixo)/i and Input.trigger?(Input::X)

    Agora, basta usarmos o comando "Mover evento: Mover a esquerda", por scripts, este comando fica assim:

    @move = $game_map.events[n]
    @move.move_left


    Tirem n e troquem pelo evento que vai ser movido.

     

    Código Final

     

    classGame_Systemalias primeiro initialize def initialize   primeiro   @initial_value=""endendclassGame_Event<Game_Characteralias segundo update def update   segundo     for cmd in@list     if cmd.code ==108or cmd.code ==408         comment = cmd.parameters[0]       end       if comment =~/(Mover:Esquerda)/i andInput.trigger?(Input::X)       @move= $game_map.events[1]       @move.move_left       end   endendend

    Considerações

     

    Nesta aula aprendemos a mover em evento usando comentários.

    Espero que qualquer dúvida que possam ter o qualquer coisa a corrigir, postem aí.

    Até,
    Mendesx

     

    Tema

     

    Complementem o script feito nesta aula, fazendo com que o evento possa andar em qualquer direção.
    Para quem acha difícil, o RGSS é difícil, e na próxima aula eu posto a resposta. Dem uma procurada no forum se nao souberem algum comando, ou perguntem aqui mesmo.

     

    Aula Passada


    A resposta do tema da aula passada:

    classGame_Systemalias primeiro initialize def initialize   primeiro   @initial_value=""endendclassGame_Event<Game_Characteralias segundo update def update   segundo     for cmd in@list     if cmd.code ==108or cmd.code ==408         comment = cmd.parameters[0]       end       if comment =~/([Olá, meu nome éMendesx.][\n{o}])/i         p comment       end   endendend