- dieniferMembro
- Mensagens : 393
Reputação : 41
[XP & VX] Picture Video - Simulação de Vídeo por Pictures
Dom Out 31, 2010 3:13 pm
Picture Video - Video Por Pictures - Versão: 1.0
Por Rafidelis (Idealização por Dark Goku) - Reino RPG
Por Rafidelis (Idealização por Dark Goku) - Reino RPG
Características
Este script,cria um video usando pictures separadas e animando elas em uma
sequência para que simulem um vídeo normal.
- Controle de execução do vídeo -> ( Pausar,Retomar,Parar )
- Posicionamento do vídeo -> ( Centralizar Automaticamente,ou definir as
coordenadas (x e y) para exibição do vídeo )
- Definição da velocidade de execução -> ( Super Lento, Lento, Normal,
Rápido e Super Rápido )
- Executar com mapa no fundo,ou fundo preto.
- Redimensionamento do tamanho da tela do video
-- Entre outros (Veja na parte de instruções para mais detalhes)
Instruções
Todas as Instruções se encontram no proprio script,e na demo.
Vídeo
Clique aqui para acessar o vídeo
Download
Este script,pode ser usado tanto no RPGMaker VX ou no RPGMaker XP,fiz 2 demos,porem os
scripts são os mesmo,o que muda são os efeitos sonoros \o\
Demo RPGMaker VX - Clique Aqui (4shared)
Demo RPGMaker XP - Clique Aqui (4shared)
Script
- Spoiler:
Código: [Selecionar]
#==============================================================================
# [RGSS/RGSS2] Picture Video - Filme por Pictures
#------------------------------------------------------------------------------
# $RafiScripts.by = Rafidelis(RafiScripts - RafideliSoft Brasil)
# $RafiScripts.version = 1.0
# $RafiScripts.release_date = 18/06/10 (d/m/y)
# $RafiScripts.email = Rafa_Fidelis@hotmail.com or Rafa_Fidelis@yahoo.com.br
# $RafiScripts.website = www.ReinoRPG.com or www.ReinoRPG.com/forum
# $RafiScripts.website² = www.RafideliScripts.4shared.com
#==============================================================================
# [** $RafiScripts.desc **] // Sobre o Script / About Script
#------------------------------------------------------------------------------
# Este script cria um filme de Pictures,simulando um vídeo normal.
# Idealização : Dark Goku (Ou viado sayajyn,dá tudo na mesma)
# Características:
# * - Controle de execução do vídeo -> ( Pausar,Retomar,Parar )
# * - Posicionamento do vídeo -> ( Centralizar Automaticamente,ou definir as
# coordenadas (x e y) para exibição do vídeo )
# * - Definição da velocidade de execução -> ( Super Lento, Lento, Normal,
# Rápido e Super Rápido )
# * - Executar com mapa no fundo,ou fundo preto.
#
# * - Redimensionamento do tamanho da tela do video
#
# OBS: Esse script provavelmente é incompativel com a maioria dos scripts de
# pular a tela de título.Fique atento!
#
#==============================================================================
# [** $RafiScripts.instr ] // Instruções / Instructions:
#------------------------------------------------------------------------------
# * - Colar Acima do Main
# * - Editar as Constantes no Modulo Rafidelis::Picture_Video_Conf
#
# ** Comandos para serem usados no comando 'chamar script'(3° Aba)
#
# $picture_video.path = String (Ex : 'Graphics/Pictures" )
# |_ Definição da Pasta onde se encontram as imagens usadas no vídeo atual
#
# $picture_video.pictures_prefix = String (Ex : 'Picture_' )
# |_ Definição do prefixo das imagens usadas no vídeo.
#
# $picture_video.max_frames = Inteiro (Ex : 45 )
# |_ Definição do número máximo de frames(pictures) do vídeo
#
# $picture_video.play_speed = String ou Inteiro
# |_ Se for uma string(Texto),os possiveis valores são:
# => "Super Slow","Super lento" : velocidade = 5
# => "Slow","Lento","Devagar" : velocidade = 10
# => "Normal" : velocidade = 20
# => "Fast","Rápido","Rapido" : velocidade = 40
# => "Super Fast","Super rápido" : velocidade = 60
#
# $picture_video.from_map = Valor Booleano( true ou false)
# |_ Definição se o fundo do vídeo será o mapa atual,ou fundo preto.
#
# $picture_video.x = Inteiro ( Ex : 50 )
# |_ Definição da posição horizontal do vídeo no mapa
#
# $picture_video.y = Inteiro ( Ex : 80 )
# |_ Definição da posição vertical do vídeo no mapa
#
# $picture_video.auto_center = Valor Booleano( true ou false )
# |_ Definição de auto centralização do vídeo no mapa. Se essa opção estiver
# ativa,as opções $picture_video.x = valor e $picture_video.y = valor serão
# ignoradas. Para poder definir as coordenas que quiser,através dos métodos
# citados,essa opção deve estar desativada(false).
#
# $picture_video.music = String ( Ex : "Fundo_Filme01" )
# |_ Nome do arquivo de música do vídeo atual. Deve estar na pasta
# 'Audio/BGM',e deve ser um arquivo de som valido(mp3,wav,etc)
#
# $picture_video.can_pause = Valor Booleano (true ou false)
# |_ Permitir ou não que o vídeo seja pausado durante sua execução
#
# $picture_video.can_stop = Valor Booleano (true ou false)
# |_ Permitir a possibilidade de sair da execução do vídeo.
#
# $picture_video.resize_screen(largura,altura)
# |_ Define uma nova dimensão para a tela aonde o vídeo será exibido.
# As imagens automaticamente se ajustam as dimensões passadas.
#
# $picture_video.reset_screen_dimensions!
# |_ Restaura as dimensões da tela para o tamanho das imagens que serão
# usadas no vídeo.Use esse método após utilizar o método
# $picture.resize_screen(largura,altura)
#-----------------------------------------------------------------------------
# Exemplos de definições de vídeos:
#=============================================================================
# 1)
# $picture_video.path = "Graphics/Pictures/Video1/"
# $picture_video.pictures_prefix = "Picture_"
# $picture_video.max_frame = 160
# $picture_video.play_speed = "Lento"
# $picture_video.from_map = false
# $picture_video.auto_center = false
# $picture_video.x = 20
# $picture_video.y = 100
# $picture_video.play! # Executar Vídeo!
#
# - O exemplo acima irá definir as posições 20 e 100 para exibir o vídeo,pois
# a opção 'auto_center' foi desativada. O prefixo das pictures é : 'Picture_',
# ou seja, quando estiver no primeiro frame,a imagem procurada na pasta será:
# 'Picture_0',e quando estiver no frame 15,por exemplo,a imagem procurada na
# pasta 'Graphics/Pictures/Video01/' será 'Picture_15'.O numero máximo de
# frames é de 160,ou seja a ultima picture será : 'Picture_160'.
# Nesse exemplo,o fundo do vídeo ficara preto,pois não sera exibido o mapa
# atual. O vídeo ficara lento durante sua execução, pois foi definida a
# velocidade lenta para a execução.
#-------------------------------------------------------------------------------
# 2)
# $picture_video.path = "Graphics/Pictures/Video2"
# $picture_video.pictures_prefix = "Picture_"
# $picture_video.max_frame = 80
# $picture_video.from_map = false
# $picture_video.music = "Video02_Sound"
# $picture_video.can_pause = false
# $picture_video.can_stop = false
# $picture_video.play!
#
# - O exemplo acima,executa um vídeo com o total de 80 frames,e as imagens
# usadas devem estar na pasta "Graphics/Pictures/Video2" com o prefixo
# 'Picture_'.
# O vídeo ficara posicionado no centro da tela,com o fundo preto e velocidade
# de execução normal(se a velocidade de execução não tiver sido modificada
# anteriormente).
# O som a ser tocado será o 'Video2_Sound',na pasta 'Sound/BGM',e por fim
# não será possível pausar ,nem parar o vídeo durante sua execuçao. Ou seja,
# só sera possível retornar ao mapa quando o vídeo terminar.
#
#------------------------------------------------------------------------------
# Baixe a demo(que se encontra no Tópico 'Picture Video',na sessão de Scripts
# RGSS2 do forum da ReinoRPG.com(www.ReinoRPG.com/Forum) para demonstração de
# como usar esse script com imagens.
# Lembrando que esse script funciona tanto no RPGMaker VX e RPGMaker XP.
#=============================================================================
#==============================================================
# ATENÇÃO!
# Se você for usar esse script no RPGMaker XP, retire a linha
# '=begin'(Linha 142) e a linha '=end'(Linha 148) logo abaixo:
#==============================================================
=begin
module Cache
def self.load_bitmap(path,file,hue=0)
return RPG::Cache.load_bitmap(path,file,hue)
end
end
=end
module Rafidelis
#==========================================================================
# ** Modulo de Configurações do Script de Video por Imagens
#--------------------------------------------------------------------------
module Picture_Video_Conf
# Scene que retorna quando acabar o 'filme de pictures'( Padrão: Scene_Map )
Scene_When_Return = Scene_Map
# Segundos a esperar,antes de fechar o filme ( Padrão : 0.5 )
Wait_Seconds_Before_Terminate = 0.5
# Tecla para pausar o vídeo ( Padrão : Input::C ) (Enter)
Pause_Key = Input::C
# Tecla para retornar o vídeo quando estiver pausado ( Padrão : Input::C )
Play_Key = Input::C
# Tecla para sair da execução do vídeo ( Padrão : Input::B) (Esc)
Stop_Key = Input::B
# Escrever ou não na tela do vídeo o texto de pause ( Padrão : true)
Show_Pause_Text = true
# Texto a ser exibido enquanto o vídeo estiver pausado
Pause_Text = "-- Pausado -- Pressione Enter para Executar"
# Propriedades da Fonte do Texto de Pause
Pause_Text_Font = {
"Cor" => Color.new(255,255,255) , # Branco
"Negrito" => false , # C/ Negrito
"Itálico" => true , # S/ itálico
"Nome" => Font.default_name } # Fonte Padrão
# Nome do som(SE) a ser tocado quando pressionar a tecla de pausar
# o filme for pressionada
Pause_Sound = 'Cursor' # No XP use : '001-System01'
# Nome do som(SE) a ser tocado quando a tecla de executar o filme
# for pressionada
Play_Sound = 'Cursor' # No vx use : '001-System01'
# Nome do som(SE) a ser tocado quando a pressionar a tecla de sair
# da execução do filme
Stop_Sound = 'Cancel' # No XP use : '003-System03'
# Parar os sons do mapa(BGM,BGS,SE e ME) quando iniciar a execução do filme
Stop_Map_Sounds = true
#==========================================================================
# ** Retornar as dimensões da janela de jogo,dependendo do RPGMaker usado
#--------------------------------------------------------------------------
def self.screen_dimensions
if defined?($TEST) # Se for o VX
return [Graphics.width,Graphics.height]
elsif defined?($DEBUG) # Se for o XP
return [640,480]
end
end
end
#============================================================================
# ** Picture Video
#----------------------------------------------------------------------------
# Esta classe é usada para armazenar os dados do vídeo de imagens.
# Pode ser acessada usando $picture_video
#============================================================================
class Picture_Video
# Variáveis de instancias com acesso de leitura e escrita permitidos :
attr_accessor ( :auto_center,:can_pause,:can_stop,:dimensions,:frame,
:from_map,:path,:pictures_prefix,:playing,:max_frames,:x,:y )
# Variáveis de Instancia com acesso somente de leitura.
attr_reader ( :play_speed , :music )
#=========================================================================
# ** Inicialização do Objeto
#-------------------------------------------------------------------------
def initialize
@auto_center = true # Auto centralizar a tela do vídeo na Janela
@can_pause = true
@can_stop = true
@frame = 0
@from_map = true
@path = ""
@pictures_prefix = ""
@playing = false
@play_speed = 20
@max_frames = 0
@music = ""
@x = 0
@y = 0
@repeat = false
@wait_count = 0
@dimensions = [nil,nil]
end
#=========================================================================
# ** Retorno do largura da tela de vídeo
#-------------------------------------------------------------------------
def screen_width
return @dimensions[0].nil? ? 0 : @dimensions[0]
end
#=========================================================================
# ** Retorno do altura da tela de vídeo
#-------------------------------------------------------------------------
def screen_height
return @dimensions[1].nil? ? 0 : @dimensions[1]
end
#=========================================================================
# ** Definir novas dimensões para a tela do vídeo
#-------------------------------------------------------------------------
def resize_screen(width,height)
@dimensions[0] = width if ( @dimensions[0] != width )
@dimensions[1] = height if ( @dimensions[1] != height )
end
#=========================================================================
# ** Definição do novo arquivo de som
#-------------------------------------------------------------------------
def music=(sound)
@music = sound
end
#=========================================================================
# ** Definição do velocidade de execução do vídeo
#-------------------------------------------------------------------------
def play_speed=(speed)
return if @play_speed == speed
@play_speed = speed.is_a?(String) ? return_play_speed(speed) : speed
end
#=========================================================================
# ** Executar vídeo
#-------------------------------------------------------------------------
def play!
if Rafidelis::Picture_Video_Conf::Stop_Map_Sounds
Audio.bgm_stop
Audio.bgs_stop
Audio.me_stop
Audio.se_stop
end
@playing = true
Audio.bgm_play("Audio/BGM/#{@music}")
$scene = Rafidelis::Scene_Picture_Video.new
end
#=========================================================================
# ** Pausar Vídeo
#-------------------------------------------------------------------------
def pause!
@playing = false
Audio.bgm_stop
end
#=========================================================================
# ** Parar Vídeo
#-------------------------------------------------------------------------
def stop!
Audio.bgm_stop
@playing = false
@frame = 0
Graphics.transition(10)
$scene = Rafidelis::Picture_Video_Conf::Scene_When_Return.new
end
#=========================================================================
# ** Verificação da flag de vídeo pausado
#-------------------------------------------------------------------------
def paused?
return (not playing?)
end
#=========================================================================
# ** Verificação da flag de vídeo sendo executado
#-------------------------------------------------------------------------
def playing?
return @playing
end
#=========================================================================
# ** Verificação da flag de vídeo finalizado
#-------------------------------------------------------------------------
def finished?
return (@frame >= @max_frames)
end
#=========================================================================
# ** Resetar as dimensoes da tela para o tamanho da imagem
#-------------------------------------------------------------------------
def reset_screen_dimensions!
@dimensions = [nil,nil]
end
#=========================================================================
# ** Atualização
#-------------------------------------------------------------------------
def update
return if paused?
# Se ainda não tiver chegado ao ultimo frame
if ( @frame < @max_frames )
if ( @wait_count < 100 )
@wait_count += @play_speed
else
@wait_count = 0
# Se estiver no ultimo frame
if ( @frame >= @max_frames )
@frame = 0 if @repeat
else
@frame += 1
end
end
end
end
private # Método Privado da classe
#=========================================================================
# ** Privado : Retornar velocidade de execução,através de uma string
#-------------------------------------------------------------------------
def return_play_speed(label)
case label.downcase
when "super slow","super lento","super devagar" ; 5
when "slow","devagar","lento" ; 10
when "normal" ; 20
when "fast","rapido","rápido" ; 40
when "super fast","super rapido","super rápido" ; 60
else ; 20
end
end
end
#============================================================================
# ** Sprite Picture Video
#----------------------------------------------------------------------------
# Esta classe é usada para criar os sprites durante a exibição dos vídeos
# por pictures.
#============================================================================
class Sprite_Picture_Video < Sprite
#=========================================================================
# ** Inicialização do Objeto
#-------------------------------------------------------------------------
def initialize
super()
self.z = 999
update
@pause_sprite = Sprite.new
@pause_sprite.bitmap = Bitmap.new(bitmap.width,bitmap.height)
@pause_sprite.x = self.x
@pause_sprite.y = self.y
@pause_sprite.z = self.z + 10
end
#=========================================================================
# ** Atualização
#-------------------------------------------------------------------------
def update
if $picture_video.dimensions != @dimensions
@dimensions = $picture_video.dimensions
end
if ($picture_video.frame != @frame)
@frame = $picture_video.frame
update_bitmap
end
end
#=========================================================================
# ** Exibição do Texto de Pause
#-------------------------------------------------------------------------
def draw_pause_text
text = Rafidelis::Picture_Video_Conf::Pause_Text
@pause_sprite.bitmap.clear
font_size = ( @dimensions[0] <= 150 ? 14 : 17 )
f = Rafidelis::Picture_Video_Conf::Pause_Text_Font
self.bitmap.font.name = f["Nome"]
@pause_sprite.bitmap.font.color = f["Cor"]
@pause_sprite.bitmap.font.bold = f["Negrito"]
@pause_sprite.bitmap.font.italic = f["Itálico"]
@pause_sprite.bitmap.font.size = font_size
@pause_sprite.bitmap.draw_text(0,0,bitmap.width,32,text,1)
end
#=========================================================================
# ** Deletar texto de Pause
#-------------------------------------------------------------------------
def erase_pause_text
@pause_sprite.bitmap.clear
end
#=========================================================================
# ** Atualização do Bitmap do Sprite
#-------------------------------------------------------------------------
def update_bitmap
unless self.bitmap.nil?
self.bitmap.dispose unless self.bitmap.disposed?
end
picture = ($picture_video.pictures_prefix + @frame.to_s)
bitmap = Cache.load_bitmap($picture_video.path,picture)
if @dimensions[0].nil?
$picture_video.dimensions[0] = @dimensions[0] = bitmap.width
end
if @dimensions[1].nil?
$picture_video.dimensions[1] = @dimensions[1] = bitmap.height
end
w,h = $picture_video.screen_width,$picture_video.screen_height
self.bitmap = Bitmap.new(w,h)
dest_rect = Rect.new(0,0,w,h)
self.bitmap.stretch_blt(dest_rect, bitmap, bitmap.rect)
# Se a opção de auto centralizar estiver ativa
if $picture_video.auto_center
# A picture é centralizada na tela
w = Picture_Video_Conf.screen_dimensions[0]
h = Picture_Video_Conf.screen_dimensions[1]
self.x = ( w - self.bitmap.width ) / 2
self.y = ( h - self.bitmap.height ) / 2
else
self.x = $picture_video.x
self.y = $picture_video.y
end
end
end
#============================================================================
# ** Scene Picture Video
#----------------------------------------------------------------------------
# Esta classe processa a execução dos vídeos por pictures.
#============================================================================
class Scene_Picture_Video
include Rafidelis::Picture_Video_Conf
#=========================================================================
# ** Inicialização do Objeto
#-------------------------------------------------------------------------
def initialize
@spriteset = Spriteset_Map.new if $picture_video.from_map
@sprite_picture_video = Sprite_Picture_Video.new()
end
#=========================================================================
# ** Processo Principal
#-------------------------------------------------------------------------
def main
Graphics.transition(10)
Input.update # Atualiza as informações inseridas
loop do
Graphics.update # Atualiza os gráficos
Input.update # Atualiza as informações inseridas
update # Atualização
break if $scene != self # Descontinuação do loop
end
Graphics.update
Graphics.freeze # Congelamento dos gráficos
terminate # Fim
end
#=========================================================================
# ** Atualização
#-------------------------------------------------------------------------
def update
@sprite_picture_video.update
$picture_video.update
if $picture_video.playing? # Se estiver sendo executando
if Input.trigger?(Pause_Key) and $picture_video.can_pause
Audio.se_play("Audio/SE/#{Pause_Sound}")
$picture_video.pause!
end
elsif $picture_video.paused? # Se estiver pausado
@sprite_picture_video.draw_pause_text if Show_Pause_Text
if Input.trigger?(Play_Key)
@sprite_picture_video.erase_pause_text if Show_Pause_Text
Audio.se_play("Audio/SE/#{Play_Sound}")
Audio.bgm_play("Audio/BGM/#{$picture_video.music}")
$picture_video.playing = true
end
end
# Se for possivel parar o vídeo
if Input.trigger?(Stop_Key) and $picture_video.can_stop
@sprite_picture_video.erase_pause_text if Show_Pause_Text
Audio.se_play("Audio/SE/#{Stop_Sound}")
$picture_video.stop!
end
# Se o vídeo tiver terminado
if $picture_video.finished?
time = Wait_Seconds_Before_Terminate * 60
time.to_i.times {Graphics.update()}
$picture_video.stop!
end
end
#=========================================================================
# ** Finalização
#-------------------------------------------------------------------------
def terminate
@sprite_picture_video.dispose
end
end
end
#==============================================================================
# Scene_Title
#------------------------------------------------------------------------------
# Classe das operações na tela de título.
#==============================================================================
class Scene_Title
alias rafidelis_picture_video_main main
#=========================================================================
# ** Inicialização do Processo
#-------------------------------------------------------------------------
def main
$picture_video = Rafidelis::Picture_Video.new
rafidelis_picture_video_main
end
end
Re: [XP & VX] Picture Video - Simulação de Vídeo por Pictures
Dom Out 31, 2010 11:39 pm
Só não lhe darei +rep pois tive que editar seu tópico inteiro. Preste mais atenção da próxima vez, obrigado.
- dieniferMembro
- Mensagens : 393
Reputação : 41
Re: [XP & VX] Picture Video - Simulação de Vídeo por Pictures
Seg Nov 01, 2010 12:02 pm
Bom, eu peguei este topico, da Reino rpg, como citei acima
- NaxusVeterano
- Mensagens : 500
Reputação : 68
Re: [XP & VX] Picture Video - Simulação de Vídeo por Pictures
Seg Nov 01, 2010 2:56 pm
O script parece ser interessante mais no momento não terá utilidade alguma pra mim.
Continue trazendo mais conteúdo a nossa comunidade!
Até mais!
Continue trazendo mais conteúdo a nossa comunidade!
Até mais!
Permissões neste sub-fórum
Não podes responder a tópicos