O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

[Berka] Game_Film

Iniciado por Raizen, 22/12/2012 às 16:16

[Berka] Game_Film

Compativel com: RMXP e RMVX
Compatibilidade :boa
Facilidade de uso: fácil
Lag gerado: baixo
[box class=titlebg]
Condições de Uso
[/box]
  Não especificado pelo autor

[box class=titlebg]
Para que serve o script
[/box]
  Permite inserir videos no game, os videos tem que estar no formato .AVI

[box class=titlebg]
Script
[/box]

#=========================================================
#
#                           -  Game_Film  -
#   Rgss 1 & 2
#--------------------------------------------------------
#                              Por berka
#                     baseado no de Corwin
#                   Traduzido por Rafidelis
#                       www.ReinoRpg.com
#--------------------------------------------------------
# -> utilizaçao:
# -1-Crie uma pasta com nome de  "Films" na pasta do seu projeto
# -2-POnha seus videos na pasta
# -3-Para chamar o script em um evento use:
#      $game_film = Game_Film.new("Test.avi")
# ou  $game_film = Game_Film.new(""Test.avi" pos x, y pos, largura, altura)
# ou  $game_film = Game_Film.new("Test.avi", pos x, pos y) ....etc....
#Lembrando que onde esta escrito "Test.avi"  e o nome do video que você deseja ver!
#se o nome do video for "ABCD" deve fikar assim:
#$game_film = Game_Film.new("ABCD.avi")
#===========================================
class Game_Film
 
  Volume = 500 #entre 0 et 1000
 
  def initialize(film, x = 0, y= 0, w= 544, h= 416)
    @x= x.to_s+" " #Posiçao Horizital
    @y= y.to_s+" " #Posiçao Vertical
    @w= w.to_s+" "#Largura
    @h= h.to_s+" " #Altura
    @nom = Dir.getwd()+"\\Films\\"+film # recherche de l'adresse de la video
    @readini = Win32API.new('kernel32', 'GetPrivateProfileStringA', '%w(p p p p l p)', 'l') #pour lire le fichier Game.ini
    @film= Win32API.new('winmm','mciSendString','%w(p,p,l,l)','V') #gestion du media
    @handle = Win32API.new('user32','FindWindowEx','%w(l,l,p,p)','L') #pour recuperer le handle de la fenetre
    @message = Win32API.new('user32','SendMessage','%w(l,l,l,l)','V') #pour envoyer des infos
    charge
  end
 
  def charge
    jeu  = "\0" * 256
    @readini.call('Game','Title','',jeu,255,".\\Game.ini")#on lit le game.ini jusqu'au string Title, on inscrit le titre dans jeu
    jeu.delete!("\0") #on enleve tous les \0 du string
    @temp = @handle.call(0,0,nil,jeu).to_s #on recupere la fenetre
    @film.call("open \""+@nom+"\" alias FILE style 1073741824 parent " + @temp.to_s,0,0,0) #on ouvre le media
    @status = " " * 255
    lecture
  end
 
  def lecture
    pause = false
    @film.call("put FILE window at "+@x+@y+@w+@h, @status,0,0) #on positionne la fenetre du media
    @film.call("setaudio MediaFile volume to "+Volume.to_s, @status,0,0) #on regle le volume
    @film.call("play FILE from 0",@status,0,0) #et on lit le media
    loop do
      sleep(0.1) #on raffraichit
      @message.call(@temp.to_i,11,0,0) #on envoie l'info de lecture
      Graphics.update #mise a jour graphique
      @message.call(@temp.to_i,11,1,0) #on envoie l'info de lecture
      Input.update #mise a jour des touches
      @film.call("status FILE mode",@status,255,0) #on recupere l'etat du media
      true_status = @status.unpack("aaaa") #que l'on insere dans un tableau
      break if true_status == "stop".split(//) #sort de la boucle si en stop
      if Input.trigger?(Input::B) #quitte si on presse X
        Input.update
        break
      end
      if Input.trigger?(Input::C) #pause si on presse Espace
        Input.update
        if pause == false
          @film.call("pause FILE",@status,0,0)
          pause = true
        else
          @film.call("play FILE",@status,0,0)
          pause = false
        end       
      end
    end
    @film.call("close FILE",0,0,0) #et on ferme le fichier
  end
end



[box class=titlebg]
Imagens
[/box]

Não visivel por imagens.


[box class=titlebg]
Créditos e Avisos
[/box]

berka - criação do script
Rafidelis - tradução

Script interessante e muito útil. Da para fazer intros e explicar a história do jogo com mais possibilidades.