Entendendo o duncionamento de um script [RGSS]

15 de agosto de 2011

Entendendo o duncionamento de um script [RGSS]

Um artigo/tutorial do Kurunko que fala sobre RGSS, a linguagem de programação usada no RPG Maker, mais especificamente no RPG Maker XP. O texto não tem a pretensão de ensinar como programar nestas ferramentas, mas sim dar alguns toques para os usuários menos experientes  em como fazer pequenas alterações nos scripts que existem prontos e disponíveis para o público maker em geral.

O texto é escrito em termos bastante informais, de forma que qualquer leigo pode entender. Mas mesmo assim é recomendável já ter alguma esperiência com RPG Maker, pelo menos ao inserir scripts, antes de sair metendo as caras.

Editando Scripts

Para quem sabe programar, aprender a mexer em scripts é super facil. OK, até ai sem novidades. Agora a porca torce o rabo quando você quer fazer uma alteração básica em um script que você achou legal mas não tem a minima idéia de como fazer isso. É normal não entender de programação, na verdade, é tão normal quanto não saber andar de bicicleta. É algo que envolve lógica e realmente não é nada que vá afetar sua vida normal fora do computador (ao menos que você realmente seja programador).

O intuito deste artigo não é ensinar programação, isto talvez futuramente, agora é só te dar uma noção básica de como se funciona um script.

Vamos começar:

A programação é constituida basicamente por lógica, ou seja, se você pedir, o interprete de scripts faz (sem nenhuma novidade até aqui). O problema é que o interprete só reconhece o que você pede (no caso o comando) se você pedir numa língua que ele entenda. Esta língua é o RGSS.

Vamos exemplificar isso. Eu quero que meu personagem fique mais rapido toda vez que eu apertar a tecla Shift. Eu poderia simplesmente pedir isso para o RPG Maker:

Falando Sobre Scripts

Um dia já tentei isto também, mas não vai funcionar heheh. Clique para ampliar a figura.

Resultado:

falando sobre scripts 2

Talvez um dia poderemos usar o idioma português como linguagem de programação, mas não hoje…

Isso, este Syntax Error (erro de sintaxe, aliás), se dá ao fato do RPG Maker não entender o que eu quis dizer, não me compreender. Então que tal se eu traduzir isso para uma língua que ele entenda?

  • Primeiro eu vou dizer a ele que eu quero modificar algo no personagem. Para isto, eu abro uma classe:
    class Game_Character

    ( todas as strings devem ser digitadas em minúsculo, porque os comandos são sensíveis a maiúsculas e minúsculas)

  • Após isso, vou expecificar que quero mexer diretamente na velocidade do personagem, digitando:
    attr_accessor :move_speed
  • Como não vou especificar mais nada nesta class, posso fechá-la. Então na linha seguinte digite:
    end

Ficará exatamente assim:

falando sobre scripts 3

clique para ver como fica!

Ótimo! Nesta etapa já dissemos para o RPG Maker que eu quero que ele mexa na velocidade do meu personagem. Mas não disse como eu quero que ele faça isso.

  • Primeiro eu irei dizer que eu quero que esta mudança de velocidade seja feita no mapa abrindo a
    class Scene_Map

    Uma ressalva importante deve ser feita aqui: não importa o quanto uma coisa pareça ser óbvia, o programa não sabe. Por isso seja uma boa pessoa e explique com classes tudo o que você pretende fazer.

  • Eu quero que o script constantemente busque para ver como anda o mapa, mas não quero que ele altere qualquer outra verificação que esteja sendo feita, por isso uso a
    alias new_update update
  • Agora eu peço para ele atualizar minha alias com
    def update

    e na linha seguinte

    new_update
  • Agora chegou a hora da verdade. Quando estou me comunicando com alguém, posso simplesmente pedir que a pessoa faça algo sem condicioná-la a uma opção de caso não o fizer. Com a linguagem do script não é assim. Tenho sempre que condicionar o programa a uma ação, e caso ela não o faça, acontece uma coisa. No caso, vou condicionar este script com o caso de apertar Shift durante o jogo, com o comando
    if Input.press?(Input::SHIFT)
  • Agora vou dizer que se eu apertar o Shift, a variável de velocidade ficará maior. Usarei um número fixo para este valor.
    $game_player.move_speed = 7
  • Mas como eu disse, a ação deve ser condicionada, e eu direi o que ele precisa fazer se eu não apertar o Shift com um  else
  • Mas oque acontece se eu não apertar o Shift? Bem, queremos que ele aja naturalmente no caso de não apertarmos shift, então vamos colocar um valor real para a velocidade do charset com
    $game_player.move_speed = 4

    (Eu coloquei 4 aqui porque de acordo com a primeira classe que abrimos, o script Game_character, a velocidade padrão de um personagem que não corre e não está lento é a velocidade 4)

  • Já traduzimos aquela frase inicial para RGSS. Mas não acaba por aqui. Lembra que eu disse que por mais óbvio que seja, temos que dizer tudo ao script? Então temos que dizer que ja terminamos de mexer em tudo do script. Mas como fazemos isso? Adicionamos um end para cada string que usamos, no caso 3.

Pronto! Terminamos o nosso primeiro Script! E ele se tornou um script muito funcional de corrida. E aí, entenderam como funciona um script?

Caso queira ele na integra:

class Game_Character
  attr_accessor :move_speed
end
class Scene_Map
  alias new_update update
  def update
    new_update
    if Input.press?(Input::SHIFT)
      $game_player.move_speed = 7
    else
      $game_player.move_speed = 4
  end
  end
end

Fontes e Créditos

Informações adicionais

Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Acesse aqui e saiba como. Obrigado!

Deixe um comentário

Inscreva-se na nossa newsletter!