Scene_Stories
Baseado no Scene_Story de Moghunter.
Este Scene funciona apenas com figuras - até mesmo para o texto.
O que ele faz?
@Executa uma apresentação configurável
Características:
* Possibilidade de Skip (pular a apresentação)
* Centralização automática da "imagem-texto" e objeto na tela
* Mudança das figuras da pasta "Titles" para a pasta "Pictures"
* Estético: agora são duas figuras para partículas caindo, ambas opcionais
* Configuração das apresentações via "Chamar script" no evento
* 9 opções para se configurar (3 delas são obrigatórias), tentei simplificar ao máximo...
* Possibilidade de teleporte do herói para outro mapa (via 3 variáveis - o comando de
Teleport via evento se executa ANTES do script, por isso o coloquei via (variável - var,
para abreviar - por executar na hora certa)
script: Demo
ou
- Spoiler:
- Código:
-
=begin
-------------------------------------------------------------------------------
Scene_Stories V1.1 - script multi-uso
-------------------------------------------------------------------------------
By Werialso
Baseado no Scene Story de Moghunter
(http://www.atelier-rgss.com)
Alterações:
* Configuração via eventos no mapa (pelo "Call script")
* Possibilidade de teleporte do herói para outro mapa
(via variáveis - o comando de Teleport via evento
se executa ANTES do script, por isso o coloquei via
variável, por executar na hora certa)
* Poucos parâmetros (3 deles são obrigatórios),
tentei simplificar ao máximo...
* Mudança das figuras da pasta "Titles" para a pasta "Pictures"
* Estético: agora são duas partículas caindo, ambas opcionais
* Possibilidade de skip (pular a apresentação)
* Centralização automática da "imagem-texto" e objeto na tela
-------------------------------------------------------------------------------
=end
class Scene_Stories
def main
#Tempo para Transição.
@cdt_tr_time = 100
#Velocidade da movimentação do texto.
@text_speed = 1
#Ativar as imagens.
@objeto_visible = true
@particle_visible = true
@border_visible = true
#Configuração das variáveis de posição
# ID do mapa
if $game_variables[1] <= 0
$data_system.start_map_id = nil
else
$data_system.start_map_id = $game_variables[1]
end
#Coordenada X
if $game_variables[2] != $data_system.start_x
$data_system.start_x = $game_variables[2]
end
#Coordenada Y
if $game_variables[3] != $data_system.start_y
$data_system.start_y = $game_variables[3]
end
#Tipo de Sinteticidade (Bleding).
# 0 - Normal
# 1 - Inverter
# 2 - Multiplicar
@objeto_blend = 0
@particle_blend = 1
@border_blend = 2
#Definição da movimentação da partícula 1.
@particle_01_ox = 1 #(horizontal) <0 = esq, 0 = parado, >0 = dir
@particle_01_oy = -2 #(vertical) <0 = desce, 0 = parado, >0 = sobe
#Definição da movimentação da partícula 2.
@particle_02_ox = -1 #(horizontal) <0 = esq, 0 = parado, >0 = dir
@particle_02_oy = -2 #(vertical) <0 = desce, 0 = parado, >0 = sobe
#Tipo de Background
# true = Panorama
# false = Mapa
@pan_mode = true
# Velocidade do panorama
@pan_vel = 0
Audio.bgm_fade(7000)
# Definição do panorama
if $fundo != nil
@pano = Sprite.new
@pano.bitmap = RPG::Cache.picture($fundo)
@pano.x = 0
@pano.y = 0
@pano.z = 1
else
end
# Definição de figura (um livro ou qq outra coisa)
if $objeto != nil
@objeto = Sprite.new
@objeto.bitmap = RPG::Cache.picture($objeto)
# Centralizando o objeto horizontalmente
@objeto.x = (640 - @objeto.bitmap.width) / 2
# Centralizando o objeto verticalmente
@objeto.y = (480 - @objeto.bitmap.height) / 2
@objeto.z = 10
@objeto.opacity = 0
@objeto.visible = @objeto_visible
@objeto.blend_type = @objeto_blend
else
end
# Definição da camada da part1 dir->esq, cima->baixo
if $part1 != nil
@particula_01 = Plane.new
@particula_01.bitmap = RPG::Cache.picture($part1)
@particula_01.z = 20
@particula_01.opacity = 0
@particula_01.visible = @particle_visible
@particula_01.blend_type = @particle_blend
else
end
# Definição da camada da part2 esq->dir, cima->baixo
if $part2 != nil
@particula_02 = Plane.new
@particula_02.bitmap = RPG::Cache.picture($part2)
@particula_02.z = 25
@particula_02.opacity = 0
@particula_02.visible = @particle_visible
@particula_02.blend_type = @particle_blend
else
end
# Definição da camada da borda
if $borda != nil
@border = Sprite.new
@border.bitmap = RPG::Cache.picture($borda)
@border.z = 30
@border.visible = @border_visible
@border.blend_type = @border_blend
else
end
# Definição da camada da "figura-texto"
@texto = Sprite.new
@texto.bitmap = RPG::Cache.picture($texto)
# Centralizando a "figura-texto" horizontalmente
@texto.x = (640 - @texto.bitmap.width) / 2
@texto.y = 480
@texto.z = 25
@texto.opacity = 0
# Definição do fade
@blank = Plane.new
@blank.bitmap = RPG::Cache.picture($fade)
@blank.z = 40
@blank.opacity = 253
# Tempo determinado para a passagem do texto
@time = 0
@time_fv = 0
@time_move = 0
@time_fade = 480 + @texto.bitmap.height
if $mudanca != nil
Graphics.transition(@cdt_tr_time, "Graphics/Transitions/" + $mudanca)
else
end
if $musica != nil
Audio.bgm_play("Audio/Bgm/" + $musica)
else
end
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
if $fundo != nil then @pano.dispose else end
if $objeto != nil then @objeto.dispose else end
if $part1 != nil then @particula_01.dispose else end
if $part2 != nil then @particula_02.dispose else end
if $borda != nil then @border.dispose else end
@texto.dispose
@blank.dispose
end
def update
if Input.trigger?(Input::C)
if $data_system.start_map_id !=nil and $data_system.start_x != nil and $data_system.start_y != nil
$game_map.setup($data_system.start_map_id)
$game_player.moveto($data_system.start_x, $data_system.start_y)
end
if $musica != nil
Audio.bgm_fade(0)
end
$game_map.update
$scene = Scene_Map.new
end
if $texto !=nil
@time_fv += 1
@time += 1
@time_move += 1
else
end
if $objeto != nil then @objeto.opacity += 1 else end
if $fundo != nil then @pano.ox += @pan_vel else end
if $part1 != nil then @particula_01.opacity += 15 else end
if $part1 != nil then @particula_01.ox += @particle_01_ox else end
if $part1 != nil then @particula_01.oy += @particle_01_oy else end
if $part2 != nil then @particula_02.opacity += 15 else end
if $part2 != nil then @particula_02.ox += @particle_02_ox else end
if $part2 != nil then @particula_02.oy += @particle_02_oy else end
@texto.opacity += 1
if @time_fade <= 0
@blank.opacity += 1
end
if @time_fade <= 0 and $musica != nil
Audio.bgm_fade(10000)
end
if @time_fade > 0 and @blank.opacity > 0
@blank.opacity -= 1
end
if @blank.opacity >= 254 and @time_fade <= 0
if $data_system.start_map_id !=nil and $data_system.start_x != nil and $data_system.start_y != nil
$game_map.setup($data_system.start_map_id)
$game_player.moveto($data_system.start_x, $data_system.start_y)
end
$scene = Scene_Map.new
end
if @time_move > 1 and @blank.opacity <= 0
@time_move = 0
@texto.oy += @text_speed
@time_fade -= @text_speed
end
if @time > 12
@time = 0
end
if @time_fv > 100
@time_fv = 0
end
if $objeto != nil
if @time_fv > 50
if @time >= 12
@objeto.y -= 1
end
else
if @time >= 12
@objeto.y += 1
end
end
end
if $objeto != nil
if @objeto.y < 160
@objeto.y = 160
elsif @objeto.y > 180
@objeto.y = 180
end
end
end
end
=begin
O Scene_Stories (derivado do Scene_Story, originalmente de
Moghunter) é um script um pouco mais maleável, podemos usá-lo
em n situações:
* créditos;
* histórias;
* início e final de atos, capítulos e afins;
Este Scene funciona apenas com figuras - até mesmo para o texto.
Para sua configuração, precisaremos de um evento no mapa
(através do comando "Call script" ou "Chamar script",
dependendo da versão de Maker) e a configuração de variáveis
obrigatórias e opcionais.
As imagens devem ficar na pasta "Graphics\Pictures\" do seu
projeto, com exceção da transição, que fica na pasta
"Graphics\Transitions\".
===========
OBRIGATÓRIAS:
===========
$texto = "Imagem com texto (Créditos ou outros)"
Preferência para PNG com fundo transparente.
Definir a cor transparente ao importar a figura, neste caso,
nem sempre dá o resultado esperado.
Qualquer editor de imagem com suporte a transparência dá conta
disso.
Medida da figura: até 640 pixels de largura por qualquer
medida de altura.
---------------------------------------
$fade = "Imagem para a cor da $mudanca"
Define a cor da transição a qual pode ser uma figura (jpg/png)
de qualquer tamanho até 640x480.
Caso não queira, use uma fig. 32x32 de qualquer cor.
---------------------------------------
$mudanca = "Imagem usada para dar fade na tela"
Transição: PNG de 256 tons de cinza.
========
OPCIONAIS:
========
$fundo = "imagem de fundo" ex.: "espaço" (com aspas mesmo)
Pode ser uma jpg. Tamanho ideal: 640x480
---------------------------------------
$musica = "nome da música" ex.: "chefe1" (com aspas mesmo)
Preferência para mid, por ser mais leve.
Encontrada em "Audio\BGM\"
---------------------------------------
$part1 = "Imagem de partículas em movimento"
ex.: "brilho1" (com aspas mesmo)
PNG com transparência. Como tem movimento, evite pedaços de
imagem nas bordas a menos que seja um mosaico.
---------------------------------------
$part2 = "Imagem de partículas em movimento"
ex.: "brilho2" (com aspas mesmo)
PNG com transparência. Como tem movimento, evite pedaços de
imagem nas bordas a menos que seja um mosaico.
---------------------------------------
$borda = "Imagem das bordas ou layout" ex.: "tela" (com aspas
mesmo)
Imagem de 640x480 com transparência: ideal para molduras
---------------------------------------
$objeto = "Imagem Central" ex.: "livro" (com aspas mesmo)
Para um enfeite a mais. Na demo do Moghunter era algo parecido
com um livro com capa de pedra (!).
=end
Configurando as 3 variáveis:
Como disse nas características, o teleporte é via vars. Então configurei para as vars 1, 2 e 3...
Para tirar destas vars vamos fazer umas simples alterações mesmo porque, com certeza, a maioria já usa essas 3 vars...
Para facilitar a vida de quem já sabe e ajudar quem ainda não tem afinidade com scripts, vou indicar a linha e o que mudar:
Para a var 1 (ID do mapa):
altere as seguintes linhas :
Linha 36 (if $game_variables[1] <= 0) e
Linha 39 ($data_system.start_map_id = $game_variables[1])
if $game_variables[sua var para ID do mapa aqui] <= 0
$data_system.start_map_id = nil
else
$data_system.start_map_id = $game_variables[sua var para ID do mapa aqui]
end
Para a var 2 (coordenada X do herói):
Linha 42 (if $game_variables[2] != $data_system.start_x) e
Linha 43 ($data_system.start_x = $game_variables[2])
if $game_variables[sua var para coordenada X aqui] != $data_system.start_x
$data_system.start_x = $game_variables[sua var para coordenada X aqui]
end
Para a var 3 (coordenada Y do herói):
Linha 46 (if $game_variables[3] != $data_system.start_x) e
Linha 47 ($data_system.start_x = $game_variables[3])
if $game_variables[sua var para coordenada Y aqui] != $data_system.start_y
$data_system.start_y = $game_variables[sua var para coordenada Y aqui]
end
Configurando animação no evento:
Crie um evento em qualquer lugar do mapa (ou conforme sua necessidade),
e configure o seguinte:
Var 001 para Outro: ID do mapa
A var para coordenada X:
Var 002 para Evento: Personagem / Coord.X
A var para coordenada Y
Var 003 para Event: Personagem / Coord.Y
A configuração acima deve ser usada quando o herói ativa o evento com o scene stories.
Ela faz com que o herói reapareça no mesmo lugar de onde ativou o evento.
Em outros casos, a configuração ficaria assim:
* a var para ID do mapa (pode ser qualquer mapa)
Var 001 para Constante: 3 (pode ser qualquer valor)
* a var para a coordenada X do personagem (pode ser qualquer valor de acordo com a necessidade)
Var 002 para Constante: 3 (pode ser qualque valor)
* a var para a coordenada Y do personagem (pode ser qualquer valor de acordo com a necessidade)
Var 003 para Constante: 3 (pode ser qualquer valor)
Se quiser mudar a posição dentro do mesmo mapa basta reconfigurar as coord X e Y
pois a id do mapa já foi configurada.
Lembrando que as coordenadas aqui estão medidas em Tiles e não em pixels
(cada tile mede 32x32 pixels)...
tenha isso em mente se estiver usando um script de movimentação em pixels.
Com as vars configuradas, vamos explicar e configurar a animação. Eu separei em
Vars obrigatórias (pq o script da erro se não as configurarmos) e opcionais:
=======================================================================
OBRIGATÓRIAS:
=======================================================================
Texto rolante: Preferência para PNG com fundo transparente. Qualquer editor de imagem com suporte a transparência dá conta disso.
Definir a cor transparente ao importar a figura, neste caso, nem sempre dá o resultado esperado.
Medida da figura: até 640 pixels de largura para não haver cortes na imagem por qualquer medida de altura.
$texto = "Nome da imagem com texto (Créditos ou outros)"
---------------------------------------
Cor para a transição: Define a cor da transição a qual pode ser uma figura (jpg/png) de qualquer tamanho até 640x480.
Caso não queira, use uma fig. 32x32 de qualquer cor.
$fade = "Imagem para a cor da $mudanca"
---------------------------------------
Transição: Transição: PNG de 256 tons de cinza.
$mudanca = "Nome da imagem usada para dar fade na tela"
=======================================================================
OPCIONAIS:
=======================================================================
Imagem de fundo: Pode ser uma jpg. Tamanho ideal: 640x480
$fundo = "Nome da imagem de fundo" ex.: "espaço" (com aspas mesmo)
---------------------------------------
Música de fundo: Preferência para mid, por ser mais leve. Claro que pode ser de outro formato também, desde que cmpativel com o
Maker XP. Encontrada em "Audio\BGM\"
$musica = "nome da música" ex.: "chefe1" (com aspas mesmo)
---------------------------------------
Partículas 1 (movem-se da direita para esquerda, de cima para baixo): PNG com transparência. Como tem movimento, evite pedaços
de imagem nas bordas a menos que seja um mosaico.
$part1 = "Nome da imagem de partículas em movimento"
ex.: "brilho1" (com aspas mesmo)
---------------------------------------
Partículas 2 (movem-se da esquerda para direita, de cima para baixo): PNG com transparência. Como tem movimento, evite pedaços
de imagem nas bordas a menos que seja um mosaico.
$part2 = "Nome da imagem de partículas em movimento"
ex.: "brilho2" (com aspas mesmo)
---------------------------------------
Molduras ou bordas: Imagem de 640x480 com transparência: ideal para molduras
$borda = "Nome da imagem das bordas ou layout" ex.: "tela" (com aspas
mesmo)
---------------------------------------
Objeto central: Para um enfeite a mais. Na demo do Moghunter era algo parecido com um livro com capa de pedra (!).
$objeto = "Nome da imagem central" ex.: "livro" (com aspas mesmo)
Depois de tudo configurado, você deve ter algo parecido com uma das 3 opções:
* Configuração para o mesmo mapa, mesma posição, herói ativando o evento:
<>
Opções de Variável:[0001: ID do mapa] = ID do Mapa<>
Opções de Variável:[0002: Herói X] = Personagem - Coordenada X<>
Opções de Variável:[0003: Herói Y] = Personagem - Coordenada Y<>
Comentário : Comandos Obrigatórios<>script :$texto="teste"
$fade="cor"
$mudanca="011-Random03"
<>
Comentário: Comandos Opcionais<>script :$música= "004-Battle04"
$fundo= "darkwood"
$part1= "part1"
$part2= "part2"
$borda= "borda"
$objeto= "objeto"
<>
Comentário: Chamando o script<>script: $scene= Scene_Stories.new
<>
* Configuração para o mesmo mapa, posição diferente, herói ativando (ou nao) o evento:
<>
Opções de Variável:[0001: ID do mapa] = ID do Mapa<>
Opções de Variável:[0002: Herói X] = Personagem - 14<>
Opções de Variável:[0003: Herói Y] = Personagem - 2<>
Comentário : Comandos Obrigatórios<>script :$texto="teste"
$fade="cor"
$mudanca="011-Random03"]
<>
Comentário: Comandos Opcionais<>script :$música= "004-Battle04"
$fundo= "darkwood"
$part1= "part1"
$part2= "part2"
$borda= "borda"
$objeto= "objeto"
<>
Comentário: Chamando o script<>script: $scene= Scene_Stories.new
* Configuração para outro mapa, posição diferente, herói ativando (ou não) o evento:
<>
Opções de Variável:[0001: ID do mapa] = 3<>
Opções de Variável:[0002: Herói X] = Personagem - 14<>
Opções de Variável:[0003: Herói Y] = Personagem - 2<>
Comentário : Comandos Obrigatórios<>script :$texto="teste"
$fade="cor"
$mudanca="011-Random03"
<>
Comentário: Comandos Opcionais<>script :$música= "004-Battle04"
$fundo= "darkwood"
$part1= "part1"
$part2= "part2"
$borda= "borda"
$objeto= "objeto"
<>
Comentário: Chamando o script<>script: $scene= Scene_Stories.new
<>
Nota: Parte desta configuração depois de feita (mudança de vars no script) NÃO SERÁ MAIS NECESSÁRIA a não ser, é claro, que se
queira fazer uma ajuste em uma coisa ou outra no script(pus comentários explicando algumas funções do script também)... se não, a partir
de agora só a configuração no evento será feita e só quando se for usar o script
Todos os créditos á
Sethyh (Mundo RPG Maker)
Zina (Mundo RPG Maker e Maker Games Brasil)