Bienvenue visiteur !
|
Statistiques
Liste des membres
Contact
Mentions légales
291 connectés actuellement
30732104 visiteurs depuis l'ouverture
2082 visiteurs aujourd'hui
Partenaires
Tous nos partenaires
Devenir partenaire
|
William Samy -
posté le 07/11/2012 à 19:44:32 (488 messages postés)
| revenant des vivant. | Domaine concerné: cuisine
Logiciel utilisé: RMXP
Salut c'est moi !
Bon j'ai fait une super-anim-de-la-mort-qui-tue que j'ai enregistré en vidéo .avi, ayant pour idée de l'insérer dans mon projet, en me disant qu'après je trouverai bien un script adéquat sur internet, depuis le temps que RMXP existe.
JE ME SUIS BIEN FAIT BAIS*R.
J'ai trouvé 2 scripts différents, l'un marche à merveille, sauf si le jeu tourne en fullscreen. La vidéo se lit parfaitement quand j'ai ma fenêtre en 640*480 (pas de bug, aucun lag, pas de temps d'attente ni au début ni à la fin).
Mais quand je lance le jeu en plein écran, il en sort automatiquement pour lire la vidéo en mode fenêtre. Une fois que la vidéo est fini, il se remet en plein écran et continue. C'est pas très classe et ça met du temps à sortir et à rerentrer en plein écran. Ce qui au final gâche tout. Je cherche donc une solution pour pouvoir lire mon jeu en plein écran, y compris pour lire les vidéo occasionnelles que j'insère dans mon projet. Et j’aimerais que ça marche pour tout type d'écran évidemment (j'ai un 1920*1080).
- J'ai fouillé et bidouillé le script avec mes quelques connaissances en ruby mais rien à ma vue qui puisse maintenir le plein écran quand la vidéo se lance.
-j'ai tenté de faire alt + Entrée pour mettre le jeu en plein écran PENDANT la lecture de la vidéo. Ca marche plus ou moins car ya des flash noir tout le temps mais la vidéo se met bien en plein écran dans les dimmension du miens. Ce n'est donc pas un problème de résolution de la vidéo, puisque celle-ci peut s'afficher en s'adaptant aux dimensions de mon moniteur.
Bref j'ai fouillé de fond en comble je n'ai trouvé aucune clé au problème.
Donc je voulais savoir si quelqu'un connait bien ce problème et sait le résoudre,
ou si lire des vidéos dans RXMP restera à jamais un fantasme.
EDIT: Voici le script en question:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
| class Scene_Movie
def initialize(movie)
@readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l'
@movie_name = Dir.getwd()+"\\Graphics\\Movies\\"+movie+".avi"
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)
Graphics.update
@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)
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)','') |
code d'appel: Scene_Movie.new(nomvidéo)
Voici l'autre script, mais il faut en plus indiquer combien de temps dure la vidéo quand on l'appelle.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| class Scene_Movie
def initialize(movie,length)
@movie_name = Dir.getwd()+"\Movies\"+movie+".avi"
@counter = length
end
def main
Graphics.transition
@wnd = Win32API.new('user32','FindWindowEx','%w(l,l,p,p)','L')
@temp = @wnd.call(0,0,nil,"LE_NOM_DE_VOTRE_PROJET").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)
@movie.call("play FILE",0,0,0)
loop do
Graphics.update
sleep(1)
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)
$scene = Scene_Map.new
Graphics.freeze
end
end
|
code d'appel: $scene = Scene_Movie.new(nomvidéo, durée en seconde)
Merci
|
Galfart.fr || « L'humanité souffre exactement autant aujourd'hui qu'elle a toujours souffert, elle l'a raffiné et s'illusionne sur son état... c'est la seule différence... » R.Steiner |
Crystal -
posté le 08/11/2012 à 00:58:25 (2146 messages postés)
- | | Je pense que poster ledit script aiderait énormément pour un début.
|
Ixsuixwzone -
posté le 08/11/2012 à 08:52:00 (2453 messages postés)
| | Nannnnnn !!! La prophétie parlait d'un homme qui essayerai de faire lire a rm une vidéo en .avi... ON VA TOUS MOURIR !!!!
|
| Âmes Bannies - Demo 0.2 | |
William Samy -
posté le 08/11/2012 à 11:01:30 (488 messages postés)
| revenant des vivant. | Oh, oui pardon,
voilà le script:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
| class Scene_Movie
def initialize(movie)
@readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l'
@movie_name = Dir.getwd()+"\\Graphics\\Movies\\"+movie+".avi"
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)
Graphics.update
@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)
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)','') |
|
Galfart.fr || « L'humanité souffre exactement autant aujourd'hui qu'elle a toujours souffert, elle l'a raffiné et s'illusionne sur son état... c'est la seule différence... » R.Steiner |
Ixsuixwzone -
posté le 08/11/2012 à 11:07:01 (2453 messages postés)
| | Et le deuxième ?
|
| Âmes Bannies - Demo 0.2 | |
William Samy -
posté le 08/11/2012 à 11:59:06 (488 messages postés)
| revenant des vivant. | l'autre présente moins d'interêt car on doit également indiquer le temps de la vidéo.
Voilà je l'ai mis aussi
|
Galfart.fr || « L'humanité souffre exactement autant aujourd'hui qu'elle a toujours souffert, elle l'a raffiné et s'illusionne sur son état... c'est la seule différence... » R.Steiner |
Ixsuixwzone -
posté le 08/11/2012 à 12:08:38 (2453 messages postés)
| | Chose étrange le deuxième script marche chez moi en full screen... Pas pour toi ?
EDIT: A tiens, si la vidéo exede les 15 sec non... Y a effectivement des flash noir puis ca ferme.
Je vais essayer de voir ce qui cause ca
|
| Âmes Bannies - Demo 0.2 | |
William Samy -
posté le 08/11/2012 à 12:24:21 (488 messages postés)
| revenant des vivant. | non moi j'ai plusieurs problème avec le 2ème script:
-quand je lance le projet en mode fenêtre, quand la vidéo se lit il y a des flash noirs toute les seconde environ, c'est moche.
-quand je lance le jeu en fullscreen, lorsque la vidéo démarre ça sort automatiquement du fullscreen et la vidéo se lit dans ses dimension originales (je pense) en haut à gauche de l'écran. Une fois que la vidéo est terminé je reviens en fullscreen automatiquement
-quand je met en fullscreen PENDANT la vidéo, la vidéo continue en plein écran mais avec les même flash noirs toutes les secondes.
je comprend rien
|
Galfart.fr || « L'humanité souffre exactement autant aujourd'hui qu'elle a toujours souffert, elle l'a raffiné et s'illusionne sur son état... c'est la seule différence... » R.Steiner |
Ixsuixwzone -
posté le 08/11/2012 à 14:37:50 (2453 messages postés)
| | A tiens, si la vidéo exede les 15 sec non... Y a effectivement des flash noir puis ça ferme.
Je vais essayer de voir ce qui cause ca
|
| Âmes Bannies - Demo 0.2 | |
Crystal -
posté le 08/11/2012 à 19:14:47 (2146 messages postés)
- | | Si tu remplaces:
Par:
1
| if false && @width == 640 |
Et que tu mets ton jeu en plein écran au démarrage, il se passe quoi quand tu lis ta vidéo ?
|
William Samy -
posté le 08/11/2012 à 19:59:50 (488 messages postés)
| revenant des vivant. | Citation: Si tu remplaces:
Portion de code : Tout sélectionner
1
if @width == 640
Par:
Portion de code : Tout sélectionner
1
if false && @width == 640
Et que tu mets ton jeu en plein écran au démarrage, il se passe quoi quand tu lis ta vidéo ? |
Change rien
|
Galfart.fr || « L'humanité souffre exactement autant aujourd'hui qu'elle a toujours souffert, elle l'a raffiné et s'illusionne sur son état... c'est la seule différence... » R.Steiner |
Zeus81 -
posté le 09/11/2012 à 20:08:17 (11071 messages postés)
| |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
| module Video
findWindow = Win32API.new('user32', 'FindWindow', 'pp', 'i')
GetMessage = Win32API.new('user32', 'GetMessage', 'piii', 'i')
TranslateMessage = Win32API.new('user32', 'TranslateMessage', 'p', 'i')
DispatchMessage = Win32API.new('user32', 'DispatchMessage', 'p', 'i')
SendInput = Win32API.new('user32', 'SendInput', 'ipi', 'i')
MultiByteToWideChar = Win32API.new('kernel32', 'MultiByteToWideChar', 'iipipi', 'i')
WideCharToMultiByte = Win32API.new('kernel32', 'WideCharToMultiByte', 'iipipipp', 'i')
GetShortPathName = Win32API.new('kernel32', 'GetShortPathName', 'ppi', 'i')
MciSendString = Win32API.new('winmm', 'mciSendString', 'ppii', 'i')
HWnd = findWindow.call('RGSS Player', 0)
def self.play(path, cancelable = true, stretch = true)
buffer, do_exit = ' '*28, false
MultiByteToWideChar.call(65001, 0, path, -1, utf16="\0"*520, 260) # utf8 => utf16
WideCharToMultiByte.call(0, 0, utf16, -1, ansi="\0"*260, 260, 0, 0) # utf16 => CP_ACP
size = GetShortPathName.call(ansi, shortpath="\0"*260, 260)
shortpath = shortpath[0, size]
MciSendString.call("open \"#{shortpath}\" alias VIDEO type AVIVideo style Child parent #{HWnd}", 0, 0, 0)
MciSendString.call('where VIDEO source', buffer, 28, 0)
src_rect = buffer.split(' ').map! {|s| s.to_i}
return if src_rect.size < 4
if stretch
ratio = src_rect[2] / src_rect[3].to_f
src_rect[2], src_rect[3] = 640, (640 / ratio).to_i
src_rect[3], src_rect[2] = 480, (480 * ratio).to_i if src_rect[3] > 480
end
src_rect[0], src_rect[1] = (640-src_rect[2])/2, (480-src_rect[3])/2
background = Sprite.new
background.bitmap = Bitmap.new(1, 1)
background.bitmap.set_pixel(0, 0, Color.new(0,0,0))
background.zoom_x, background.zoom_y, background.z = 640, 480, 9999
Graphics.update
MciSendString.call('put VIDEO window at 0 0 1 1', 0, 0, 0) # manip pour eviter un bug en plein ecran
MciSendString.call('play VIDEO', 0, 0, 0)
MciSendString.call("put VIDEO window at #{src_rect.join(' ')}", 0, 0, 0)
begin
loop do
GetMessage.call(buffer, HWnd, 0, 0)
TranslateMessage.call(buffer)
DispatchMessage.call(buffer)
case buffer.unpack('@4L').first
when 0x0012 #WM_QUIT
do_exit = true
break
when 0x0104 #WM_SYSKEYDOWN
if buffer.unpack('@8L').first == 0x0D #VK_RETURN
SendInput.call(1, [1,0x0D,0,0,0,0].pack('LSSLLLx8'), 28)
Graphics.update
Input.update
end
else
Input.update
break if cancelable and Input.trigger?(Input::C)
MciSendString.call('status VIDEO mode', buffer, 28, 0)
break if buffer !~ /^playing/
end
end
rescue Hangup
retry
end
MciSendString.call('stop VIDEO', 0, 0, 0)
MciSendString.call('close VIDEO', 0, 0, 0)
background.bitmap.dispose
background.dispose
exit if do_exit
end
end |
Video.play(path, cancelable, stretch)
path = chemin du fichier avi
cancelable = true si tu veux qu'on puisse stopper la vidéo en appuyant sur entrée sinon false
stretch = true si tu veux que la vidéo soit étirée quand elle n'est pas en 640x480, false si tu veux qu'elle soit juste centrée.
ex : Video.play("Video/prout.avi", true, true)
Et mets pas tes vidéo dans le dossier Graphics.
|
Doctor-KFC -
posté le 09/11/2012 à 21:20:18 (45 messages postés)
| Aime le KFC poulet! Tu risque de le regretter! | Moi je dis Vive RpgMaker VXAce!!
Non plus sérieusement il me semble avoir un copie d'un script avec une demo d'intro et tout et tout dans un de mes ultimes clef usb . Je vais voir...
EDIT: Rien de Rien désolé...
|
http://www.rpg-maker.fr/index.php?page=forum&id=21332&deb=1&ancre=917900#rech |
William Samy -
posté le 10/11/2012 à 00:32:09 (488 messages postés)
| revenant des vivant. | Dieu a entendu ma prière !
1000 merci Zeus81 !!!
Ca marche parfaitement !
|
Galfart.fr || « L'humanité souffre exactement autant aujourd'hui qu'elle a toujours souffert, elle l'a raffiné et s'illusionne sur son état... c'est la seule différence... » R.Steiner |
Doctor-KFC -
posté le 10/11/2012 à 10:27:36 (45 messages postés)
| Aime le KFC poulet! Tu risque de le regretter! | Et bah voilà comme toujours je sers à rien ... :/
|
http://www.rpg-maker.fr/index.php?page=forum&id=21332&deb=1&ancre=917900#rech | Index du forum > Entraide > [RESOLU] [RMXP] Script vidéo en fullscreen qui marche ???
|
|
|