Ergebnis 1 bis 7 von 7

Thema: Movie Abspielen?

  1. #1

    Movie Abspielen?

    Ich habe im netz gelesen, dass man .Avi`s und .wav datein als Vorspann und
    als Movie im spiel einfühgen kann, weiß aber nicht wie.
    Bitte um Hilfe.
    Mit freundlichen Grüßen: UZF

  2. #2
    .avi geht im XP nicht mehr ohne weiteres. Hat beim 2k auch keiner benutzt.

  3. #3
    natürlich geht das hier ist der script (credits an soundspawn)

    die videos müssen 640x480 groß sein snonst sind sie zu klein oder zu groß.
    die movies müssen unter den ordner Movies sein.
    das script über Main einfügen und scene_Movie nennen.
    Code:
    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 = "\0" * 256
       @readini.call('Game','Title','',game_name,255,".\\Game.ini")
       game_name.delete!("\0")
       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)
       @counter=10*@counter
      loop do
       sleep(0.1)
       @message.call(@temp.to_i,11,0,0)
       Graphics.update if @counter%50==0
       @message.call(@temp.to_i,11,1,0)
       Input.update
       if Input.trigger?(Input::B)
         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)','')
    Und damit kannst du es im spiel aktivieren

    Code:
    $scene = Scene_Movie.new("Movie name",Movie länge)
    Beispiel:

    Code:
     $scene = Scene_Movie.new("intro",8 )
    um es vor dem titelmenü erscheinen zu lassen diese script in Main einfügen
    Code:
    begin 
    $scene = Scene_Movie.new("intro", 8 ,false)
    # Èéó¸·çó–™
    Graphics.freeze
    # ·üóªÖ¸§¯È (¿¤Èë;b) ’\
    $scene = Scene_Title.new
    end
    man kann mehrere hinterereinander laufen lassen

    ich weis aber nicht ob .wav funktioniert
    die movies können mit der x taste abgebrochen werden

  4. #4
    Wenn ich das Game mit Alt+Enter auf Fullscreen mache (vor dem Video), kommt


    Das sind die Zeilen

    Screen::update
    sleep(1)
    Screen::update
    sleep(1)
    Screen::update
    sleep(1)

    offensichtlich findet RGSS "Screen" nicht...

    Was soll ich tun? Ich will weder auf Videos noch auf Vollbild verzichten...

    Geändert von Cherry (24.02.2007 um 18:06 Uhr)

  5. #5
    das video darf keinen codec haben.
    und angeblich soll MPG und WMV laufen. hab ich aber noch nicht ausprobiert...

  6. #6
    ich hab meinen Beitrag editiert...

  7. #7
    Naja, es gibt auch kein Screen-Modul in der RGSS. Das Script ist entweder fehlerhaft oder unvollständig (überhaupt ergibt Screen::update für mich keinen Sinn, update ist ja offenbar eine Methode da klein geschrieben. Nur dann müsste es doch afair Screen.update heißen oO).

    Hab mal gegoogelt und eine andere Version des Scripts gefunden, wo an dieser Stelle die Graphics.update aufgerufen wurde. Ich denke das ergibt schon mehr Sinn.

    Code:
    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 = "\0" * 256
       @readini.call('Game','Title','',game_name,255,".\\Game.ini")
       game_name.delete!("\0")
       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
         Graphics.update
         sleep(1)
         Graphics.update
         sleep(1)
         Graphics.update
         sleep(1)
       end
       
       @movie.call("play FILE",0,0,0)
       @counter=10*@counter
      loop do
       sleep(0.1)
       @message.call(@temp.to_i,11,0,0)
       Graphics.update if @counter%50==0
       @message.call(@temp.to_i,11,1,0)
       Input.update
       if Input.trigger?(Input::B)
         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)','')

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •