You are on page 1of 105

Conhecendo Os Scripts RGSS

Tutorial RPG Maker XP


Tutorial RPG Maker XP





Por Marcelo Cavaco (marcelocavaco@click21.com.br)




Conhecendo os Scripts
Conhecendo os Scripts







Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
1
Conhecendo Os Scripts RGSS

Consideraes Iniciais
Devido falta de tutoriais a respeito desta ferramenta de criao de jogos, decidi aplicar um
pouco de meu tempo e o meu pequeno conhecimento do assunto para mudar este quadro. Estou
fazendo isso por vontade prpria e com o intuito de ajudar. Espero conseguir neste tutorial...

Por favor, me avisem se existirem erros (podem existir erros de portugus, sobre o RPG Maker
XP

, erros de traduo ou qualquer coisa). Todos os erros sero corrigidos.



Este tutorial no um guia para solucionar problemas. Se voc no consegue executar o
aplicativo, no ser aqui que seu problema ser solucionado. Este tutorial de nvel Avanado.
Um bom conhecimento no RPG Maker necessrio para utiliza-lo.

O Maker utilizado neste tutorial uma verso em ingls, mas TODOS os nomes em ingls tm
sua traduo entre parnteses. No conheo nem utilizo verses em portugus. No conheo
quem traduziu outras verses e podem existir diferenas entre as tradues. Fiz curso de Ingls
Tcnico I e Ingls Tcnico II e acho que a traduo deve estar razovel e coerente com a
realidade, apesar disso, podem ocorrer erros. Por favor, me avisem caso encontrem algum.

No estou aqui querendo afirmar nada sobre nada nem ningum. No quero ofender nenhum
leitor, ou o visinho, ou o cachorro do visinho, ou o papagaio de qualquer um que seja. No estou
tentando provar nada. No sou guru do RPG Maker XP

. Portanto, tenham pacincia...



E me desculpem por qualquer tipo de transtorno e muito obrigado aos que me ajudaram e
incentivaram.

Fora isso, boa leitura...

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
2
Conhecendo Os Scripts RGSS


Agradecimentos
Creio que sem ajuda ningum nada... Mesmo os seres mais arrogantes da face da terra, que
negam receber qualquer forma de ajuda, um dia tiveram que receber a ajuda de algum. Mesmo
que esta tenha sido h muito tempo atrs quando o mdico ajudou esta pessoa a nascer... Mas
vamos parar de enrolar e vamos ao que interessa.

Agradeo :
Minha famlia, por me criar e aturar...
Meus amigos de RPG, por jogarem comigo...
Colegas de RPG Maker XP

, por tirarem muitas de minhas dvidas...





Aos que me ajudaram neste tutorial, demonstro aqui minha gratido, agradecendo :

phylomortis.com
pela excelente pagina da internet sobre o tema;















Se faltar algum, faa o favor de me avisar. A memria s vezes (vrias vezes) falha...

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
3
Conhecendo Os Scripts RGSS

Sumrio
Tutorial RPG Maker XP

1
Consideraes Iniciais 2
Agradecimentos 3
Sumrio 4
Como Utilizar este Tutorial 9
Comeando 10
Introduo 10
O Editor de Scripts 11
Lgica de Programao 16
Introduo 16
Lgica 16
Seqncia Lgica 16
Instrues ou Expresses 17
Algoritimo 18
Diagrama de Bloco 19
Operadores Relacionais 20
Operadores Lgicos 22
Operaes Lgicas 24
SE ... SENO / IF ... ELSE 26
Enquanto ou At que x, Processar (While ou Loop) 27
A Lgica 28




Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
4
Conhecendo Os Scripts RGSS

A Sintaxe do Ruby 30
Sintaxe e Expresses 31
Identificadores / Variveis 31
Comentrios 31
Palavras Reservadas 32
Expresses 33
Variveis e Constantes 34
Variveis Globais 34
Variveis de Instncia 35
Variveis Locais 35
Constantes 36
Pseudo Variveis 37
Expresses Literais 38
Nmeros Literais 38
Strings Literais 39
Notaes de barra invertida 39
Expression Substitution 40
Arrays 41
Hash 42
Expresses de Range (Faixa) 42
Symbols 43
Operadores RGSS 44
Operadores de redefinio (mtodos) 45
Operadores sem redefinio (controle de estruturas) 45
And (e) 46
Or (ou) 46
Not (negao) 47
(?) Operador Condicinal 47
Controle Estrutural 48
Condies 48
IF 48
if (Outra opo) 49
unless 50
unless (Outra opo) 50
case 51






Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
5
Conhecendo Os Scripts RGSS

Repeties 52
while 52
while (Outra opo) 53
until 53
until (Outra opo) 54
for 54
break 55
next 56
Method Exit (Mtodo de Sada) 57
Return 57
Definindo Classes e Mtodos 58
Definio de Classes (Class) 58
Definio de Mdulos (Module) 60
Definio de Mtodos (Method) 61
Operaes de Definio (Definition Operations) 63
alias (alis) 63

Scripts RGSS Standard 64
Listagem de Scripts RGSS Padro 64
Arrow_Actor 65
Arrow_Base 65
Arrow_Enemy 65
Game_Actor 65
Game_Actors 65
Game_BattleAction 65
Game_Battler 66
Game_Character 66
Game_CommonEvent 66
Game_Enemy 66
Game_Event 66
Game_Map 67
Game_Party 67
Game_Picture 67
Game_Player 67
Game_Screen 67
Game_SelfSwitches 68
Game_Switches 68
Game_System 68
Game_Troop 68
Game_Variables 68

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
6
Conhecendo Os Scripts RGSS

Interpreter 69
Scene_Battle 69
Scene_Debug 69
Scene_End 69
Scene_Equip 69
Scene_File 70
Scene_Gameover 70
Scene_Item 70
Scene_Load 70
Scene_Map 70
Scene_Menu 71
Scene_Name 71
Scene_Save 71
Scene_Shop 71
Scene_Skill 71
Scene_Status 71
Scene_Title 72
Sprite_Battler 72
Sprite_Character 72
Sprite_Picture 72
Sprite_Timer 72
Spriteset_Battle 72
Spriteset_Map 73
Window_Base 73
Window_BattleResult 73
Window_BattleStatus 73
Window_Command 73
Window_DebugLeft 74
Window_DebugRight 74
Window_Gold 74
Window_Help 74
Window_InputNumber 74
Window_Item 75
Window_MenuStatus 75
Window_Message 75
Window_NameEdit 75
Window_NameInput 75
Window_PartyCommand 75
Window_PlayTime 76
Window_SaveFile 76
Window_Selectable 76

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
7
Conhecendo Os Scripts RGSS

Window_ShopBuy 76
Window_ShopCommand 76
Window_ShopNumber 76
Window_ShopSell 77
Window_ShopStatus 77
Window_Skill 77
Window_SkillStatus 77
Window_Status 77
Window_Steps 77
Window_Target 78

Entendendo as Classes e Mtodos 79
Introduo 79
Orientao a Obejtos 79

Criando um Script 84
Introduo 84
Scene_Tutorial 84
O Editor de Scripts 84
Planejando da Cena 87
Entendendo As Classes 88
class Window_TutorialCommand 88
class Window_Tela1 89
class Window_Tela2 90
class Scene_Tutorial 91
O Cdigo do Script 92
Testando o Script 101

Concluso 105


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
8
Conhecendo Os Scripts RGSS

Como Utilizar este Tutorial

Para aproveitar da melhor forma possvel este tutorial, devemos saber para que ele serve. Este
documento onde estaremos vendo diversos recursos dos scripts RGSS do RPG Maker XP

.

Existem imagens de telas onde setas e crculos vermelhos indicam pontos importantes. Estas
setas e crculos vermelhos no so parte da tela e no aparecem no aplicativo. Elas foram
adicionadas neste tutorial apenas com o objetivo de auxiliar o leitor a localizar pontos
importantes na tela.

Este tutorial de nvel avanado. S aconselhvel leitura deste tutorial aps se certificar de
que j conhece completamente os recursos do RPG Maker, alm de noes de lgica de
programao, estruturao de dados e orientao a objetos.

Aps a leitura deste documento, podemos passar para o prximo tutorial da srie chamado
Scripts Avanados no RPG Maker XP

.

Podem vir a surgir novos tutoriais, sendo que a lista pode aumentar... S o tempo dir o que est
por vir...

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
9
Conhecendo Os Scripts RGSS

Comeando
Introduo

Uma pesquisa realizada em setembro de 2003 pela gamedev.net (um importante site para
programadores de jogos) revelou que a grande maioria dos jogos (72%) desenvolvida com o
auxlio de uma linguagem de script.

Embora as linguagens de script no sejam definidas muito precisamente, elas apresentam um
conjunto de caractersticas comuns tpicas. Em geral, as linguagens de script so linguagens
interpretadas, tm tipagem dinmica, gerncia automtica de memria, e fornecem facilidades
para construo de estruturas de dados dinmicas e manipulao de cadeias de caracteres.

Tipicamente, essas linguagens funcionam acopladas a programas hospedeiros implementados em
linguagens compiladas tradicionais como C e C++ (No caso do RPG Maker XP

o Ruby). Uma
outra caracterstica importante de linguagens de script que elas devem ser seguras, no sendo
possvel acessar servios no autorizados do programa hospedeiro. A combinao dessas
caractersticas resulta numa excelente ferramenta para o desenvolvimento de jogos.

Acoplar uma linguagem de script em um jogo traz vrios benefcios. A linguagem de script pode
ser usada para efetivamente implementar o script do jogo, para definir objetos e seus
comportamentos, para gerenciar os algoritimos de inteligncia artificial e controlar os
personagens, e ainda para tratar os eventos de entrada e descrever a interface com o usurio.

Uma linguagem de script tambm desempenha um papel importante nas etapas de prototipao,
teste, depurao e anlise de adequao do jogo. A escolha de uma linguagem de script simples
permite ainda que seja dado a roteiristas e artistas acesso programvel ao jogo, a fim de que
eles que possam experimentar novas idias e variaes. Esses profissionais conduzem a maior
parte do desenvolvimento real do jogo, mas no so em geral programadores profissionais e no
esto familiarizados com tcnicas sofisticadas de programao.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
10
Conhecendo Os Scripts RGSS

O Editor de Scripts

Para comearmos a criar scripts em nosso projeto, devemos conhecer o editor de scripts. Alm
disso, bastante recomendvel um conhecimento bsico de lgica de programao e orientao
a objetos.

Agora, vamos fazer uma rpida anlise da tela do editor de scripts do RPG Maker XP

e logo
depois vamos conhecer um pouco de lgica.

Com o projeto aberto, podemos abrir o editor de scripts de diversas formas. Podemos utilizar a
tecla de atalho F11, ou podemos clicar no cone da barra de ferramentas, ou ir pelo menu
Tools/Script Editor (Ferramentas/Editor de Scripts). Observe a figura 01.



Figura 01
Abrindo a tela do editor de scripts.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
11
Conhecendo Os Scripts RGSS

Na tela que se abrir podemos ver que j existem vrios scripts prontos. Observe a figura 02.

Figura 02
Tela do editor de scripts.





Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
12
Conhecendo Os Scripts RGSS

Note que na tela do editor de scripts as expresses e cdigos aparecem em diversas cores. Cada
cor representa um tipo de texto. Isso extremamente til para facilitar o entendimento dos
scripts. As cores so:

Azul: O azul utlizado representar as palavras reservadas do RGSS, ou simplesmente
sintaxe do RGSS, como o def, class, end, when, if, case, dentre outros.

Vermelho: O vermelho representa nmeros literais nas expresses e cdigos, como 1, 2,
3, 5, dentre outros.

Azul Claro: O azul mais claro representa operadores e operandos em seu cdigo. Como
=,||, + , * , dentre outros. Alm disso, representa operadores condicionais, parenteses e
colchetes.

Verde: O verde representa os comentrios. Os comentrios no so interpretados pelo
RPG Maker e so ignorados.

Roxo: O roxo representa uma cadeia de caracteres ou elementos do texto (String) em
seu cdigo.



Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
13
Conhecendo Os Scripts RGSS

O editor de Scripts do RPG maker XP

possui busca de texto, comando para substituir um texto


por outro e busca por linhas. Todos este comandos podem ser acessados por teclas de atalho.
Vejamos a lista de comandos e suas respectivas teclas de atalho:

Cut (Recortar) : Ctrl+X
Copy (Copiar) : Ctrl+C
Paste (Colar) : Ctrl+V
Undo (Voltar) : Ctrl+Z
Find (Procurar) : Ctrl+F
Replace (Subistiruir) : Ctrl+H
Jump (pular para a linha) : Ctrl+G
Zoom IN/OUT (Aumentar/Diminuir) : Ctrl+boto do meio do mouse

Estas opes podem ainda ser acessadas atravs de um menu pop up que apresentado quando
clicamos com o boto direito do mouse na tela principal do editor. Observe a figura 03.



Figura 03
Menu pop up da tela principal do editor de scripts.



Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
14
Conhecendo Os Scripts RGSS

