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:
- Citação :
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!