Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Movie Abspielen?



UltimateZeldaFan
22.02.2007, 15:59
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

Lukas
22.02.2007, 17:12
.avi geht im XP nicht mehr ohne weiteres. Hat beim 2k auch keiner benutzt.

Dark Shisha
23.02.2007, 21:52
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.

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


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

Beispiel:


$scene = Scene_Movie.new("intro",8 )

um es vor dem titelmenü erscheinen zu lassen diese script in Main einfügen

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

Cherry
24.02.2007, 15:53
Wenn ich das Game mit Alt+Enter auf Fullscreen mache (vor dem Video), kommt
http://cherry1.ch.ohost.de/imgs/err1.bmp

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...

Dark Shisha
24.02.2007, 16:41
das video darf keinen codec haben.
und angeblich soll MPG und WMV laufen. hab ich aber noch nicht ausprobiert...

Cherry
24.02.2007, 17:20
ich hab meinen Beitrag editiert...

-KD-
24.02.2007, 18:15
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.


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)','')