No lado esquerdo da tela existe uma listagem com todos os scripts de nosso projeto. Esta
listagem tambm possui comandos especficos. Todos este comandos podem ser acessados por
teclas de atalho. Vejamos a lista de comandos e suas respectivas teclas de atalho:

Cut (Recortar) : Ctrl+X
Copy (Copiar) : Ctrl+C
Paste (Colar) : Ctrl+V
Undo (Voltar) : Ctrl+Z
Insert (Adicionar) : Ins
Delete (Excluir) : Del
Searsh All (Busca Total) : Control+Shft+F

Estas opes podem ainda ser acessadas atravs de um menu pop up que apresentado quando
clicamos com o boto direito do mouse na listagem de scripts do editor. Observe a figura 04.


Figura 04
Menu pop up da listagem de scripts.


Como foi dito anteriormente muitas pessoas conduzem a maior parte do desenvolvimento real do
jogo atravs de scripts, mas no so em geral programadores profissionais e no esto
familiarizados com tcnicas sofisticadas de programao. Portanto vamos conhecer um pouco
mais sobre lgica de programao antes de continuar.




Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
15
Conhecendo Os Scripts RGSS

Lgica de Programao
Introduo

Antes de comear a mexer no editor visto no captulo anterior, vamos aprender um pouco de
lgica de programao e algoritimos. Isso pode parecer desnecessrio, mas para a criao de um
bom cdigo (e sem lags) necessrio saber programar corretamente. Veremos alguns segredos
de lgica de programao nos prximos captulos.

Lgica

A lgica de programao necessria para pessoas que desejam trabalhar com desenvolvimento
de sistemas e programas (incluindo jogos), ela permite definir a seqncia lgica para o
desenvolvimento.

Ento o que lgica?

Lgica de programao a tcnica de encadear pensamentos para atingir determinado objetivo.

Seqncia Lgica

Estes pensamentos podem ser descritos como uma seqncia de instrues, que devem ser
seguidas para se cumprir uma determinada tarefa. Seqncia Lgica so passos executados at
atingir um objetivo ou soluo de um problema.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
16
Conhecendo Os Scripts RGSS

Instrues ou Expresses

Na linguagem comum, entende-se por instrues ou expresses um conjunto de regras ou
normas definidas para a realizao ou emprego de algo. Em informtica, porm, instruo a
informao que indica a um computador uma ao elementar a executar. Convm ressaltar que
uma ordem isolada no permite realizar o processo completo, para isso necessrio um conjunto
de instrues colocadas em ordem seqencial lgica.

Por exemplo, se quisermos fazer uma omelete de batatas, precisaremos colocar em prtica uma
srie de instrues: descascar as batatas, bater os ovos, fritar as batatas, etc... evidente que
essas instrues tem que ser executadas em uma ordem adequada (no se pode descascar as
batatas depois de frit-las). Dessa maneira, uma instruo tomada em separado no tem muito
sentido. Para obtermos o resultado esperado, precisamos colocar em prtica o conjunto de todas
as instrues, na ordem correta. Instrues so um conjunto de regras ou normas definidas para
a realizao ou emprego de algo. Em informtica, o que indica a um computador uma ao
elementar a executar.

Nos scripts, trabalharemos com muitas instrues e expresses que juntas e em uma
determinada ordem, daro forma ao nosso jogo.



Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
17
Conhecendo Os Scripts RGSS

Algoritimo

Um algoritimo formalmente uma seqncia finita de passos que levam a execuo de uma
tarefa. Podemos pensar em algoritimo como uma receita, uma seqncia de instrues que do
cabo de uma meta especfica.

Estas tarefas no podem ser redundantes nem subjetivas na sua definio, devem ser claras e
precisas. Como exemplos de algoritimos podemos citar os algoritimos das operaes bsicas
(adio, multiplicao, diviso e subtrao) de nmeros reais decimais. Outros exemplos seriam
os manuais de aparelhos eletrnicos, como um videocassete, que explicam passo-a-passo como,
por exemplo, gravar uma imagem ou filme.

At mesmo as coisas mais simples, podem ser descritas por seqncias lgicas. Por exemplo:
Chupar uma bala.

1. Pegar a bala;
2. Retirar o papel;
3. Chupar a bala;
4. Jogar o papel no lixo;

Isso um algoritimo. De forma genrica, podemos dizer que algoritimo so as expresses de
scripts em sua forma bruta. Seria o cdigo resumido e sem sintaxe, possuindo apenas a lgica.

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
18
Conhecendo Os Scripts RGSS

Diagrama de Bloco

O diagrama de blocos uma forma padronizada e eficaz para representar os passos lgicos de
um determinado processamento ou algoritimo. Com o diagrama podemos definir uma seqncia
de smbolos, com significado bem definido, portanto, sua principal funo a de facilitar a
visualizao dos passos de um algoritimo. Os blocos mais comuns so:


Veja que no exemplo da bala seguimos uma seqncia lgica com informaes diretas.




Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
19
Conhecendo Os Scripts RGSS

Operadores Relacionais

Os operadores relacionais so utilizados para comparar string de caracteres e nmeros. Os
valores a serem comparados podem ser caracteres ou variveis. Estes operadores sempre
retornam valores lgicos (verdadeiro ou falso / true ou false). Para estabelecer prioridades no
que diz respeito a qual operao executar primeiro, utilize os parnteses.

Os operadores relacionais so:





Exemplo:

Tendo duas variveis A = 5 e B = 3, os resultados das expresses seriam:





Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
20
Conhecendo Os Scripts RGSS

O smbolo utilizado para comparao entre expresses seria:



Veremos mais exemplos de como utilizar este smbolo mais a diante.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
21
Conhecendo Os Scripts RGSS

Operadores Lgicos

Os operadores lgicos servem para combinar resultados de expresses, retornando se o
resultado final verdadeiro ou falso. Os operadores lgicos so:



E / AND Uma expresso AND (E) verdadeira se todas as condies forem verdadeiras
OU / OR Uma expresso OR (OU) verdadeira se pelo menos uma condio for verdadeira
NOT Uma expresso NOT (NO) inverte o valor da expresso ou condio, se verdadeira
inverte para falsa e vice-versa.

A tabela abaixo mostra todos os valores possveis criados pelos trs operadores lgicos (AND, OR
e NOT).





Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
22
Conhecendo Os Scripts RGSS

Exemplo 1:

Suponha que temos trs variveis A = 5, B = 8 e C =1.
Os resultados das expresses seriam:




Exemplo 2:

Tendo as variveis SALARIO, IR e SALLIQ, e considerando os valores abaixo. Informe se as
expresses so verdadeiras ou falsas.


Verdadeiro
Falso
Verdadeiro


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
23
Conhecendo Os Scripts RGSS

Operaes Lgicas

Operaes Lgicas so utilizadas quando se torna necessrio tomar decises em um diagrama de
bloco. Num diagrama de bloco, toda deciso ter sempre como resposta o resultado
VERDADEIRO ou FALSO.

Como no exemplo do algoritimo CHUPAR UMA BALA. Imaginemos que algumas pessoas no
gostem de chupar bala de morango, neste caso teremos que modificar o algoritimo para:

1. Pegar a bala;
2. A bala de morango?
Se sim, no chupe a bala;
Se no, continue com o algoritimo;
3. Retirar o papel;
4. Chupar a bala;
5. Jogar o papel no lixo;


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
24
Conhecendo Os Scripts RGSS

Exemplo:

Algoritimo Chupar Bala utilizando diagrama de Blocos.



Note que desta vez utilizamos o smbolo para comparao entre expresses.

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
25
Conhecendo Os Scripts RGSS

SE ... SENO / IF ... ELSE

Os comandos de deciso ou desvio fazem parte das tcnicas de programao que conduzem a
estruturas de programas que no so totalmente seqenciais. Com as instrues de SALTO ou
DESVIO pode-se fazer com que o programa proceda de uma forma ou de outra, de acordo com
as decises lgicas tomadas em funo dos dados ou resultados anteriores. As principais
estruturas de deciso so: Se e Se / Seno.

Exemplo 1:
SE MDIA < 5.0 ENTO
ALUNO REPROVADO
FIMSE

Exemplo 2:
SE MDIA >= 5.0 ENTO
ALUNO APROVADO
SENO
ALUNO REPROVADO
FIMSE

Em diagrama, as expresses do exemplo 2 ficariam organizadas assim:


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
26
Conhecendo Os Scripts RGSS

Enquanto ou At que x, Processar (While ou Loop)

Neste caso, o bloco de operaes ser executado enquanto a condio x for verdadeira. O teste
da condio ser sempre realizado no inicio, ou no fim da repetio, dependendo do comando
utilizado e da linguagem de programao utilizada. Enquanto a condio for verdadeira o
processo se repete. Podemos utilizar essa estrutura para trabalharmos com contadores.

Em diagrama de bloco a estrutura a seguinte:





Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
27
Conhecendo Os Scripts RGSS

A Lgica

Expresses SE e ENQUANTO sempre usaro operadores lgicos. A lgica de programao deve
ser desenvolvida com estes operadores de forma bem estruturada, para assim, criarmos
programas menores e mais rpidos. Vamos ver um exemplo de algoritimo utilizando os conceitos
de lgica que vimos anteriormente.


Exemplo (Mdia de Notas):

PROGRAMA MEDIA_FINAL
VARIVEL NOTA1, NOTA2, NOTA3, NOTA4, MEDIA
VARIVEL NOME =

INICIO
LER (NOME)
LER (NOTA1, NOTA2, NOTA3, NOTA4)
MEDIA := (NOTA1 + NOTA2 + NOTA3 + NOTA4) / 4

SE MEDIA>=6 ENTO
ESCREVER (APROVADO!)
SENO
ESCREVER (REPROVADO!)
FIM DO SE

ESCREVER (NOME, MEDIA)
FIM.


Este algoritimo um bom exerccio de lgica, mas ainda podemos transform-lo em uma
estrutura de blocos.



Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
28
Conhecendo Os Scripts RGSS


Agora, vejamos um exemplo de bloco estruturado.

Exemplo (Mdia de Notas):

sim
Mdia
>= 6.0
????
Escreva
Reprovado
no
Fim
Escreva
Nome e Mdia
Escreva
Aprovado
MEDIA := (NOTA1 + NOTA2 + NOTA3 + NOTA4) / 4
Ler Nota 4
Ler Nota 3
Ler Nota 2
Ler Nota 1
Ler Nome
Inicio





























Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
29
Conhecendo Os Scripts RGSS

A Sintaxe do Ruby
Quando voc tiver certeza de que conhece algoritimo e lgica de programao, est na hora de
passar para o estudo de uma linguagem de programao. Estaremos agora vendo os detalhes da
linguagem Ruby, principalmente a parte relacionada com RGSS.

Os scripts RGSS se baseiam numa linguagem de programao chamada Ruby. A sigla RGSS
significa Ruby Game Scripting System, que pode ser traduzida como Sistema de Script de Jogo
Ruby. Como podemos ver, os scripts so uma extenso ou pseudpode do Ruby.

Ruby uma linguagem que trata sua sintaxe de forma case-sensitive. O que seria uma
linguagem case_sensitive? uma linguagem que diferencia as letras maisculas das minsculas,
ou seja, se voc digitar algo minsculo e depois for usar, lembre-se de que deve digitar
minsculo novamente.

Exemplo:

Se voc criar uma varivel chamada vida_do_heroi e, mais tarde, se voc digitar
Vida_do_Heroi vai ocorrer um erro, pois estas duas variveis so totalmente diferentes para o
Ruby.

Variveis, identificadores, sintaxe, espaos em branco e comentrios podem ser colocadas em
qualquer lugar da tela destinada aos scripts. Outra caracterstica peculiar que as expresses
no precisam ser escritas numa mesma linha, ou seja, podemos criar comandos em duas ou mais
linhas. Utilizando este recurso sabiamente, o cdigo pode ficar mais limpo e fcil de entender.

Nos prximos captulos veremos a sintaxe e expresses bsicas dos Scripts RGSS. Ser mostrado
um resumo dos principais comandos e alguns exemplos. Qualquer semelhana com o arquivo de
ajuda do RPG Maker XP

no uma mera coincidncia. Os prximos captulos foram realmente


baseados nos arquivos de ajuda do RPG Maker, portanto, se quiser mais detalhes sobre algo,
basta abrir o Help (Ajuda) do aplicativo.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
30
Conhecendo Os Scripts RGSS

Sintaxe e Expresses

Identificadores / Variveis

Um identificador ou varivel Ruby deve comear por um caractere alfanumrico ou o smbolo
underscore (_). No h limite de tamanho, contanto que sejam utilizados apenas caracteres
alfanumricos ou o smbolo underscore (_).

Exemplos:
ruby_simples
vida_do_heroi

aconselhvel declarar as variveis apenas com letras minsculas. No que seja errado usar
maisculas, mas fora do costume de muitos programadores.


Comentrios

