Jogo com filme no RPG Maker XP

29 de fevereiro de 2012

Script feito por Soundspawn permite que seu projeto ou game do RPG Maker XP rode filmes, parecido com o evento do RPG Maker 2000/2003. Por alguma razão a Enterbrain quis dificultar a vida, ao invés de deixar os comandos antigos… Mas isto quebra o galho.

É possível apenas reproduzir filmes em formato .AVI e o tamanho do vídeo deve ser de 640×480, pra caber direitinho na tela (a não ser que seu game use uma resolução diferente, sei lá). A resolução mínima do seu monitor deve ser de 800×600.

Nem todo e qualquer AVI irá rodar. Convém converter com outros codecs e achar os que funcionem, se for o caso. Programas como o Format Factory fazem isto, além de converter vários formatos de vídeos (se você tem um vídeo que você fez no formato MP4 você pode convertê-lo para .AVI, com este programa, que é gratuito).

O vídeo é reproduzido quando o código é chamado. Pode ser por um evento, ou chamado por outro script.

Instruções

Copie e cole o código abaixo acima do script Main:

#by Soundspawn
 class Scene_Movie

 def initialize(movie,length,exit_to_game=true)
   @readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l'
   @movie_name = Dir.getwd()+"Movies"+movie+".avi"
   @counter = length*10
   @exit_to_game = exit_to_game
   main
 end

 def main
   game_name = "" * 256
   @readini.call('Game','Title','',game_name,255,".Game.ini")
   game_name.delete!("")
   Graphics.transition
   @wnd = Win32API.new('user32','FindWindowEx','%w(l,l,p,p)','L')
   @temp = @wnd.call(0,0,nil,game_name).to_s
   @movie = Win32API.new('winmm','mciSendString','%w(p,p,l,l)','V')
   @movie.call("open ""+@movie_name+"" alias FILE style 1073741824 parent " + @temp.to_s,0,0,0)
   @message = Win32API.new('user32','SendMessage','%w(l,l,l,l)','V')

   @detector = Win32API.new('user32','GetSystemMetrics','%w(l)','L')
   @width = @detector.call(0)
   if @width == 640
     fullscreen
     Screen::update
     sleep(1)
     Screen::update
     sleep(1)
     Screen::update
     sleep(1)
   end

   @movie.call("play FILE",0,0,0)
   loop do
    sleep(0.1)
    @message.call(@temp.to_i,11,0,0)
    Graphics.update
    @message.call(@temp.to_i,11,1,0)
    Input.update
    if Input.trigger?(Input::B)
      Input.update
      break
    end
    @counter = @counter - 1
    if @counter <= 0
      break
     end
   end
   @movie.call("close FILE",0,0,0)
   if @exit_to_game
     $scene = Scene_Map.new
   else
     $scene = nil
   end
   Graphics.freeze
   if @width == 640
     fullscreen
   end
 end
 end

 def fullscreen()

 $full.call(18,0,0,0)
 $full.call(13,0,0,0)
 $full.call(18,0,2,0)
 $full.call(13,0,2,0)
 end
 $full = Win32API.new('user32','keybd_event','%w(l,l,l,l)','')

Depois disto, crie uma pasta chamada Movies dentro do seu projeto. Fica tipo assim: Projeto/Movies e copie o vídeo neste diretório.

No RPG Maker XP, crie um evento que chama script (Chamar Script, terceira aba) e digite: Scene_Movie.new("NomeDoArquivoSemExtensão",Duração)

Obviamente você vai ter que colocar em NomeDoArquivoSemExtensão e Duração de acordo com o seu vídeo. Se por exemplo, você quer que o seu projeto rode um arquivo de vídeo chamado IntroLegau.avi que tem duração de 2 minutos e 14 segundos, o código que o evento chama fica assim:

Scene_Movie.new("IntroLegau",134)

Visto que 2 minutos e 14 segundos são 134 segundos no total (cada minuto equivale a 60 segundos, se você ainda não entendeu).

Pronto, o vídeo já está pronto pra rodar.

Rodando o filme na tela de título

Você pode colocar um, ou mais, vídeos como introdução antes da tela de título do seu game. Para isto você vai ter que colocar umas linhas do script Main. Supondo que você queira que um filminho com um logotipo seu apareça antes do titulo, cujo o nome do arquivo é logo.avi e dura 3 segundos, procure a linha $scene = Scene_Title.new e cole o $scene = Scene_Movie.new("logo",3,false) acima desta linha. Vai ficar assim:

  $scene = Scene_Movie.new("logo",3,false)
  $scene = Scene_Title.new

Para colocar outros vídeos, basta colocar mais linhas (cuidado pra não ficar muito demorado e chato antes de efetivamente começar o jogo). Tipo isso:

  $scene = Scene_Movie.new("logo1",3,false)
  $scene = Scene_Movie.new("logo2",2,false)
  $scene = Scene_Movie.new("logo3",4,false)
  $scene = Scene_Title.new

Mais RPG Maker XP

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

2 comentários para “Jogo com filme no RPG Maker XP”

  1. Maxwel disse:

    Cara quando eu tento reproduzir o video não vaiiii não roda a tela fica pretaa

  2. João Nogueira disse:

    Eu gostaria de saber se da pra fazer um video eu sei que isso é muito simples mais quando eu coloco o script quando eu o chamo com o personagem da erro de sintaxy vc poderia me ajudar…

Deixe um comentário

Inscreva-se na nossa newsletter!