Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker


Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Jeux: puie z / Jeux: Citymaime - Chapitre 1 / Jeux: Mer, îles et fous / News: Du neuf dans le making / News: Muma|Rope est disponible en (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

291 connectés actuellement

30732104 visiteurs
depuis l'ouverture

2082 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Planète Glutko

Lunae - le bazar d'Emz0

Le Temple de Valor

Zarok

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [RESOLU] [RMXP] Script vidéo en fullscreen qui marche ???


William Samy - posté le 07/11/2012 à 19:44:32 (488 messages postés)

❤ 0

revenant des vivant.

Domaine concerné: cuisine
Logiciel utilisé: RMXP
Salut c'est moi !:salut
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:

Portion de code : Tout sélectionner

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.

Portion de code : Tout sélectionner

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:salut

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

❤ 0

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)

❤ 0

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)

❤ 0

revenant des vivant.

Oh, oui pardon,
voilà le script:

Portion de code : Tout sélectionner

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)

❤ 0

Et le deuxième ?

| Âmes Bannies - Demo 0.2 |


William Samy - posté le 08/11/2012 à 11:59:06 (488 messages postés)

❤ 0

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)

❤ 0

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 :sourit

| Âmes Bannies - Demo 0.2 |


William Samy - posté le 08/11/2012 à 12:24:21 (488 messages postés)

❤ 0

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)

❤ 0

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 :sourit

| Âmes Bannies - Demo 0.2 |


Crystal - posté le 08/11/2012 à 19:14:47 (2146 messages postés) -

❤ 0

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 ?


William Samy - posté le 08/11/2012 à 19:59:50 (488 messages postés)

❤ 0

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)

❤ 0

Portion de code : Tout sélectionner

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)

❤ 0

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)

❤ 0

revenant des vivant.

Dieu a entendu ma prière !

1000 merci Zeus81 !!!:biere

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)

❤ 0

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

repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers