RMB - Vivenciando as mudanças da vida. Vá agora para a nova RMB! rpgmakerbrasil.net!


    Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Compartilhe
    avatar
    Alucard_2
    Administrador
    Administrador

    Masculino Mensagens : 820
    Experiência : 3737
    Reputação : 57
    - : Melhor Tutorial - Oscar 2010

    Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Mensagem por Alucard_2 em Ter Jul 27, 2010 12:18 am

    Olá meus caros membros! Hoje, finalmente estou postando a tão esperada 1ª aula de RGSS!

    Nesta aula irei ensina-los os comandos básicos do RGSS2, para poderem ter uma idéia e uma base para estudar algum script.

    Quais são os comandos básicos?

    Eis uma simples lista dos comandos básicos do RGSS em geral:


    class: É o comando que inicia uma classe, como uma scene ou window.
    Por exemplo: "class Scene_Menu" indica que a partir dali será iniciado como será a classe Scene_Menu.

    def: Este comando define um processo.
    Por exemplo: "def chamar_menu" define como vai ser e o que vai acontecer no processo "chamar_menu".

    if: Indica uma condição, de que caso seja o que estiver após o if, o processo abaixo do if será executado.
    Por exemplo:
    Código:

    if Input.trigger?(Input::B)
      chamar_menu
    end
    Esse comando diz que caso a tecla B seja pressionada, o processo "chamar_menu" será executado.

    elsif: Faz parte do comando if, com a mesma função, porém não precisa de end.
    Nota: Este comando deve estar DENTRO do comando if, senão ele não terá efeito.
    Por exemplo:
    Em vez de usar este modo:
    Código:

    if Input.trigger?(Input::B)
      chamar_menu
    end
    if Input.trigger?(Input::C)
      chamar_menu_de_itens
    end
    if Input.trigger?(Input::A)
      $scene = Scene_GameOver.new
    end
    Você pode encurtar com o elsif:
    Código:

    if Input.trigger?(Input::B)
      chamar_menu
    elsif Input.trigger?(Input::C)
      chamar_menu_de_itens
    elsif Input.trigger?(Input::A)
      $scene = Scene_GameOver.new
    end

    unless: Tem a função exatamente contrária do if. O if quer dizer "se for", já o unless quer dizer "enquanto não for".
    Por exemplo:
    Código:

    unless $game_party.members.size > 0
      print "Não há membros no grupo"
    end
    Isso quer dizer o seguinte: enquanto o número de membros no grupo NÃO for maior que 0, aparecerá a mensagem "Não há membros no grupo".

    module: Um comando simples, parecido com o def e o class, porém ele não define um comando nem uma classe, ele
    simplesmente define o que estiver dentro dele, ele facilita os outros scripts e comandos para acessar certas variáveis.
    Por exemplo:
    Código:

    module variaveis
      Var_1 = 123
      Var_2 = "script"
      Var_3 = $game_variables[0]
    end

    def chamar_menu
      if variaveis::Var_1 == 123
        $scene = Scene_Menu.new
      elsif variaveis::Var_1 == variaveis::Var_2
        $scene = Scene_Item.new
      elsif variaveis::Var_3 == variaveis::Var_3
        $scene = Scene_End.new
      end
    end

    end: Eis aqui o comando mais utilizado de toda programação RGSS, a função dele é terminar um comando básico.
    Ou seja, para cada comando (class, def, if, etc...) deve-se usar um "end" quando ele acaba.
    Por exemplo:
    Código:

    def chamar_menu
      $scene = Scene_Menu.new
    end

    Pondo em prática

    Prática: Comando module

    Vamos começar de uma maneira bem simples: crie um script acima do Main.
    Por enquanto, não veremos o efeito dele, mas logo você entenderá.
    Escreva, neste script novo, dentro dos comandos dele, o seguinte:
    Código:

    module Opções_do_Menu
      Opção_1 = "Opção 1"
      Opção_2 = "Opção 2"
    end
    Isto indica que, dentro do módulo "Opções_do_Menu", a variável "Opção_1" é a frase "Opção 1", e que a variável "Opção_2" é a frase "Opção 2".
    Note que você utilizou o comando "end". Ele é essencial para a estrutura do script, como já falei antes, para terminar cada
    comando básico.

    Prática: Comando class

    Este comando é bem extenso para ser praticado. Dentro dele será utilizado os comandos "def", "if" e outros.

    No mesmo script, abaixo do "end" feito no módulo "Opções_do_Menu", escreva:

    Código:

    class Scene_Teste < Scene_Base

    Isto fará com que a partir dali seja feita a classe "Scene_Teste", que pertencerá a classe "Scene_Base" (através do "< Scene_Base).

    Prática: Comando def

    Agora, vamos começar a definir como começará a Scene, com um simples comando:
    Código:

    class Scene_Teste < Scene_Base
      def start
        super
    O "super" é um comando que define as dimensões, mas agora não é necessário aprofundar o assunto nele.
    Então, vamos colocar como a Scene começa:
    Código:

    class Scene_Teste < Scene_Base

      def start
        super
        create_command_window
        @status_window = Window_MenuStatus.new(160, 0)
      end
    Isto fará com que, quando começar a Scene, o comando "create_command_window" seja executado e, logo depois, criar a "Window_MenuStatus" nas coordenadas 160 horizontal e 0 vertical.
    Note que, novamente, utilizamos o "end" para terminar o "def start".

    Agora, perceba que o comando "create_command_window" ainda não foi definido, portanto, mãos a obra!
    Código:

    class Scene_Teste < Scene_Base

      def start
        super
        create_command_window
        @status_window = Window_MenuStatus.new(160, 0)
      end

      def create_command_window

    Agora que começamos o processo "create_command_window", vamos continuá-lo.

    Código:

    class Scene_Teste < Scene_Base

      def start
        super
        create_command_window
        @status_window = Window_MenuStatus.new(160, 0)
      end

      def create_command_window
        s1 = Opções_do_Menu::Opção_1
        s2 = Opções_do_Menu::Opção_2
        @command_window = Window_Command.new(160, [s1, s2])
      end
    Isto vai criar a janela "Window_Command", esta parte é mais complicada, irei explicar na aula sobre windows (janelas).
    Como pode ver, foi retirado do módulo "Opções_do_Menu", os dados "Opção_1" e "Opção_2" e colocados, respectivamente, nas variáveis "s1" e "s2".

    Agora, o que vamos fazer é definir como se atualizará a Scene_Teste, esta forma:
    Código:

    class Scene_Teste < Scene_Base

      def start
        super
        create_command_window
        @status_window = Window_MenuStatus.new(160, 0)
      end

      def create_command_window
        s1 = Opções_do_Menu::Opção_1
        s2 = Opções_do_Menu::Opção_2
        @command_window = Window_Command.new(160, [s1, s2])
      end

      def update
        @command_window.update
        @status_window.update
        if @command_window.active
          update_command_selection
        elsif @status_window.active
          update_actor_selection
        end
      end

    Apenas colocamos para atualizar a Window_Command e Window_MenuStatus, acho que não preciso explicar muito a parte de como atualizar uma Window, quanto ao resto, apenas copie, esta parte é mais avançada. Agora faremos praticamente o mesmo para definir como terminará a Scene_Teste:
    Código:

    class Scene_Teste < Scene_Base

      def start
        super
        create_command_window
        @status_window = Window_MenuStatus.new(160, 0)
      end

      def create_command_window
        s1 = Opções_do_Menu::Opção_1
        s2 = Opções_do_Menu::Opção_2
        @command_window = Window_Command.new(160, [s1, s2])
      end

      def update
        @command_window.update
        @status_window.update
        if @command_window.active
          update_command_selection
        elsif @status_window.active
          update_actor_selection
        end
      end

      def terminate
        @command_window.dispose
        @status_window.dispose
      end

    Simplesmente colocamos para fechar a Window_Command e Window_MenuStatus.
    Agora, vamos definir os comandos que deixamos para trás, não ligue para a extrutura deles, depois você entenderá melhor.

    Código:

    class Scene_Teste < Scene_Base

      def start
        super
        create_command_window
        @status_window = Window_MenuStatus.new(160, 0)
      end

      def create_command_window
        s1 = Opções_do_Menu::Opção_1
        s2 = Opções_do_Menu::Opção_2
        @command_window = Window_Command.new(160, [s1, s2])
      end

      def update
        @command_window.update
        @status_window.update
        if @command_window.active
          update_command_selection
        elsif @status_window.active
          update_actor_selection
        end
      end

      def terminate
        @status_window.dispose
        @command_window.dispose
      end

      def update_command_selection
        if Input.trigger?(Input::B)
          Sound.play_cancel
          $scene = Scene_Map.new
        elsif Input.trigger?(Input::C)
          if $game_party.members.size == 0 and @command_window.index < 4
            Sound.play_buzzer
            return
          elsif $game_system.save_disabled and @command_window.index == 4
            Sound.play_buzzer
            return
          end
          Sound.play_decision
          case @command_window.index
          when 0      # Item
            $scene = Scene_Item.new
          when 1      # Habilidades
            start_actor_selection
          end
        end
      end
     
      def start_actor_selection
        @command_window.active = false
        @status_window.active = true
        if $game_party.last_actor_index < @status_window.item_max
          @status_window.index = $game_party.last_actor_index
        else
          @status_window.index = 0
        end
      end
     
      def end_actor_selection
        @command_window.active = true
        @status_window.active = false
        @status_window.index = -1
      end
     
      def update_actor_selection
        if Input.trigger?(Input::B)
          Sound.play_cancel
          end_actor_selection
        elsif Input.trigger?(Input::C)
          $game_party.last_actor_index = @status_window.index
          Sound.play_decision
          case @command_window.index
          when 1  # Habilidades
            $scene = Scene_Skill.new(@status_window.index)
          when 2  # Equipamento
            $scene = Scene_Equip.new(@status_window.index)
          end
        end
      end
    end
    Perceba que, em "def update_actor_selection", foram utilizados os comandos "if" e "elsif". Veja a partir deles como eles funcionam caso não tenha entendido antes (o que eu duvido muito). Aproveite também para observar a função do comando "case", que não foi explicado no momento.

    Agora crie um evento chamando o script:

    Código:

    $scene = Scene_Teste.new

    Veja se funcionou, caso não tenha funcionado, dê uma boa olhada para verificar se não há erros no que você fez.

    Enfim, espero que você tenha aprendido a função de cada um deles, fique atento nas próximas aulas e, caso não tenha entendido alguma coisa, comente com sua dúvida. Até mais!


    Última edição por Alucard_2 em Ter Jul 27, 2010 6:19 pm, editado 4 vez(es)


    _________________________________________________
    O que estou fazendo agora:
    Avaliando Concursos
    Vamos ajudar a nova RMB a crescer!

    avatar
    MestreJujuba
    Veterano
    Veterano

    Masculino Mensagens : 413
    Experiência : 3334
    Reputação : 66

    Re: Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Mensagem por MestreJujuba em Ter Jul 27, 2010 12:58 am

    Realmente muito bom!
    Dei uma lida rápida e pude aprender alguns conceitos e algumas linhas de código, diferentes das que eu já sabia.

    Só uma pergunta:

    Note que, novamente, utilizamos o "end" para terminar o "def initialize".

    Não seria "def start"?
    Ou "initialize" tem outro significado além da def ali definida (que no caso, foi "start")?
    avatar
    Alucard_2
    Administrador
    Administrador

    Masculino Mensagens : 820
    Experiência : 3737
    Reputação : 57
    - : Melhor Tutorial - Oscar 2010

    Re: Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Mensagem por Alucard_2 em Ter Jul 27, 2010 3:44 pm

    Opa, valeu pela observação MestreJujuba, acabei trocando na hora de explicar :ops!: Vou arrumar agora mesmo.

    EDIT: Arrumado!


    _________________________________________________
    O que estou fazendo agora:
    Avaliando Concursos
    Vamos ajudar a nova RMB a crescer!

    avatar
    TidusBoy
    Associado
    Associado

    Masculino Mensagens : 74
    Experiência : 2808
    Reputação : 17

    Re: Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Mensagem por TidusBoy em Ter Jul 27, 2010 7:52 pm

    Dei uma lida rapida
    E ta muito bom ja aprendi um poko mais haha
    avatar
    Alucard_2
    Administrador
    Administrador

    Masculino Mensagens : 820
    Experiência : 3737
    Reputação : 57
    - : Melhor Tutorial - Oscar 2010

    Re: Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Mensagem por Alucard_2 em Sex Jul 30, 2010 6:18 pm

    Pelo menos cumpri meu objetivo: você aprendeu um pouco mais ^^


    _________________________________________________
    O que estou fazendo agora:
    Avaliando Concursos
    Vamos ajudar a nova RMB a crescer!

    avatar
    eduardofel
    Colaborador
    Colaborador

    Masculino Mensagens : 163
    Experiência : 2815
    Reputação : 14

    Re: Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Mensagem por eduardofel em Sab Ago 07, 2010 11:00 am

    Vlw man
    avatar
    ariellazari
    Associado
    Associado

    Masculino Mensagens : 50
    Experiência : 2737
    Reputação : 15

    Re: Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Mensagem por ariellazari em Sex Ago 20, 2010 1:21 pm

    Você vai continuar a fazer as aulas ou este tópico foi tipo:

    "Apostila de iniciação ao RGSS2"

    Mas foi muito bom, muito mais objetivo que as aulas que eu costumo ver por aí! +1rep


    EDIT-------------------------------------

    Testei e deu um erro aqui com a primeira variável das opções "s1"
    avatar
    Alucard_2
    Administrador
    Administrador

    Masculino Mensagens : 820
    Experiência : 3737
    Reputação : 57
    - : Melhor Tutorial - Oscar 2010

    Re: Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Mensagem por Alucard_2 em Sex Ago 20, 2010 7:19 pm

    @ariellazari
    Veja se não fez nada de errado, qualquer coisa me mande como está o seu (pode ser por PM)


    _________________________________________________
    O que estou fazendo agora:
    Avaliando Concursos
    Vamos ajudar a nova RMB a crescer!

    avatar
    Cpt Jango
    Novato
    Novato

    Mensagens : 1
    Experiência : 2618
    Reputação : 10

    Re: Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Mensagem por Cpt Jango em Ter Out 12, 2010 3:20 am

    Existe a possibilidade de uma video aula?
    Por que eu sou muito lerdo Ralph :P
    avatar
    Els
    Veterano
    Veterano

    Masculino Mensagens : 305
    Experiência : 2998
    Reputação : 26
    - : 2º Lugar Concurso de Mapas VX - Etapa 1

    Re: Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Mensagem por Els em Ter Out 12, 2010 8:03 am

    Muito bom!
    Merece +rep ^^'
    Vc vai postar mais aulas?? *--*
    Eu já aprendi tbém.. xD
    avatar
    Alucard_2
    Administrador
    Administrador

    Masculino Mensagens : 820
    Experiência : 3737
    Reputação : 57
    - : Melhor Tutorial - Oscar 2010

    Re: Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Mensagem por Alucard_2 em Qua Out 13, 2010 2:02 pm

    @Els
    Sim, haverá outra aula, talvez demore um pouco, pois estou meio preguiçoso em RPG Maker, mas já estou começando a retomar o rítmo.


    _________________________________________________
    O que estou fazendo agora:
    Avaliando Concursos
    Vamos ajudar a nova RMB a crescer!

    avatar
    Els
    Veterano
    Veterano

    Masculino Mensagens : 305
    Experiência : 2998
    Reputação : 26
    - : 2º Lugar Concurso de Mapas VX - Etapa 1

    Re: Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Mensagem por Els em Qua Out 13, 2010 5:36 pm

    kkkkkkkkkkkkkkkk
    de boa, não se preocupa e, vlws por disponibilizar seu conhecimento *-*
    A propósito:
    1: ese script serve pra que?
    2: Quanto conhecimento é necessário para criar atalhos de teclados por script, o básico?
    3: Você poderia verificar a fábrica de scripts? =S
    avatar
    Alucard_2
    Administrador
    Administrador

    Masculino Mensagens : 820
    Experiência : 3737
    Reputação : 57
    - : Melhor Tutorial - Oscar 2010

    Re: Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Mensagem por Alucard_2 em Qua Out 13, 2010 6:20 pm

    Simplesmente cria uma Scene com 2 opções qualquer, para entenderem a função dos comandos básicos.


    _________________________________________________
    O que estou fazendo agora:
    Avaliando Concursos
    Vamos ajudar a nova RMB a crescer!

    avatar
    theu235
    Novato
    Novato

    Masculino Mensagens : 17
    Experiência : 2629
    Reputação : 10

    Re: Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Mensagem por theu235 em Seg Out 18, 2010 6:59 pm

    o erro que da no meu e
    erro no script 84 em linha sintaxerror
    ja tentei ler denovo e n funcionou pf me ajude
    avatar
    Alucard_2
    Administrador
    Administrador

    Masculino Mensagens : 820
    Experiência : 3737
    Reputação : 57
    - : Melhor Tutorial - Oscar 2010

    Re: Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Mensagem por Alucard_2 em Ter Out 19, 2010 4:54 pm

    Deixe me ver o seu script para ver o erro que tu fez.


    _________________________________________________
    O que estou fazendo agora:
    Avaliando Concursos
    Vamos ajudar a nova RMB a crescer!

    avatar
    HugooLeal
    Membro
    Membro

    Masculino Mensagens : 94
    Experiência : 2895
    Reputação : 14

    Re: Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Mensagem por HugooLeal em Seg Nov 29, 2010 7:53 pm

    cara o meu deu tudo certinho nenhum erro mas ainda não entendi direito oq que esse script muda eu fiz tudo certo testei o jogo mas num acontece nada
    avatar
    Alucard_2
    Administrador
    Administrador

    Masculino Mensagens : 820
    Experiência : 3737
    Reputação : 57
    - : Melhor Tutorial - Oscar 2010

    Re: Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Mensagem por Alucard_2 em Seg Nov 29, 2010 10:58 pm

    Criou um evento chamando o script "$scene = Scene_Teste.new"?
    Se não, faça isso e "fale" com o evento. Vai mudar para a nossa nova tela.


    _________________________________________________
    O que estou fazendo agora:
    Avaliando Concursos
    Vamos ajudar a nova RMB a crescer!

    avatar
    HugooLeal
    Membro
    Membro

    Masculino Mensagens : 94
    Experiência : 2895
    Reputação : 14

    Re: Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Mensagem por HugooLeal em Ter Nov 30, 2010 6:20 pm

    ahh
    mas tipo agora fla Script "Teste" line 19: NoMethodError occurred
    undefined method 'update' for nil:NilClass

    Conteúdo patrocinado

    Re: Alucard_2's Classroom 1: Comandos básicos de RGSS2

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Seg Dez 11, 2017 3:03 pm