Qualquer coisa que comece com um sustenido (#) considerado como um comentrio. Os
comentrios servem para escrevermos lembretes, dar dicas para outros programadores que
foram ler nosso cdigo, impedir que uma linha seja executada (sem apag-la), dentre outros...

Exemplos:

# esta uma linha de comentrio
# vida_do_heri = 500
# vida_do_heri = 1000

Os comentrios no so executados nem interpretados pelo aplicativo e aparecem no editor de
scripts com uma colorao esverdeada.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
31
Conhecendo Os Scripts RGSS

Palavras Reservadas

As palavras reservadas so palavras que fazem parte da sintaxe bsica do Ruby. Estas palavras
no podem ser usadas como variveis ou nomes de classe, ou algo semelhante. Estas palavras
foram reservadas para uso exclusivo do Ruby, mas se for utilizado o prefixo '$' ou '@' elas no
so consideradas reservadas.

As palavras reservadas, quando usadas, faro apenas o que elas foram programadas para fazer.
No adianta querer tentar criar uma varivel utilizando o nome de uma palavra reservada. No
editor de scripts, estas palavras sempre aparecem com a colorao azulada.

As palavras reservadas so:

BEGIN class ensure nil self when END def false
not super while alias defined? for or then yield
and do if redo true begin else in rescue
undef break elsif module retry unless case end next
return until

Estas so as palavras reservadas encontradas no RGSS do RPG Maker XP

.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
32
Conhecendo Os Scripts RGSS

Expresses

O termo expresses serve para tudo aquilo formado por variveis e comandos literais (nmeros,
textos, dentre outros) incluindo operaes, controle de estruturas, chamada de mtodos, classes,
clculos, mudana de valor de variveis. Tudo isso considerado como uma expresso.

Uma coleo de expresses considerada como um programa. Expresses podem ser separadas
umas das outras pelo smbolo de ponto e virgula (;) ou por quebras de linha ([Enter]).

Uma expresso pode utilizar vrias linhas, bastando pressionar a tecla [Enter] e continuar na
linha seguinte. As expresses, ainda podem ser agrupadas com parnteses. Expresses
agrupadas so efetuadas antes do resto da expresso.

Exemplos:

true
(1+2)*3
Actor()
if teste then ok else erro end



Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
33
Conhecendo Os Scripts RGSS

Variveis e Constantes

Variveis so ponteiros para reas da memria, onde podem ser armazenados valores. Variveis
e constantes so exatamente a mesma coisa dentro do Ruby. Elas tm a mesma caracterstica e
funcionam da mesma forma. A nica diferena que as constantes so como variveis que no
devem ter seu valor modificado. Ento, como saberemos como diferenciar uma varivel de uma
constante, j que elas funcionam de forma igual? Neste caso costuma-se criar variveis apenas
com letras minsculas e as constantes com letras maisculas.

O caractere inicial de uma varivel define o seu tipo (varivel global, varivel de instncia,
varivel local). Normalmente uma varivel um nome alfanumrico, exceto pelo primeiro
caractere que pode ser de outro tipo e ainda pode ter underscore (_).

Muitas variveis built-in comeam com '$' + um caractere (veja Variveis Built-In).

Variveis e constantes apontam para um objeto especfico. Adicionar valor a uma varivel, nada
mais do que criar novos ponteiros para novos objetos. Isso no cria novos objetos.

Em Ruby, tudo so objetos, pois ela uma linguagem orientada a obejtos.


Variveis Globais

Variveis que possuam o prefixo '$' so variveis globais e podem ser referenciadas de qualquer
parte do programa. Este tipo de varivel no necessita ser declarado. Quando referenciado, o
valor das variveis globais no iniciadas equivale a nil.

Exemplo:

$actor


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
34
Conhecendo Os Scripts RGSS

Variveis de Instncia

Variveis que comeam com o prefixo '@' so variveis de instncia. As variveis de instncia
so variveis que podem ser acessadas por qualquer mtodo de sua classe ou sub-classe. Estas
variveis no podem ser acessadas por outras classes diretamente. Quando referenciado, o valor
das variveis de instncia no iniciadas equivale a nil.

Exemplo:

@actor


Variveis Locais

As variveis locais e identificadores comeam com caracteres alfanumricos minsculos ou com o
smbolo '_' (underscore). Este tipo de varivel s pode ser usado ou acessado no mtodo onde foi
criado.

O escopo de variveis locais se estende entre outras estruturas como as classes, modules e
definies de mtodos (def). Neste caso, uma classe, por exemplo, considerada como uma
varivel local. Quando referenciado, o valor das variveis locais no iniciadas equivale a uma
chamada de mtodo sem nenhum argumento. Caso no exista um mtodo de mesmo nome, um
erro gerado.

Exemplo:

actor



Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
35
Conhecendo Os Scripts RGSS

Constantes

Identificadores ou variveis com letra maiscula so constantes. A definio e iniciao
dependem da aplicao. Constantes no podem ser definidas como mtodos. Acesso a constantes
no iniciadas gera um erro de exceo conhecido como NameError.

Exemplo:

ACTOR

Uma constante criada numa classe pode ser referenciada por classes e mdulos herdados. Para
acessar as constantes externamente utiliza o operador '::'.

Exemplos:

class Actors
ACTOR1 = 'Arshes'
ACTOR2 = 'Teste de Constante'
end

class Ator < Actors
heroi1 = ACTOR1 # heroi1 = "Arshes"
heroi2 = ACTOR2 # heroi2 = "Teste de Constante"
end

heroi1 = Actors::ACTOR1 # heroi1 = "Arshes"
heroi2 = Actors::ACTOR2 # heroi2 = "Teste de Constante"



Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
36
Conhecendo Os Scripts RGSS

Pseudo Variveis

Aparte das variveis comuns existe um tipo especial de varivel que so conhecidas como Pseudo
Variveis. O valor destas variveis no pode ser modificado. Ao tentar adicionar algum valor a
uma varivel deste tipo ocorrer um erro de sintaxe.

As Pseudo Variveis so:

self
Constitudo pelo mtodo ou classe atual.

nil
Instncia do NilClass class. Significa nulo. Quando algo no foi iniciado.

true
Instncia do TrueClass class. Significa verdadeiro.

false
Instncia do FalseClass class. Significa falso.



Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
37
Conhecendo Os Scripts RGSS

Expresses Literais

Em programas Ruby, os valores podem ser expressos diretamente, seja ele o valor 1 ou a string
Ol mundo!, so conhecidos como expresses literais.

Nmeros Literais

Nmeros literais podem usar o smbolo underscore (_). O interpretador Ruby ignora estes
smbolos. Isso bastante til quando usado como separador em grandes nmeros. Contudo, se
este smbolo for usado aps um nmero literal, vai ocorrer um erro.

1_000_000_000 # => 1000000000
0xffff_ffff # => 0xffffffff
Os tipos de nmeros literais so:

123 ou 0d123 um nmero inteiro decimal.
-123 um nmero inteiro (com sinal).
123.45 um nmero com ponto flutuante.

Nmero com ponto flutuante que iniciem com o ponto no so considerados pelo interpretador do
Ruby. Eles devem ser escritos com 0 (zero) na frente (exemplo : 0.1).

1.2e-3 um nmero com ponto flutuante.
0xffff um nmero inteiro hexadecimal.
0b1011 um nmero binrio inteiro.
0377 ou 0o377 um nmero octogonal inteiro.



Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
38
Conhecendo Os Scripts RGSS

Strings Literais

Expresses com uma cadeia de caracteres so conhecidas como Strings. Existem duas formas de
se criar uma string (cadeia de caracteres). So elas:

"Esta uma string\n"
'Esta tambm uma string'

Note que podemos utilizar a aspas simples ou aspas dupla. As aspas duplas permitem que sejam
usados comandos extras como notaes de barra invertida e substituio de expresses. As
aspas simples no podem conter nenhuma destas opes (exceto por \' and \\). Strings com um
espao em branco entre si so tratadas como uma nica string.

Exemplo:
texto = "test" "ando" # texto = "testando"

Notaes de barra invertida

\t equivale a um tab (0x09)
\n equivale a um newline (0x0a) (nova linha)
\r equivale a um carriage return (0x0d) (retorno de carro, ou seja, inicio de linha)
\f equivale a um form feed (0x0c)
\s equivale a um whitespace (0x20) (espao em branco)
\nnn equivale a um caractere em valor octogonal nnn (n = 0-7)
\xnn equivale a um caractere em valor hexagonal nn (n = 0-9, a-f)


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
39
Conhecendo Os Scripts RGSS

Expression Substitution

Em strings com aspas dupla e em expresses regulares, o termo "#{expresso}" usado num
contexto de substituio. Em expresses com variveis comeando com $ ou com @ a expreo
substituda pelo valor da varivel.

Se quiser evitar que o Ruby tente efetuar uma substituio, adicione uma barra invertida na
frente da expresso.

Exemplos:

$variavel = "RUBY"
nome = "meu nome #{$variavel}" # nome = "meu nome RUBY"
nome = "meu nome \#{$variavel}" # nome = "meu nome #{$variavel}"

Lembra-se de que as strings com aspas simples no interpretam os comandos extras.

nome = 'meu nome #{$variavel}' # nome = "meu nome #{$variavel}"


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
40
Conhecendo Os Scripts RGSS

Arrays

Objeto que retorna um vetor contendo o resultado de cada expresso. Array uma instncia da
classe Array. O valor inicial de um array em Ruby 0 (zero).

Exemplo: [1, 2, 3]
Syntaxe: '[' expr ',' ... ']'

Suponha que voc tenha o seguinte array:
ary = [0, 1, 2, 3]

Se quisermos adicionar os valores "a", "b", "c" removendo o se gundo e o terceiro valor do array,
podemos usar a seguinte expresso:

ary[1, 2] = ["a", "b", "c"]
vetor = ary # vetor = [0, "a", "b", "c", 3]

Para adicionarmos o valor 99 removendo o valor b, podemos usar a seguinte expresso:

ary[2, 1] = 99
vetor = ary # vetor = [0, "a", 99, "c", 3]

Para inserirmos o valor xyz sem remover nenhum valor, podemos usar a seguinte expresso:

ary[1, 0] = ["xyz"]
vetor = ary # vetor = [0, "xyz", "a", 99, "c", 3]

a = [1, 2]
b = [8, 9]
c = a + b # c = [1, 2, 8, 9]
p a # => [1, 2] (sem mudanas)
p b # => [8, 9] (sem mudanas aqui tambm)


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
41
Conhecendo Os Scripts RGSS

Hash

Retorna um objeto do tipo Hash que mapeia cada valor resultante em uma chave. Hash uma
instncia da classe Hash. Podemos dizer, de forma muito grosseira, que um Hash um conjunto
de vrios vetores dentro de outro vetor.

Exemplo:
{1=>2, 2=>4, 3=>6}

Syntaxe:
'{' expr '=>' expr ',' ... '}'
'{' expr ',' expr ',' ... '}'


Expresses de Range (Faixa)

Se uma expresso de faixa aparecer numa expresso de condio, retornar o objeto range da
expresso 1 at a expresso 2. Os objetos do tipo range so instncias da classe Range. Objetos
do tipo Range so separados pelo operador ..

Exemplo 1:
1 .. 20

Exemplo 2:
for i in 0...10
#faz qualquer coisa
end

Syntaxe:
expr1 '..' expr2
expr1 '...' expr2

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
42
Conhecendo Os Scripts RGSS

Symbols

Retorna o smbolo correspondente a uma string. Objetos Symbols so instncias da classe
Symbol. Estes so os nicos objetos que retornam o mesmo objeto sempre que so chamados.

Exemplo:

:class
:lvar
:method
:$gvar
:@ivar
:+

Syntaxe:
':' identifier
':' variable name
':' operator



Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
43
Conhecendo Os Scripts RGSS

Operadores RGSS

Com os operadores iremos efetuar nossos clculos, operaes de comparao, mudana de
valores, dentre outros... Os operadores podem ser usados em expresses literais e em conjunto
com outros comandos e/ou operadores.

Os operadores tm uma determinada prioridade de execuo. As operaes podem ser
agrupadas com parnteses para mudar a ordem de prioridade de execuo dos operadores

Exemplo:
1+2*3/4

A linguagem de programao Ruby possui os seguintes operadores:

Alto ::
[]
**
-(unary) +(unary) ! ~
* / %
+ -
<< >>
&
| ^
> >= < <=
<=> == === != =~ !~
&&
||
.. ...
?:(conditional operator)
=(+=, -= ... )
not
Baixo and or


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
44
Conhecendo Os Scripts RGSS

O Alto e Baixo define o nvel de prioridade e, conseqentemente, execuo dos operadores.

Por exemplo, "&&" tem prioridade maior que "||", ento ele interpretado da seguinte forma:

a && b || c # => (a && b) || c
a || b && c # => a || (b && c)

Operadores de redefinio (mtodos)

Operadores de redefinio, quando usados, alteram o valor da expresso ou do comando de
comparao em questo. Os valores so modificados e armazenados (temporariamente ou no).
+@ e -@ representa o mesmo que os operadores + and -. Suponha que voc tenha uma varivel
a com o valor 1 e a varivel b com o valor 2. Se voc criar a expresso a = b, a varivel a
ter seu valor redefinido para 2.

Os operadores de redefinio:
| ^ & <=> == === =~ > >= < <= << >>
+ - * / % ** ~ +@ -@ [] []= `

A atribuio de valor pode ser feita diretamente, a si mesmo ou atravs de uma atribuio
mltipla. Veremos vrias expresses com diversas formas de atribuio mais adiante.

Operadores sem redefinio (controle de estruturas)

So os operadores que no alteram os valores das expresses, portanto s servem para serem
usados em determinados tipos de expresses. Combinao de operadores de redefinio com os
operadores sem redefinio criam operadores sem redefinio. Como exemplo, temos: (!=) ou
(!~).

Os operadores sem redefinio:
= ?: .. ... ! not && and || or ::

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
45
Conhecendo Os Scripts RGSS

And (e)

Este operador avalia primeiramente o lado esquerdo da expresso, se o resultado for verdadeiro,
avalia o lado direito. Tem a mesma funo que && e um operador de baixa prioridade.

Exemplo:

teste && set
teste and set


Sintaxe:

expr '&&' expr
expr and expr


Or (ou)

Este operador avalia primeiramente o lado esquerdo da expresso, se o resultado for verdadeiro,
avalia o lado direito. Tem a mesma funo que || e um operador de baixa prioridade.

Exemplo:

vida || morte
vida or morte


Sintaxe:

expr '||' expr
expr or expr

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
46
Conhecendo Os Scripts RGSS

Not (negao)

Se o valor da expresso for True, retorna False, se o valor da expresso for False, retorna
True. Este operador funciona como uma negao comum.

Exemplo:

! teste
not teste
t != teste


Sintaxe:

'!' expr
not expr


(?) Operador Condicinal

Retorna expr2 ou expr3 dependendo do resultado da expr1. O seu funcionamento idntico a:
if expr1 then expr2 else expr3 end

Exemplo:

teste == 1 ? teste1 : teste2


Sintaxe:

expr1 ? expr2 : expr3


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
47
Conhecendo Os Scripts RGSS

Controle Estrutural

Ao contrrio do que acontece na linguagem C, as estruturas do controle no Ruby so expresses
que retornam valor. Expresses de controle estrutural so formadas pelos comandos que definem
o funcionamento bsico de seu cdigo. Estes controles podem conter Ifs, Case, Loops,
Exception, dentre outros...


Condies

IF

if --- then --- elsif --- else --- end

Se uma expresso condicional for avaliada como verdadeira, executa a expresso do then.
Clusulas mltiplas de elsif podem ser especificadas. Quando todas as clausulas If e Elsif forem
falsas, a expresso else, caso exista, executado. If retorna o valor da ltima expresso avaliada
na clusula da expresso condicional (ou na clusula else). Se no houver nenhuma clusula else
e nenhuma expresso condicional for verdadeira, retorna nil. Valores falsos e o nil so false. Tudo
mais, incluindo cadeia de caracteres vazias, verdadeiro.

Exemplo 1:

if age <= 1 then
print "Recem nascido\n"
elsif age <= 12 then
print "Criana\n"
elsif age <= 18 then
print "Adolescente\n"
else
print "Adulto\n"
end

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
48
Conhecendo Os Scripts RGSS

exemplo 2:

sexo = if actor.sexo == "M" then "masculino" else "feminino" end



Sintaxe:

if expr [then]
expr ...
[elsif expr [then]
expr ... ]
...
[else
expr ... ]
end

if (Outra opo)

Avalia e retorna o resultado da expresso esquerda da clausula If se a expresso da direita for
verdadeira. Se a condio no tiver resultado possvel, retorna nil.

Exemplo:

print "debug\n" if $DEBUG


Syntax:

expr if expr



Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
49
Conhecendo Os Scripts RGSS

unless

O comando unless funciona de forma contrria ao if, Se a condio for falsa, avalia a expresso
inicial. O comando elsif no pode ser usado com unless.

Exemplo:
unless tem_filho?
compra_cerveja
else
compra_leite
end

Sintaxe:
unless expr [then]
expr ...
[else
expr ... ]
end

unless (Outra opo)

Avalia e retorna o resultado da expresso da esquerda se a condio da direita for falsa. Se a
condio no tiver resultado possvel, retorna nil.

Exemplo:
print "stop\n" unless valid(passwd)

Sintaxe:
expr unless expr



Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
50
Conhecendo Os Scripts RGSS

case

A expresso case funciona atravs da comparao das clausulas when com a expresso do case.
Quando a clausula when comparada com a expresso case retorna true, as expresses do when
so executadas.

A expresso case retorna a ltimo valor avaliado na clausula when ou na clausula else. Se a
condio no tiver resultado possvel, retorna nil.

Exemplo:

case $idade
when 0 .. 2
"bbe"
when 3 .. 12
"criana"
when 13 .. 18
"adolescente"
else
"adulto"
end


Sintaxe:

case expr
[when expr [, expr] ... [then]
expr ..]..
[else
expr ..]
end


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
51
Conhecendo Os Scripts RGSS

Repeties

while

Executa repetidamente as instrues at que a condio de parada seja alcanada. A expresso
while retorna nil. Opcionalmente, podemos fazer uma expresso while retornar um valor ligado
expresso break.


Example:

ary = [0,2,4,8,16,32,64,128,256,512,1024]
i = 0
while i < ary.length
print ary[i]
i += 1
end


Syntax:

while expr [do]
...
end

A expresso while afeta o escopo das variveis locais.



Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
52
Conhecendo Os Scripts RGSS

while (Outra opo)

Em alguns casos desejamos executar algo enquanto esperamos que outra coisa acontea. Neste
caso a expresso executada primeiro e depois verificada a condio.

A expresso while retorna nil. Opcionalmente, podemos fazer uma expresso while retornar um
valor ligado expresso break.

Exemplo:
sleep(60) while io_not_ready?

Sintaxe:
expr while expr


until

Repete vrias vezes as expresses at que a condio de parada seja alcanada. until retorna nil.
Opcionalmente, podemos fazer uma expresso until retornar um valor ligado expresso break.

Exemplo:
until f.eof?
print f.gets
end

Sintaxe:
until expr [do]
...
end


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
53
Conhecendo Os Scripts RGSS

until (Outra opo)

Em alguns casos desejamos executar algo enquanto esperamos que outra coisa acontea. Neste
caso a expresso executada primeiro e depois verificada a condio. A expresso until retorna
nil. Opcionalmente, podemos fazer uma expresso until retornar um valor ligado expresso
break.

Exemplo:
print(f.gets) until f.eof?

Sintaxe:
expr until expr

for

A estrutura de repetio for uma das mais utilizada nos scripts, juntamente com o while. A
expresso for retorna o valor do mtodo each para cada objeto especificado no in.

Exemplo:
for i in [1, 2, 3]
print i*2, "\n"
end

Sintaxe:
for lhs ... in expr [do]
expr ..
end

Podemos repetir a execuo das expresses de cada objeto de forma semelhante a:
(expr).each '{' '|' lhs..'|' expr .. '}'

A expresso for no afeta o escopo das variveis locais.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
54
Conhecendo Os Scripts RGSS


break

Expresso utilizada quando se deseja sair de uma repetio, incluindo while, until, for e a
expresso do tipo iterator. Este comando retorna o valor nil. Se algum argumento for
especificado, o retorno ser o valor deste argumento.

Diferente da linguagem de programao C, a expresso break s pode ser usada em repeties
(em C ele pode ser usado em expresses case).


Exemplo:

i = 0
while i < 3
print i, "\n"
break
end


Sintaxe:

break [expr]


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
55
Conhecendo Os Scripts RGSS

next

A expresso next pula para a prxima iterao dentro da repetio. Em uma expresso do tipo
iterator, o next uma forma de sair ou terminar a chamada.

A expresso next retorna nil. Se algum argumento for especificado, o retorno ser o valor deste
argumento.

Exemplo:

str.each_line do |line|
next if line.empty?
print line
end


Sintaxe:

next [expr]



Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
56
Conhecendo Os Scripts RGSS

Method Exit (Mtodo de Sada)

return

Fora a sada de um mtodo retornando o valor especificado. Se dois ou mais valores forem
especificados, o mtodo de retorno considera que o valor retornado um array. Se a expresso
de retorno no existir, o valor retornado nil.

Exemplo:

return 12
return 1,2,3


Sintaxe:

return [expr[',' expr ... ]]


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
57
Conhecendo Os Scripts RGSS

Definindo Classes e Mtodos

Definio de Classes (Class)

Exemplo:

class Teste < Super
def test
:
end
:
end


Sintaxe:

class identificador ['<' classe_me ]
expr ..
end

Este comando define (cria) uma classe. Costuma-se criar nomes de classes com a primeira letra
em maisculo.

A definio de classes ocorre com a associao desta a um identificador que podemos utilizar em
nosso cdigo. Em Ruby, classes e objetos so instncias da classe Class.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
58
Conhecendo Os Scripts RGSS

Quando uma classe j est definida (criada) ainda possvel criar uma classe com o mesmo
nome. Neste caso, a segunda definio de classe ter todo o seu cdigo adicionado na primeira
definio.


Exemplo:

class Teste < Array
def tentando
end
end

class Teste
def outro_teste
end
end

Numa definio de classe, o identificador self refere-se a esta classe.

A definio de classes funciona inteiramente sobre o modelo de orientao a objetos. Isto inclui
relacionamentos do tipo herana.


Exemplo:

class Heroi
class Equipamento
end
end

O retorno de uma classe o resultado da ltima expresso executada. Se esta expresso no
possui valor de retorno, a classe retorna nil.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
59
Conhecendo Os Scripts RGSS

Definio de Mdulos (Module)

Este comando define (cria) um mdulo. Costuma-se criar nomes de mdulos com a primeira letra
em maisculo.

A definio de mdulos ocorre com a associao deste a um identificador que podemos utilizar
em nosso cdigo. Em Ruby, classes e objetos so instncias da classe Class.

Exemplo:

module Teste
def testando
:
end
:
end


Sintaxe:

module identificador
expr ..
end

Quando um mdulo j est definido (criado) ainda possvel criar um mdulo com o mesmo
nome. Neste caso, a segunda definio do mdulo ter todo o seu cdigo adicionado na primeira
definio.

O retorno de um mdulo o resultado da ltima expresso executada. Se esta expresso no
possui valor de retorno, o mdulo retorna nil.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
60
Conhecendo Os Scripts RGSS

Definio de Mtodos (def)

Para criarmos um mtodo usamos a expresso def. Esta expresso cria um mtodo de classe ou
mdulo. Se os mtodos forem definidos na classe me, todos os filhos podero usa-los. O
funcionamento dos mtodos semelhante ao das funes que existem em outras linguagens de
programao.

Nome de mtodos podem possuir caracteres normais ou operadores de redefinio (==, +, -,).

Exemplo:

def fatorial(n)
if n == 1 then
1
else
n * fatorial (n-1)
end
end


Sintaxe:

def nome_do_mtodo ['(' [arg ['=' default]] ... [',' '*' arg] ')']
expr ..
[rescue [error_type,..] [then]
expr ..]..
[ensure
expr ..]
end




Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
61
Conhecendo Os Scripts RGSS

Quando uma expresso possui argumentos, na chamada do mtodo temos que passar valores a
estes argumentos. Caso no sejam passados, o valor do argumento omitido recebe o valor
padro. A execuo desta expresso ocorre normalmente utilizando o valor padro.

Argumentos que tenham o smbolo (*) imediatamente antes do nome, ir armazenar todos os
argumentos subseqentes num vetor (array).


Exemplos:

# Mtodo sem argumentos
def teste
end

# Mtodo com argumentos
def teste(arg, arg2)

# Mtodo com argumento de valor padro nil
def teste(arg = nil)

# Todos os exemplos de argumentos incluindo vetor
def teste(arg, arg2 = 10, arg3 = nil, *rest)

# Mtodo do tipo operador
def ==(outro)
def +(outro)
def *(outro)

A ordem de definio dos argumentos dos mtodos deve ser seguida na hora de chamar o
mtodo.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
62
Conhecendo Os Scripts RGSS

Operaes de Definio (Definition Operations)

alias (alis)

S possvel criar sinnimos do tipo alias para mtodos ou variveis globais. Esta expresso cria
um identificador que aponta para o mtodo especificado. Expresses do tipo objeto.mtodo no
so permitidas.

Exemplo:
alias teste testeantigo
alias : teste : testeantigo

Sintaxe:
alias mtodo_novo mtodo_velho

Este comando til para modificar um mtodo antigo ou adicionar novos comandos a ele.
Sempre retorna nil.

Mais exemplos:
# Definindo o mtodo "teste"
def teste
"teste"
end

# Definindo um sinnimo
alias :_novo_teste :teste
# teste redefinido
def teste
_novo_teste * 2
end

p teste # => "testeteste"

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
63
Conhecendo Os Scripts RGSS

Scripts RGSS Standard

Antes de criarmos nossos scripts vamos saber resumidamente para que servem cada um dos
scripts padres no prximo captulo.

Listagem de Scripts RGSS Padro

Vamos ento listagem padro dos scripts RGSS. Estes scripts so essenciais para o bom
funcionamento de qualquer jogo. Mas em muitos casos esta lista pode ser modificada.

Ao instalar o aplicativo, apenas estes scripts estaro disponveis, mas isso no impede que novos
scripts sejam adicionados ou que eles sejam removidos.

A estrutura dos prximos captulos a seguinte:

1. Nome da classe em negrito;
2. Herana em letras pequenas;
3. Descrio em letras normais;

As palavras em itlico sevem para fazer referncia a uma classe, objeto, varivel, indicador, ou
qualquer comando dos scripts RGSS.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
64
Conhecendo Os Scripts RGSS

Arrow_Actor
Herana: Arrow_Base
Descrio: Esta classe serve para definir o comportamento do cursor quando aponta para um
actor durante a batalha.

Arrow_Base
Herana: Sprite
Descrio: Esta classe controla o comportamento do cusror de alvo usado nas batalhas. As
classes Arrow_Actor e Arrow_Enemy herdam todas as funcionalidades desta classe.

Arrow_Enemy
Herana: Arrow_Base
Descrio: Esta classe define o comportamento do cursor ao apontar para um dos inimigos
durante a batalha.

Game_Actor
Herana: Game_Battler
Descrio: Esta classe define um ator, com todos os elementos e dados tpicos tais como o nvel,
o equipamento, e a progresso da habilidade (Database). Esta classe faz referncias s variveis
globais $game_actors e $game_party (variveis do tipo array ou vetores).

Game_Actors
Herana: Nenhuma
Descrio: Esta classe existe meramente para simplificar questes relacionadas manipulao
dos dados da varivel global $game_actors (varivel do tipo array ou vetor).

Game_BattleAction
Herana: Nenhuma
Descrio: Esta classe descreve propriedades de uma ao da batalha e possui mtodos usados
em determinar a validade e o escopo de uma ao da batalha, alm de possuir os mtodos que
decidem qual o ltimo alvo ou qual o alvo aleatrio para aes foradas durante a batalha.

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
65
Conhecendo Os Scripts RGSS

Game_Battler
Herana: Nenhuma
Descrio: Esta classe descreve um "battler", isto , uma figura de um ator ou de um monstro, e
tudo que poderia lhe acontecer durante a batalha. Observe que estes objetos do tipo "battler"
so membros distintos e diferentes da classe actors. Isto torna mais fcil a aplicao de efeitos
temporrios.

Game_Character
Herana: Nenhuma
Descrio: Esta classe determina o comportamento dos hero sprite (figuras do heri) e event
sprites (figuras de eventos) no mapa, incluindo o movimento, definindo tipos diferentes de
movimento para eventos, e garantindo o correto funcionamento do movimento para as rotas
criadas com o Define Route (Definio de Rota) e as rotas criadas com o comando Move
Event (Mover Evento).

Game_CommonEvent
Herana: Nenhuma
Descrio: Esta classe possui mtodos e indicadores para trabalharmos com informaes de
eventos comuns, tais como a lista de comandos do evento, seu trigger (gatilho), e seu swtich
(interruptor do gatilho). Esta classe possui tambm o cdigo para manter o funcionamento
eventos comuns que sejam processos paralelos.

Game_Enemy
Herana: Game_Battler
Descrio: Esta classe define um inimigo, contendo seus estados, aes, tesouro e resistncias.
Contem tambm o cdigo para decidir que ao o monster deve fazer.

Game_Event
Herana: Game_Character
Descrio: Esta classe possui informaes sobre um evento do mapa, alm de mtodos para
verificar se um evento foi executado.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
66
Conhecendo Os Scripts RGSS

Game_Map
Herana: Nenhuma
Descrio: Esta classe possui informaes sobre o mapa atual, incluindo seus tileset, a sua
passabilidade, nvoa, panorama, fundo da batalha e eventos.

Game_Party
Herana: Nenhuma
Descrio: Esta classe possui os mtodos que tratam do grupo como um todo, alm de mtodos
para tratar cada membro do grupo individualmente. Estes mtodos incluem aqueles para ganhar
ou perder dinheiro, adicionar e remover membros do grupo, e alguns mtodos teis para
batalhas.

Game_Picture
Herana: Nenhuma
Descrio: Esta classe possui informaes sobre uma imagem qualquer e contem mtodos para
mostrar, mover, girar e apagar imagens.

Game_Player
Herana: Game_Character
Descrio: Esta classe calcula a posio relativa do heri em relao ao centro do mapa, evento
que provoca decises relativas ao jogador, alm de possuir mtodos para tratar a contagem de
passos e a contagem de passos restantes para uma batalha.

Game_Screen
Herana: Nenhuma
Descrio: Esta classe possuiu informaes e mtodos para controle da tela do jogo, e controle
do mapa, tal como o tempo se passa, como a tela pisca e como a tela se movimenta (efeito de
terremoto).


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
67
Conhecendo Os Scripts RGSS

Game_SelfSwitches
Herana: Nenhuma
Descrio: Esta classe controla os Local Switchs (Interruptores Locais) associados aos eventos
alm de possuir os mtodos para ajustar e iniciar os valores dos interruptores locais.

Game_Switches
Herana: Nenhuma
Descrio: Esta classe controla os switchs (interruptores) do jogo e possui mtodos para atribuir
e iniciar os switchs (interruptores).

Game_System
Herana: Nenhuma
Descrio: Esta classe possui informaes sobre o sistema de jogo, tal como battle event
interpreter, informaes sobre o evento de mapa ou de batalha em execuo, a quantidade de
tempo restante no temporizador, se os menus saving (registrar o jogo), main menu (menu
principal) e encounters (encontros) esto desabilitados, etc... A maioria dos mtodos desta
classe tratam do processamento dos sons.

Game_Troop
Herana: Nenhuma
Descrio: Esta classe possui informaes sobre o grupo de monstros que est em batalha, alm
de possuir mtodos para configurar os grupos de monstros e para determinar um alvo aleatrio
para um monstro.

Game_Variables
Herana: Nenhuma
Descrio: Esta classe possui as variveis do jogo alm de ter mtodos para atribuir e iniciar os
dados das variveis.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
68
Conhecendo Os Scripts RGSS

Interpreter
Herana: Nenhuma
Descrio: Esta classe possui mtodos que executam os comandos dos eventos incorporados.
Cada evento executando representa uma instncia desta classe.

Scene_Battle
Herana: Nenhuma
Descrio: Esta a classe principal do sistema da batalha. Para facilitar o entendimento desta
classe, o cdigo do sistema da batalha dividido em Phases (fases). Estas fases so:
Fase 1: Inicio da fase de batalha;
Fase 2: Fase de comandos do grupo de heris;
Fase 3: Fase de comandos individuais;
Fase 4: Fase principal;
Fase 5: Fase da vitria;

Scene_Debug
Herana: Nenhuma
Descrio: Esta classe representa a tela de depurao do jogo que aberta quando se pressiona
a tecla F9 durante um test play (Teste de Jogo).

Scene_End
Herana: Nenhuma
Descrio: Esta classe controla o menu que aparece quando voc seleciona a opo End Game
(Fim de Jogo) do menu principal.

Scene_Equip
Herana: Nenhuma
Descrio: Esta classe controla a tela de equipamentos e todas as janelas contidas nela.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
69
Conhecendo Os Scripts RGSS

Scene_File
Herana: Nenhuma
Descrio: Esta classe controla os elementos da seleo de arquivo utilizados ao se registrar
(save) e carregar (load) um arquivo da memria. Existem duas classes que so heranas desta,
Scene_Save e Scene_Load, que controlam elemetos especficos do registro (save) e
carregamento (load) respectivamente.

Scene_Gameover
Herana: Nenhuma
Descrio: Esta classe controla os elementos da tela de fim de jogo (Gameover Screen).

Scene_Item
Herana: Nenhuma
Descrio: Esta classe controla a seleo dos itens de menu do menu principal. Note que um
processo seperado garante que o menu de itens aparea quando o comando da batalha "item"
selecionado.

Scene_Load
Herana: Scene_File
Descrio: Esta classe garante que o processo de seleo de arquivos inicie apenas uma vez o
arquivo de jogo e da forma correta.

Scene_Map
Herana: Nenhuma
Descrio: Esta classe garante que os elementos relacionados ao mapa como a janela da
mensagem e a chamada dos vrios menus que podem mudar a cena (scene). Alm disso, esta
classe responsvel pelo processamento dos grficos dos eventos do mapa, que so asegurados
pela classe de Game_Map e por seus objetos.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
70
Conhecendo Os Scripts RGSS

Scene_Menu
Herana: Nenhuma
Descrio: Esta classe atualiza o menu principal do jogo, processa as entradas do usurio no
menu de comando e a seleo de personagens do menu de estatsticas.

Scene_Name
Herana: Nenhuma
Descrio: Esta classe controla a tela "Enter Hero Name" (Digitar Nome do Heri). Este tela pode
ser chamada atravs dos comandos de eventos.

Scene_Save
Herana: Scene_File
Descrio: Esta classe controla a forma de seleo dos arquivos a serem gravados garantindo
que seja utilizado apenas um arquivo por vez.

Scene_Shop
Herana: Nenhuma
Descrio: Esta classe controla as telas de lojas e as suas sub-telas, alm de responder s
opes escolhidas pelo usurio.

Scene_Skill
Herana: Nenhuma
Descrio: Esta classe controla as janelas e garante a correta utilizao e seleo das habilidades
dentro do menu principal. Note que a seleo de habilidades na batalha controlada pela classe
Scene_Battle.

Scene_Status
Herana: Nenhuma
Descrio: Esta classe possui as janelas de estatsitcas do heri e podem ser acessadas atravs
do menu principal do jogo.

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
71
Conhecendo Os Scripts RGSS

Scene_Title
Herana: Nenhuma
Descrio: Esta classe controla a tela de inicio do jogo.

Sprite_Battler
Herana: Sprite
Descrio: Esta classe proporciona mudanas grficas nas imagens de batalha, tais como
atualizar a tela se a imagem estiver visvel, fazer a tela picar como um flash antes de atacar e
mostrar os danos causados durante a batalha.

Sprite_Character
Herana: Sprite
Descrio: Esta classe proporciona mudanas grficas nas imagens do personagem (character),
tais como atualizar a tela se a imagem estiver visvel, fazer a tela picar como um flash antes de
atacar e mostrar os danos causados durante a batalha.

Sprite_Picture
Herana: Sprite
Descrio: Esta classe controla as alteraes em imagens durante o jogo.

Sprite_Timer
Herana: Sprite
Descrio: Esta classe atualiza o grfico de tempo.

Spriteset_Battle
Herana: Nenhuma
Descrio: Esta classe controla todos os sprites (grupos de imagens) usados na classe de
Scene_Battle, tal como os inimigos, os atores, o fundo da batalha, e todas as imagens que esto
sendo mostradas.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
72
Conhecendo Os Scripts RGSS

Spriteset_Map
Herana: Nenhuma
Descrio: Esta classe contem os sprites (grupo de imagens) usados na classe Scene_Map, tal
como o tileset, o panorama, a nvoa, o tempo e as figuras.

Window_Base
Herana: Window
Descrio: Esta a classe principal das janelas. Todas as outras classes de janela herdam desta
classe. Ela possui mtodos teis que podem ser chamads em diversas janelas. Se voc deseja
adicionar um mtodo que voc ir usar em muitas janelas durante todo o seu jogo, voc deve
adicionr este mtodo nesta classe.

Window_BattleResult
Herana: Window_Base
Descrio: Esta a classe da janela que aparece quando voc vence uma batalha. Ela mostra a
quantidade de experincia e dinheiro adquirido. Em alguns casos itens so deixados pelos
monstros. Estes istens so mostrados nesta tela tambm.

Window_BattleStatus
Herana: Window_Base
Descrio: Esta a classe da janela que mostra os pontos de vida (HP), os pontos de habilidade
(SP) e o estado dos heris durante a batalha.

Window_Command
Herana: Window_Selectable
Descrio: Esta janela mostra uma lista de comandos. Ao contrrio das outras classes que
herdam de Window_Base, esta herda de Window_Selectable e projetada para ser o mais
flexvel possvel, permitindo que uma janela seja construda fcilmente toda vez que voc quiser
que o jogador escolha uma opo entre vrios comandos disponveis.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
73
Conhecendo Os Scripts RGSS

Window_DebugLeft
Herana: Window_Selectable
Descrio: Esta janela mostra grupos de dez swtichs e variables (interruptores e variveis) que o
usurio pode escolher e modificar durante o teste de seu projeto. Quando o usurio escolhe um
grupo do lado esquerdo na tela, o lado direito da tela mostra dez switchs ou variable
(interruptores ou variveis) individuais para serem modificados.

Window_DebugRight
Herana: Window_Selectable
Descrio: Esta janela mostra dez switchs ou variable (interruptores ou variveis) individuais
dependendo do grupo escolhido no lado esquerdo da tela. Pressionando a tecla [Enter] possvel
alterar o valor dos switchs (interruptores), alm de diversas operaes com variable (variveis)
estarem disponveis.

Window_Gold
Herana: Window_Base
Descrio: Esta janela mostra a quantidade ouro disponvel naquele momento. Esta tela
apresentada no menu, nas lojas e quando o comando "\g" utilizado nas mensagens de texto.

Window_Help
Herana: Window_Base
Descrio: Esta tela apresentada em vrias situaoes diferentes, como na tela de itens, na
tela de habilidades, equipamentos, dentre outros. Serve para apresentar um texto descritivo
sobre uma determinada situao. Na batalha serve para mostrar os nomes dos personagens e
dos inimigos.

Window_InputNumber
Herana: Window_Base
Descrio: Esta a janela para entrada de nmeros. Ela apresentada quando o comando de
evento "Input Number" (Entrar/Digitar Nmero) utilizado.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
74
Conhecendo Os Scripts RGSS

Window_Item
Herana: Window_Selectable
Descrio: Esta janela mostra a lista de itens do grupo de personagens. apresentada toda vez
que a opo Item (itens) do menu principal selecionada.

Window_MenuStatus
Herana: Window_Selectable
Descrio: Esta janela mostra o nome, o nvel, os pontos de vida (HP), os pontos de habilidade
(SP), e o estado de cada personagem do grupo. Esta janela herda de Window_Selectable e no
de Window_Base pois determinados comandos de menu requerem que uma opo esteja
selecionada.

Window_Message
Herana: Window_Selectable
Descrio: Esta a janela principal de mensagens mostrada quando o comando de evento "Show
Message" (Mostrar Mensagem) usado.

Window_NameEdit
Herana: Window_Base
Descrio: Esta janela mostra o nome original do jogador, enquanto possibilita a alterao do
nome antigo atravs da escolha de um novo nome. Os novos nomes devem ser predefinidos e o
jogador no pode criar um novo.

Window_NameInput
Herana: Window_Base
Descrio: Esta janela a janela onde o jogador realmente cria um novo nome. No precisa ser
um nome pr-determinado. O jogador escolhe as letras para o nome da maneira que quiser.

Window_PartyCommand
Herana: Window_Selectable
Descrio: Esta janela mostra as opes Fight (Lutar) ou Flee (Fugir) no inicio de cada turno.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
75
Conhecendo Os Scripts RGSS

Window_PlayTime
Herana: Window_Base
Descrio: Esta janela mostra quanto tempo de jogo j se passou no menu principal do jogo.

Window_SaveFile
Herana: Window_Base
Descrio: Esta janela mostra o estado de um arquivo salvo individualmente nas cenas
scene_save ou scene_load.

Window_Selectable
Herana: Window_Base
Descrio: Esta a classe bsica para a maioria das janelas que permitem que voc selecione
alguma opo na tela. bastante flexvel, a ponto de aceitar opes divididas em linhas e/ou em
colunas.

Window_ShopBuy
Herana: Window_Selectable
Descrio: Esta janela mostra os itens disponveis para serem comprados quando selecionada a
opo Buy (compra) na tela principal das lojas, ou seja, na tela Window_ShopCommand.

Window_ShopCommand
Herana: Window_Selectable
Descrio: Esta janela mostra as opes Buy (Comprar), Sell (Vender), and Exit (Sair) quando
uma tela de loja aberta.

Window_ShopNumber
Herana: Window_ShopNumber
Descrio: Esta tela aparece quando um item comprado ou vendido, para que possamos indicar
a quantidade de itens que desejamos.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
76
Conhecendo Os Scripts RGSS

Window_ShopSell
Herana: Window_Selectable
Descrio: Esta tela mostra os itens disponveis que podem ser vendidos quando selecionada a
opo Sell (venda) na tela principal das lojas, ou seja, na tela Window_ShopCommand.

Window_ShopStatus
Herana: Window_Base
Descrio: Quando selecionado um item para comprar numa loja, esta tela mostra a
quantidade disponvel deste mesmo item no inventrio do grupo. Ela mostra tambm a mudana
de poder ou defesa (dependendo do item) para cada personagem que pode utilizar aquele item.

Window_Skill
Herana: Window_Selectable
Descrio: Esta janela mostra a lista de habilidades do personagem e pode ser usado no menu ou
durante uma batalha.

Window_SkillStatus
Herana: Window_Base
Descrio: Esta janela aparece em cima da janela de seleo de habilidades. Ela mostra o nome,
o estado, os pontos de vida (HP) e os ponstos de habilidade SP do personagem usando esta
habilidade.

Window_Status
Herana: Window_Base
Descrio: Esta habilidade mostra o estado do personagem no menu principal.

Window_Steps
Herana: Window_Base
Descrio: Esta janela mostra no menu principal quantos passos foram dados pelos heris.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
77
Conhecendo Os Scripts RGSS

Window_Target
Herana: Window_Selectable
Descrio: Esta tela apresentada quando um item ou habilidade precisa de um alvo. Esta tela
no utilizada durante uma batalha.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
78
Conhecendo Os Scripts RGSS

Entendendo as Classes e Mtodos

Introduo

Muito bem... J vimos muita coisa. Sabemos tudo sobre a sintaxe e os comandos (eu espero),
mas ainda est meio confuso este negcio chamado orienteo a obejtos. Que bixo este? O
que siginifica orientao a objetos? o que veremos agora...


Orientao a Obejtos

Um objeto a instncia de uma classe. Traduzindo isso para portugus, uma classe e um objeto
so exatamente a mesma coisa, mas quando est no papel (ou na tela do computador)
chamado de classe e quando est sendo executado pelo programa objeto.

Vejamos um exemplo de classe:

class Musica
def initialize(nome, artista, duracao)
@nome = nome
@artista = artista
@duracao = duracao
end
end

Aqui, criamos a classe Musica. Note que criamos dentro desta classe um mtodo chamado
initialize. Este um mtodo especial do Ruby. Quando executamos o comando Musica.new para
criarmos o objeto Musica na memria, o Ruby cria um objeto no inicializado e logo depois
chama o mtodo initialize passando os parmetros especificados no new.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
79
Conhecendo Os Scripts RGSS

Na classe msica tmos trs parmetros. Estes parmetros adicionam valores a variveis de
instncia. Estas variveis podem ser acessadas por qualquer mtodo de nossa classe Musica ou
sub-classe.

Vamos voltar nossa classe e criar mais um mtodo. Ela deve ficar assim:

class Musica

def initialize(nome, artista, duracao)
@nome = nome
@artista = artista
@duracao = duracao
end

def to_s
return "Msica: #{@nome}-#{@artista} (#{@duracao})"
end

end

Aqui, estamos pedindo para nosso novo mtodo (chamado to_s) para retornar um valor no
formato String que seja composto pelo nome da msica (nome), nome do artista (artista) e a
durao da msica (duracao).

Agora, nossa classe j faz alguma coisa de til. Vamos ver um cdigo tpico onde utilizarmos a
nossa classe e seus mtodos.

minha_musica = Musica.new(Track01, Fulano, 05:00 minutos)
print minha_musica.to_s

O resultado disso ser:
"Msica: Track01-Fulano (05:00 minutos)".


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
80
Conhecendo Os Scripts RGSS

J criamos a classe Musica, mas que tal criarmos um Karaoke? Esta classe deve ser bastante
semelhante classe Musica, no acha? Precisariamos de apenas uma mudana. Esta mudana
deve possibilitar que a letra da msica aparea. Ento fica fcil criarmos a classe Karaoke. Basta
copiarmos nossa classe e colocarmos outro nome nela. Depois criamos a varivel @letra. Certo?

Errado!

Nunca duplique um cdigo (utilizando os famosos Crtl+C e Ctrl+V) numa linguagem orientada a
obejtos. Para fazermos nossa classe Karaoke do modo correto devemos utilizar as heranas.

Primeiro, ns devemos criar a classe Karaoke herdando as caracteristicas da classe Musica.

class Karaoke < Musica

def initialize(nome, artista, duracao, letra)
super(nome, artista, duracao)
@letra = letra
end

end

Note que na inicializao, temos quatro parametros agora. Numa herana, todas as variveis da
classe me funcionam com se tivessem sido declaradas na classe filha. O mesmo acontece com
os mtodos, portanto j podemos utilizar o mtodo to_s. Qual seria o resultado deste comando?

meu_karaoke = Karaoke.new(Track99, Ciclano, 02:30 minutos, la la la... laa, laa... la, la)
print meu_karaoke.to_s

O resultado disso ser:
"Msica: Track99-Ciclano (02:30 minutos)".

Onde foi parar o valor da varivel letra??? A varivel letra no apreceu, pois numa herana, os
mtodos so herdados exatamente como foram definidos na classe me. Na classe me no
mandamos a varivel letra aparecer, lembra?

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
81
Conhecendo Os Scripts RGSS

Para resolver este problema temos que redefenir o mtodo to_s. Nossa classe deve ficar assim:

class Karaoke < Musica

def initialize(nome, artista, duracao, letra)
super(nome, artista, duracao)
@letra = letra
end

def to_s
return "Karaoke: #{@nome}-#{@artista} (#{@duracao}) [#{@letra}]"
end

end

Pronto! Agora, nosso retorno ser:
"Karaoke: Track99-Ciclano (02:30 minutos) [la la la... laa, laa... la, la]".

Note que os mtodos das classes que criamos foram usadas sem problema nenhum. Isso ocorre,
pois os mtodos criados so pblicos por definio.

Se no indicarmos nada, os mtodos sero pblicos, mas ainda podemos deix-los como
protegidos ou no modo privado. Uma das formas de se fazer isso assim:

class MinhaClasse

public :metodo1, :metodo4
protected :metodo3
private :metodo4

end


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
82
Conhecendo Os Scripts RGSS

Outra forma seria esta:

class MinhaClasse
def metodo1 # o padro 'public'
#...
end

protected # os mtodos subsequentes sero 'protected'
def metodo2 # vai ser 'protected'
#...
end

private # os mtodos subsequentes sero 'private'
def metodo3 # vai ser 'private'
#...
end

public # os mtodos subsequentes sero 'public'
def metodo4 # e este vai ser 'public'
#...
end
end

Os mtodos public (pblicos) podem ser chamados por qualquer um e no existe controle de
acesso. Os mtodos so pblicos por definio ( exceo de inicialize, que sempre private).

Os mtodos protected (protegidos) podem ser chamados somente por objetos da classe atual e
de suas sub-classes. O escopo de utilizao mantido dentro da famlia, ou seja, classe me e
suas classes filhas.

Os mtodos private (confidenciais) no podem ser chamados por outra classe que no seja ela
mesma ou a classe que seja descendente direto desta classe.

Este o bsico da orientao a objetos. Agora, podemos criar nosso primeiro script.

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
83
Conhecendo Os Scripts RGSS

Criando um Script
Introduo

Agora ns j conhecemos lgica de programao, a sintaxe bsica dos scripts RGSS, os scripts
RGSS padres e o funcionamento bsico de uma linguagem OOP. Com esta base, temos
conhecimento para criar o nosso primeiro script.

Se voc est lendo este tutorial, com certeza j deve ter uma boa base nos recursos do RPG
Maker XP

. Por causa disso, este captulo ir detalhar apenas os casos referentes aos scripts.
Caso voc no tenha conhecimentos bsicos, este captulo pode parecer complexo e de difcil
entendimento. Portanto, s continue a leitura se voc tem certeza que conhece bem o aplicativo.


Scene_Tutorial

O Editor de Scripts

Aqui, vamos ver como criar uma scene completa, com tela de help (ajuda), tela de comandos,
telas secundrias, dentre outras coisas. E qual o motivo para estudarmos sobre a criao de uma
scene? Bem... Exitem muitas scenes num jogo criado no RPG Maker, portanto, se voc deseja
personalisar seu jogo, inprescendvel ter um conhecimento no funcionamento das scenes.

Primeiro crie um novo projeto. Depois vamos abrir o editor de scripts RGSS. Caso no se lembre
como fazer isso, tente usar a tecla de atalho F11.

No lado esquerdo da tela temos a lista de todos os scripts padres (aqueles que j vimos no
captulo anterior). Desca a tela at encontrar o script com nome de Main (Principal).


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
84
Conhecendo Os Scripts RGSS

Clique com o boto direito do mouse em cima do Main.

Um menu pop up deve aparecer conforme podemos observar na figura 05.


Figura 05
Menu pop up do editor de scripts.

Selecione a opo Insert (Inserir). Uma tela em branco deve aparecer. Selecione a opo criada e
d um nome para ela. Exemplo: Scene_Tutorial_Script.

Agora podemos digitar nossas expresses e cdigos do script. Observe na figura 06 como a tela
deve ficar.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
85
Conhecendo Os Scripts RGSS

Figura 06
Script do tutorial.



Antes de comearmos a encher nossa tela de expresses e cdigos, vamos entender uma scene.
Toda cena com janelas uma scene. As janelas so criadas separadamente, ou seja, cada janela
uma classe diferente. A scene tambm eu uma classe, mas ela fica responsvel apenas por
controlar o que cada janela faz.

Resumindo:
Classe da Scene: Define e controla as janelas.
Classes das Janleas: Define a aparncia das janelas.

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
86
Conhecendo Os Scripts RGSS

Planejando da Cena

Antes de chegarmos ao cdigo, vamos pensar em como ser nossa scene. Podemos criar uma
cena onde em cima fica a tela de help (ajuda), depois uma tela de comandos e por ltimo duas
telas diferentes para aprendermos a usar diversos comandos.

Nossas janelas devem ser utilizadas atravs de variveis. Vamos criar uma varivel para cada
janela. A primeira janela ser representada pela varivel @help_window onde mostrarmos
textos descritivos sobre a nossa scene. A segunda janela ser representada pela varivel
@command_window responsvel pelas opes principais de scene, depois termos a terceira
janela representada pela varivel @tela1_window e a quarta janela que ser representada pela
varivel @tela2_window onde irmos testar a iterao entre as janelas.

S com variveis que a nossa scene sonsegue manipular as janelas. Em nosso exemplo, a scene
ir manipular quatro janelas e, portanto, termos que ter quatro variveis deste tipo, sendo uma
varivel para cada janela.

A cena utiliza as variveis para manipular as janelas atrav do mtodo main da classe da scene.
L onde as variveis referentes s janelas so instanciadas e usadas pela primeira vez.

Em outros mtodos da scene, as variveis de janelas so usadas novamente toda vez que
desejamos efetuar alguma operao com janelas.




Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
87
Conhecendo Os Scripts RGSS

Entendendo As Classes

Agora que j sabemos que nossas classes de janelas sero usadas atravs de variveis, devemos
saber como ser o funcionamento das janelas e da scene. batante simples. A classe scene
possuir mtodos para controlar toda a iterao entre as janelas, cursores, opes e
informaes. A classe scene s no ir controlar o formato das janelas.

Cada janela uma classe que ter dentro de si mtodos para definir como ser o seu formato,
tamanho, cor, estilo, skin, dentre outras coisas.

Agora, vamos ver cada classe resumidamente.

class Window_TutorialCommand

A varivel @command_window deve ser do tipo de nossa janela de comando com as opes
principais de nossa scene. Nome de exemplo para esta janela: Window_TutorialCommand.

# classe Window_TutorialCommand
class Window_TutorialCommand < Window_Selectable
# mtodo initialize
def initialize
... # incializa a classe
end

# mtodo draw_item(index)
def draw_item(index)
... # desenhando o texto na janela
end

# mtodo refresh
def refresh
... # atualizando desenhos e textos da janela
end

# mtodo update_help
def update_help
... # muda o texto do help
end
end # fim da classe

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
88
Conhecendo Os Scripts RGSS

class Window_Tela1

A varivel @tela1_window deve ser do tipo de nossa primeira janela de informaes. Aqui,
podemos criar uma tela onde o jogador ir ver algumas informaes, mas no iteragir. Note que
nesta janela s vamos mostrar dados, ou seja, no vamos selecionar nada. Por causa disso, esta
janela vai herdar de Window_Base ao invs de Window_Selectable.

Nome de exemplo para esta janela: Window_Tela1.


# classe Window_Tela1
class Window_Tela1 < Window_Base

# mtodo initialize
def initialize
... # incializa a classe
end

# mtodo refresh
def refresh
... # atualizando desenhos e textos da janela
end

end # fim da classe



Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
89
Conhecendo Os Scripts RGSS

class Window_Tela2

A varivel @tela2_window deve ser do tipo de nossa segunda janela de informaes. Aqui irmos
efetuar operaes, ou seja, ser necessrio selecionar opes. Por causa disso, esta janela vai
herdar de Window_Selectable.

Nome de exemplo para esta janela: Window_Tela2.


# classe Window_Tela2
class Window_Tela2 < Window_Selectable

# mtodo initialize
def initialize
... # incializa a classe
end

# mtodo draw_item(index)
def draw_item(index)
... # desenhando o texto na janela
end

# mtodo refresh
def refresh
... # atualizando desenhos e textos da janela
end

# mtodo update_help
def update_help
... # muda o texto do help
end

end # fim da classe


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
90
Conhecendo Os Scripts RGSS

class Scene_Tutorial

Ainda termos a scene que ser responsvel por controlar todas as nossas janelas. Na classe
Scene_Tutorial onde devem existir as variveis referentes s janelas. No main elas so
instnciadas. Exemplo: @command_window = Window_TutorialCommand.new

Nome de exemplo para esta classe: Scene_Tutorial.

# Scene_Tutorial
class Scene_Tutorial

# mtodo main
def main
... # mtodo com expresses executadas por tempo indefinido at que a scene seja fechada
end

# mtodo update
def update
... # atualiza todas as janelas e verifica o tratamento dos comandos
end


# mtodo update_command
def update_command
... # checa se uma tecla foi pressionada na tela de comando principal
end


# mtodo update
def update_command_tela2
... # checa se uma tecla foi pressionada na tela de comando da janela Window_Tela2
end

end # fim da classe




Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
91
Conhecendo Os Scripts RGSS

O Cdigo do Script

Agora, finalmente, vamos ao cdigo!
#------------------------------------------------------------------------------
# Window_TutorialCommand
# * janela de comando que herda de Window_Selectable
#------------------------------------------------------------------------------
class Window_TutorialCommand < Window_Selectable

#------------------------------------------------------------------------------
# mtodo initialize da janela Window_TutorialCommand
#------------------------------------------------------------------------------
def initialize

# incializa a classe me
super(0, 64, 640, 64)

# configura a rea disponvel para uso da janela
self.contents = Bitmap.new(width - 32, height - 32)
# configura a fonte da janela
self.contents.font.name = $fontface
# configura o tamanho da fonte da janela
self.contents.font.size = $fontsize

# vetor com opes de comando da janela
@commands = ["Tela 01", "Tela 02", "Voltar para o Mapa"]
# indicando quantos itens queremos na tela de comando
# itens igual ao total de valores no vetor @commands
@item_max = @commands.size
# indicando quantas colunas queremos na tela de comando
# colunas igual ao nmero de itens
@column_max = @item_max

# redesenhando a janela
refresh

# indicando a posio inicial do cursor ao abrir a janela
self.index = 0
# indicando a posio da janela no eixo Z
self.z=50
end # fim do mtodo initialize da classe Window_TutorialCommand

#------------------------------------------------------------------------------
# mtodo draw_item da janela Window_TutorialCommand
#------------------------------------------------------------------------------
def draw_item(index) # index representa a coluna onde o texto vai ser digitado

# calculando a posio x do texto
x = 4 + index * (640/@column_max)

# calculando o tamanho do texto
w = (640/@column_max)-32

# indicando a cor do texto
self.contents.font.color = normal_color


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
92
Conhecendo Os Scripts RGSS

# desenhando o texto na janela
self.contents.draw_text(x, 0, w, 32, @commands[index])

end # fim do mtodo draw_item(index) da classe Window_TutorialCommand

#------------------------------------------------------------------------------
# mtodo refresh da janela Window_TutorialCommand
#------------------------------------------------------------------------------
def refresh

# limpando toda a janela
self.contents.clear

# indicando a skin da janela
@windowskin_name = $game_system.windowskin_name
self.windowskin = RPG::Cache.windowskin(@windowskin_name)

# desenhandoa listagem de itens
for i in 0...@item_max
draw_item(i)
end

# atualizando otexto da tela de help (ajuda)
update_help

end # fim do mtodo refresh da classe Window_TutorialCommand

#------------------------------------------------------------------------------
# mtodo update_help da janela Window_TutorialCommand
#------------------------------------------------------------------------------
def update_help

# se a janela ativa no tiver help, retorna sem dar erro
return if @help_window.nil?

# se a janela atual estiver ativa...
if self.active == true

if self.index == 0
# se a posio do cursor for 0 (zero) na janela atual...
# ento muda o texto de help para "Abre a Tela 01."
@help_window.set_text("Abre a Tela 01.")
elsif self.index == 1
# se a posio do cursor for 1 (um) na janela atual...
# ento muda o texto de help para "Abre a Tela 02."
@help_window.set_text("Abre a Tela 02.")
elsif self.index == 2
# se a posio do cursor for 2 (dois) na janela atual...
# ento muda o texto de help para "Fecha a Scene."
@help_window.set_text("Fecha a Scene.")
end # fim do if self.index == xxx
end # fim do if self.active == true

end # fim do mtodo update_help da classe Window_TutorialCommand

end # fim da classe Window_TutorialCommand
#------------------------------------------------------------------------------
# Fim da classe Window_TutorialCommand
#------------------------------------------------------------------------------

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
93

Conhecendo Os Scripts RGSS

#------------------------------------------------------------------------------
# Window_Tela1
# * janela normal que herda de Window_Base
#------------------------------------------------------------------------------
class Window_Tela1 < Window_Base
#------------------------------------------------------------------------------
# mtodo initialize da janela Window_Tela1
#------------------------------------------------------------------------------
def initialize

# incializa a classe me
super(0, 128, 640, 352)

# configura a rea disponvel para uso da janela
self.contents = Bitmap.new(width - 32, height - 32)
# configura a fonte da janela
self.contents.font.name = $fontface
# configura o tamanho da fonte da janela
self.contents.font.size = $fontsize

# redesenhando a janela
refresh
# indicando a posio da janela no eixo Z
self.z=50

end # fim do mtodo initialize da classe Window_Tela1

#------------------------------------------------------------------------------
# mtodo refresh da janela Window_Tela1
#------------------------------------------------------------------------------
def refresh

# limpando toda a janela
self.contents.clear

# indicando a skin da janela
@windowskin_name = $game_system.windowskin_name
self.windowskin = RPG::Cache.windowskin(@windowskin_name)

# indicando a cor do texto
self.contents.font.color = normal_color

# cria varivel com ponteiro para o primeiro actor (heroi)
actor = $game_party.actors[0]

# desenhando os diversos tipos de textos na janela
self.contents.draw_text(4 , 32 * 0, 640, 32, "Nome: " + actor.name) # desenhando o nome
self.contents.draw_text(4 , 32 * 1, 640, 32, "Classe: " + actor.class_name + " (nvel " + actor.level.to_s + ")") # desenhando a classe e nvel
self.contents.draw_text(4 , 32 * 3, 640, 32, "Opes modificadas na tela 2:") # desenhando texto
self.contents.draw_text(4+32, 32 * 4, 640, 32, "Varivel [0001] : " + $game_variables[1].to_s) # desenhando valor de varivel
self.contents.draw_text(4+32, 32 * 5, 640, 32, "Varivel [0002] : " + $game_variables[2].to_s) # desenhando valor de varivel
self.contents.draw_text(4+32, 32 * 6, 640, 32, "Varivel [0003] : " + $game_variables[3].to_s) # desenhando valor de varivel
self.contents.draw_text(4+32, 32 * 7, 640, 32, "Switches [0001] : " + $game_switches[1].to_s) # desenhando valor de swtich
self.contents.draw_text(4+32, 32 * 8, 640, 32, "Switches [0002] : " + $game_switches[2].to_s) # desenhando valor de swtich
self.contents.draw_text(4+32, 32 * 9, 640, 32, "Switches [0003] : " + $game_switches[3].to_s) # desenhando valor de swtich

# desenhando os diversos tipos de informao sobre o heri
draw_actor_graphic (actor, 364, 32 * 1.6) # desenhando o chaset
draw_actor_hp (actor, 396, 32 * 0, 172) # desenhando o HP

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
94
draw_actor_sp (actor, 396, 32 * 1, 172) # desenhando o SP
Conhecendo Os Scripts RGSS

draw_actor_parameter(actor, 396, 32 * 3, 0) # desenhando atributos
draw_actor_parameter(actor, 396, 32 * 4, 1) # desenhando atributos
draw_actor_parameter(actor, 396, 32 * 5, 2) # desenhando atributos
draw_actor_parameter(actor, 396, 32 * 6, 3) # desenhando atributos
draw_actor_parameter(actor, 396, 32 * 7, 4) # desenhando atributos
draw_actor_parameter(actor, 396, 32 * 8, 5) # desenhando atributos
draw_actor_parameter(actor, 396, 32 * 9, 6) # desenhando atributos

end # fim do mtodo refresh da classe Window_Tela1

end # fim da classe Window_Tela1
#------------------------------------------------------------------------------
# Fim da classe Window_Tela1
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
# Window_Tela2
# * janela de comando que herda de Window_Selectable
#------------------------------------------------------------------------------
class Window_Tela2 < Window_Selectable
#------------------------------------------------------------------------------
# mtodo initialize da janela Window_Tela2
#------------------------------------------------------------------------------
def initialize

# incializa a classe me
super(0, 128, 640, 352)

# configura a rea disponvel para uso da janela
self.contents = Bitmap.new(width - 32, height - 32)
# configura a fonte da janela
self.contents.font.name = $fontface
# configura o tamanho da fonte da janela
self.contents.font.size = $fontsize

# indicando quantos itens queremos na tela de comando
@item_max = 10
# indicando quantas colunas queremos na tela de comando
@column_max = 1

# variveis temporrias usadas no vetor com opes de comando
s1 = "Variable: [0001] += 1"
s2 = "Variable: [0001] -= 1"
s3 = "Variable: [0002] += 15"
s4 = "Variable: [0002] -= 15"
s5 = "Variable: [0002] *= 2"
s6 = "Switch: [0001] = ON"
s7 = "Switch: [0001] = OFF"
s8 = "Switch: [0002] = ON / OFF"
s9 = "Variable: [0003] = Variable: [0001] * Variable: [0002]"
s10 = "Switch: [0003] = not Switch: [0002]"

# vetor com opes de comando da janela
@commands = [s1,s2,s3,s4,s5,s6,s7,s8,s9,s10]

# redesenhando a janela
refresh

# indicando a posio inicial do cursor ao abrir a janela

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
95
self.index = 0
Conhecendo Os Scripts RGSS

# indicando a posio da janela no eixo Z
self.z=50
end # fim do mtodo initialize da classe Window_Tela2

#------------------------------------------------------------------------------
# mtodo draw_item(index) da janela Window_Tela2
#------------------------------------------------------------------------------
def draw_item(index) # index representa a linha onde o texto vai ser digitado

# calculando a posio y do texto
y = index * 32

# indicando a cor do texto
self.contents.font.color = normal_color

# desenhando o texto na janela
self.contents.draw_text(4, y, 640, 32, @commands[index].to_s)
end # fim do mtodo draw_item(index) da classe Window_Tela2

#------------------------------------------------------------------------------
# mtodo refresh da janela Window_Tela2
#------------------------------------------------------------------------------
def refresh

# limpando toda a janela
self.contents.clear

# indicando a skin da janela
@windowskin_name = $game_system.windowskin_name
self.windowskin = RPG::Cache.windowskin(@windowskin_name)

# desenhandoa listagem de itens
for i in 0...@item_max
draw_item(i)
end

# atualizando otexto da tela de help (ajuda)
update_help

end # fim do mtodo refresh da classe Window_Tela2

#------------------------------------------------------------------------------
# mtodo update_help da janela Window_Tela2
#------------------------------------------------------------------------------
def update_help

# se a janela ativa no tiver help, retorna sem dar erro
return if @help_window.nil?

if self.active == true
# se a janela atual estiver ativa...
# atualiza o texto da janela de help com a opo selecionada
@help_window.set_text("opo selecionada : " + @commands[index])
end # fim do if self.active == true
end # fim do mtodo update_help da classe Window_Tela2

end # fim da classe Window_Tela2
#------------------------------------------------------------------------------
# Fim da classe Window_Tela2

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
96
#------------------------------------------------------------------------------
Conhecendo Os Scripts RGSS


#------------------------------------------------------------------------------
# Scene_Tutorial
# * Classe que vai controlar nossas janelas
#------------------------------------------------------------------------------
class Scene_Tutorial
#------------------------------------------------------------------------------
# mtodo main executado toda vez que iniciamos o objeto
# (Scene_Tutorial.New)
#------------------------------------------------------------------------------
def main

# definindo uma varivel para nossa janela de help
# no foi necessrio criar esta janela, pois usamos
# a janela de help padro dos Scripts RGSS
@help_window = Window_Help.new
# informando que queremos a janela de help ativada
@help_window.active = true
# informando que queremos a janela de help visvel
@help_window.visible = true

# definindo uma varivel para nossa janela de comandos principais
@command_window = Window_TutorialCommand.new
# associando a janela de help nossa janela de comandos
@command_window.help_window = @help_window
# informando que queremos a janela de comandos ativada
@command_window.active = true
# informando que queremos a janela de comandos visvel
@command_window.visible = true

# definindo uma varivel para nossa janela chamada Tela 01
# a janela "Tela 01" no usa a janela de help
@tela1_window = Window_Tela1.new
# informando que queremos a janela chamada Tela 01 desativada
@tela1_window.active = false
# informando que queremos a janela chamada Tela 01 visvel
@tela1_window.visible = true

# definindo uma varivel para nossa janela chamada Tela 02
@tela2_window = Window_Tela2.new
# associando a janela de help nossa janela "Tela 02"
@tela2_window.help_window = @help_window
# informando que queremos a janela chamada Tela 02 desativada
@tela2_window.active = false
# informando que queremos a janela chamada Tela 02 invisvel
@tela2_window.visible = false

# executa a transio da tela
Graphics.transition
loop do

# atualiza os grficos
Graphics.update
# atualiza as entradas
Input.update
# atualiza scene indefinidamente at que a scene seja fechada
update
if $scene != self
# se sair desta scene,

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
97
# para de executar este cdigo
Conhecendo Os Scripts RGSS

break
end # fim do if $scene != self

end # fim do comando loop do

# finaliza os grficos e imagens
Graphics.freeze

# fecha todas as janelas que criamos nesta scene
@help_window.dispose
@command_window.dispose
@tela1_window.dispose
@tela2_window .dispose

end # fim do mtodo main da classe Scene_Tutorial

#------------------------------------------------------------------------------
# mtodo update da classe Scene_Tutorial
#------------------------------------------------------------------------------
def update
# atualiza todas as janelas que criamos nesta scene
@help_window.update
@command_window.update
@tela1_window.update
@tela2_window .update

if @command_window.active
# se a janela @command_window estiver ativa
# atualiza os comandos da janela @command_window
update_command
elsif @tela2_window.active
# se a janela @tela2_windowestiver ativa
# atualiza os comandos da janela @tela2_window
update_command_tela2
end # fim do if @command_window.active

end # fim do mtodo update da classe Scene_Tutorial

#------------------------------------------------------------------------------
# mtodo update_command da classe Scene_Tutorial
#------------------------------------------------------------------------------
def update_command

#verifica a tecla pressionada
if Input.trigger?(Input::B)
# se a tecla dgitada por [esc] ou X
# toca som de cancelar
$game_system.se_play($data_system.cancel_se)
# e volta para o mapa de jogo
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
# se a tecla digitada por [enter] ou C

# toca som de deciso
$game_system.se_play($data_system.decision_se)

case @command_window.index
# verifica em que posio esta o cursor
when 0

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
98
# se o cursor estiver na posio 0 (zero)
Conhecendo Os Scripts RGSS


@command_window.active = true # ativa a janela @command_window

@help_window.active = false # desativa a janela @help_window
@help_window.visible = true # torna a janela @help_window visvel

@tela1_window.active = false # desativa a janela @tela1_window
@tela1_window.visible = true # torna a janela @tela1_window visvel

@tela2_window.active = false # desativa a janela @tela2_window
@tela2_window.visible = false # torna a janela @tela2_window invisvel

@tela1_window.refresh # redefine a janela @tela1_window

when 1
# se o cursor estiver na posio 1 (um)

@command_window.active = false # ativa a janela @command_window

@help_window.active = true # ativa a janela @help_window
@help_window.visible = true # torna a janela @help_window visvel

@tela1_window.active = false # desativa a janela @tela1_window
@tela1_window.visible = false # torna a janela @tela1_window invisvel

@tela2_window.active = true # ativa a janela @tela2_window
@tela2_window.visible = true # torna a janela @tela2_window visvel

when 2
# se o cursor estiver na posio 2 (dois)

# toca som de cancelar
$game_system.se_play($data_system.cancel_se)

# e volta para o mapa de jogo
$scene = Scene_Map.new

end # fim do case @command_window.index
end # fim do if Input.trigger?
end # fim do mtodo update_command da classe Scene_Tutorial

#------------------------------------------------------------------------------
# mtodo update da classe Scene_Tutorial
#------------------------------------------------------------------------------
def update_command_tela2
#verifica a tecla pressionada
if Input.trigger?(Input::B)
# se a tecla dgitada por [esc] ou X
# toca som de cancelar
$game_system.se_play($data_system.cancel_se)

@command_window.active = true # ativa a janela @command_window

@help_window.active = true # ativa a janela @command_window
@help_window.visible = true # torna a janela @help_window visvel

@tela1_window.active = false # desativa a janela @command_window
@tela1_window.visible = false # torna a janela @tela1_window invisvel


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
99
@tela2_window.active = false # desativa a janela @command_window
Conhecendo Os Scripts RGSS

@tela2_window.visible = true # torna a janela @tela2_window visvel

elsif Input.trigger?(Input::C)
# se a tecla dgitada por [enter] ou C
# toca som de deciso
$game_system.se_play($data_system.decision_se)

case @tela2_window.index
# verifica em que posio esta o cursor
when 0
# se o cursor estiver na posio 0 (zero)
# varivel 1 recebe +1 em seu valor
$game_variables[1] += 1
when 1
# se o cursor estiver na posio 1 (um)
# varivel 1 recebe -1 em seu valor
$game_variables[1] -= 1
when 2
# se o cursor estiver na posio 2 (dois)
# varivel 2 recebe +15 em seu valor
$game_variables[2] += 15
when 3
# se o cursor estiver na posio 3 (trs)
# varivel 2 recebe -15 em seu valor
$game_variables[2] -= 15
when 4
# se o cursor estiver na posio 4 (quatro)
# varivel 2 recebe *2 em seu valor
$game_variables[2] *= 2
when 5
# se o cursor estiver na posio 5 (cinco)
# switch 1 fica ON
$game_switches[1] = true
when 6
# se o cursor estiver na posio 6 (seis)
# switch 1 fica OFF
$game_switches[1] = false
when 7
# se o cursor estiver na posio 7 (sete)
# switch 2 muda de valor entre ON e OFF
$game_switches[2] = (not $game_switches[2])
when 8
# se o cursor estiver na posio 8 (oito)
# varivel 3 recebe o valor da varivel 1 * varivel 2
$game_variables[3] = $game_variables[1] * $game_variables[2]
when 9
# se o cursor estiver na posio 9 (nove)
# switch 3 fica com valor oposto do Switch 2
$game_switches[3] = (not $game_switches[2])
end # fim do case @tela2_window.index
end # if Input.trigger?
end # fim do mtodo update_command_tela2 da classe Scene_Tutorial

end # fim da classe Scene_Tutorial
#------------------------------------------------------------------------------
# Fim da classe Scene_Tutorial
#------------------------------------------------------------------------------

Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
100
Conhecendo Os Scripts RGSS

Testando o Script

Chegou a hora dos testes. Crie um novo evento no mapa. Deixe-o como Action Key (Tecla de
Ao). Escolha uma imagem para este evento, para podermos visualiz-lo no mapa. Abra a
terceira aba de comando e selecione o comando de evento chamado Call Script (Rodar/Chamar
Script). Na tela que ir se abrir digite $scene = Scene_Tutorial.new sem as aspas. A tela deste
comando deve ficar semelhante figura 07.

Figura 07
Evento para chamar o Script.



Com este comando estarmos instanciando a classe Scene_Tutorial na memria, ou seja,
estarmos criando o obejto Scene_Tutorial.

A tela de evento deve ficar semelhante figura 08.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
101
Conhecendo Os Scripts RGSS

Figura 08
Evento para chamar o Script.



Depois de criar o evento, clique em OK e aperte F12 para iniciar o teste de nosso jogo. Se
aproxime do evento que acabamos de criar e pressione a tecla [Enter] ou C. Se tudo estiver
correto, a scene que criamos deve aparecer na tela.

Observe as figuras 09 e 10 para ver nosso script em funcionamento.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
102
Conhecendo Os Scripts RGSS


Figura 09
Testando o Script.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
103
Conhecendo Os Scripts RGSS


Figura 10
Testando o Script.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
104
Conhecendo Os Scripts RGSS

Concluso

O objetivo deste tutorial apenas mostrar alguns dos recursos avanados dos Scripts RGSS
disponveis no RPG Maker XP

.

Este tutorial iniciou nossa caminhada no mundo dos scripts, agora vamos nos aprofundar ainda
mais neste assunto. Estamos apenas comeando a conhecer esta maravilhosa ferramenta do RPG
Maker XP

.

O nome do prximo tutorial Recursos Avanados de Scripts do RPG Maker XP

. Nele iremos
conhecer mais profundamente alguns dos recursos mais avanados do editor de scripts e
veremos toda a potencialidade que podemos ter em nossas mos.

O autor deste tutorial Marcelo Cavaco, formado em Processamento de Dados pela Faculdade
Rui Barbosa e formado em Engenharia de Produo pela Unibahia. J trabalhou 6 anos como
analista de sistemas e agora trabalha como engenheiro e responsvel pelo setor de informtica
da Sengin Servios de Engenharia de Instrumentao Ltda (www.sengin.com.br) desde 2004.

Qualquer dvida, crtica, sugesto, reclamao, comentrio ou algo semelhante, favor mandar
um e-mail para marcelocavaco@click21.com.br ou se preferir mande um scrapt (recado) no meu
Orkut.

Est na hora de avanar para o tutorial: Recursos Avanados dos Scripts do RPG Maker XP

.


Tutorial por Marcelo Cavaco (marcelocavaco@click21.com.br)
105

You might also like