PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RPG MAKER XP VIDEOS IM VOLLBILD?



Planet Zero
23.12.2010, 17:44
Hi^^ leute kann mir vieleicht jemand sagn ob man mit dem RPG Maker Xp videos im Vollbild abspielen lassen kann?
ich hab den script von Sound Spawn und im minimiertembild läuft das video einwandfrei aber im Vollbildmodus wirft mich das spiel raus...kann einer helfer?xD

Cornix
23.12.2010, 18:34
Ohne das Script zu sehen kann man da nicht sehr viel helfen. Du müsstest den Code einmal kopieren oder einen Link zur Quelle angeben.

Planet Zero
23.12.2010, 18:37
Einmal das was im Editor rein kommt:
#Movie Script #Author: Sound Spawn# #Enhanced Animemage#
##Copy this into a new section of your game.
##To play a file, move the mpg file into a "movies" subdirectory
##(yourgame\data, yourgame\graphics, yourgame\movies).
##Then call '$scene = Scene_Movie.new("filename")' where filename is your movies actual filename
## (minus the .mpg). #exapmple Scene_Movie.new("???")
## If you want to play multiple movies in a row
##(for example before the game starts, maybe a "developed by", "produced by", "intro movie"
## set or something... Go to the "main" section of code and find the line "$scene = Scene_Title.new".
##Just after that line add:
##CODE
##Audio.bgm_play("Movies/" + 'dev_by', 100, 100) #loads movie
##Audio.bgm_play("Movies/" + 'pro_b', 100, 100) #loads movie
##Audio.bgm_play("Movies/" + 'intro', 100, 100) #loads movie
##Audio.bgm_stop
##$scene = Scene_Movie.close_scene #closes active movie window
##$scene = Scene_Movie.new("dev_by")
##$scene = Scene_Movie.new("pro_by")
##$scene = Scene_Movie.new("intro")
##$scene = Scene_Title.new
class Scene_Movie
def initialize(movie)
@readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l'
@movie_name = Dir.getwd()+"\\Movies\\"+movie+".wmv"
main
end

def main

game_name = "\0" * 256
@readini.call('Game','Title','',game_name,255,".\\Game.ini")
game_name.delete!("\0")
@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

status = " " * 255
movie.call("play FILE",0,0,0)
loop do
sleep(0.1)
@message.call(@temp.to_i,11,0,0) #Remove '#' if using RMXP
Graphics.update #Remove '#' if using RMXP
@message.call(@temp.to_i,11,1,0)
Input.update
movie.call("status FILE mode",status,255,0)
true_status = status.unpack("aaaa")
if true_status.to_s != "play"
break
end
if Input.trigger?(Input::B) #can change or add Input::C
Input.update
break
end
end
movie.call("close FILE",0,0,0)
bail
end

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

def close_scene
$keybd = Win32API.new ('user32.dll', 'keybd_event', ['i', 'i', 'l', 'l'], 'v')
$keybd.call 0xA4, 0, 0, 0
$keybd.call 0x73, 0, 0, 0
$keybd.call 0x73, 0, 2, 0
$keybd.call 0xA4, 0, 2, 0
end
#End Movie Script#



und einmal das im Ereignisfeld:

Audio.bgm_play("Movies/" + 'wert',
100, 100)
Audio.bgm_stop
$scene = Scene_Movie.close_scene
$scene = Scene_Movie.new("wert")
$scene = Scene_Map.new
return


Würde auch ein anderen Script nehmen wenn ich es damit im Vollbildschirm modus abspielen kann^^

Alan
26.12.2010, 21:20
Hi,

ich habe ein ähnliches Problem und verwende das gleiche Skript. Zusätzlich möchte ich anmerken, dass das Skript SEHR heikel in Bezug auf Dateiformat und Codec ist. Bislang konnte ich nur ein komplett unkomprimiertes Avi-Format abspielen und das wird bereits bei kleinen Videos RIESIG groß was die Dateigröße betrifft... wenn es wenigstens JPG AVI abspielen könnte, wäre das bereits ein großer Fortschritt.

Wenn jemand ein vernünftiges, gut funktionierendes Skript (das oben angegebene ist aus genannten Gründen nicht ganz optimal) oder einen anderen Weg kennt, wie man Videos vernünftig in RMXP wiedergeben kann, wäre das grandios und für mein Projekt sehr sehr wichtig!

Gruß,


Alan

SMWma
26.12.2010, 23:33
ohne es zu testen ^,^
http://www.youtube.com/watch?v=Vlo2S2i62Uw

und auf rpg-studio gibt es auch noch ein-zweo Videoskripts.

Ansonsten könnt ihr eure Videos einfach in den Soundordner kopieren und dann wird das Video beim abspielen des "Soundeffektes" geöffnet, allerdings in ein seperates Fenster.

Alan
27.12.2010, 22:02
Hi,

ich möchte dieses Thema hier nicht "an mich reißen" aber da ich dasselbe Skript verwende wie oben genannt, denke ich es passt dazu.
Ich hab folgendes Problem: ich hab mein Video konvertiert und zwar in das Format, das vom Skript-Ersteller als kompatibel bzw. bevorzugt angegeben wird (MPEG-1 mit 640x480, 25FPS, 512kbps bitrate etc.) - das funktioniert im Fenstermodus auch prima. Allerdings kommt NACH dem Ende des Videos (egal ob man es komplett angeschaut oder mit ESC abgebrochen hat) ein zweites, schwarzes Fenster, beschriftet mit "ActiveMovie Window", das man schließen MUSS bevor das eigentliche Spiel weiterlaufen kann.

Folgende Code-Zeile, ausgeführt nach dem Abspielen des Videos, schließt das ActiveMovie Window:


Scene_Movie.close_scene #closes active movie window


... allerdings hat die Sache noch einen Haken: jedes Mal wenn nachher *irgendein* Soundeffekt abgespielt wird, kommt wieder dieses ActiveMovie Window daher und man MUSS es schließen. Jedes Mal. Gibt's da eine Möglichkeit wie man das unterbinden kann?



Gruß,



Alan



EDIT: Ich muss mich erneut korrigieren. Und zwar erscheint dieses ActiveMovie Window nicht bei jedem Soundeffekt, sondern immer dann, wenn ein Bildschirm-Übergangs-Effekt aufgerufen wird (möglicherweise auch an anderen Punkten, aber das ist die einzige Regelmäßigkeit, die ich bisher erkennen konnte). Trotzdem ist das lästig und es sollte eine Möglichkeit geben, den Win32Api-Kernel nach einmaliger Verwendung wieder zu "schließen" oder?