Oniromancie: Scripts - Zeus Video Player


Comment ça marche?

Aëdemphia
Par Sylvanor

Fighting Robots Quest
Par Boulon

Forstale
Par Ødd Clock

Geex
Par roys

Inexistence
Par Falco

La Légende d'Ibabou
Par Zaitan

Lije
Par Gaetz

LoveMaster
Par Cuddlefox

Sarcia
Par Kaëlar

Super Mario RPG - Lost Souls
Par Omegabowser

News: Concours des Alex d'Or 2017-18: (...) / News: MegaMaker : créez votre propre (...) / News: Test de Tinker Quarry / Sorties: Leave the Room / Jeux: Leave the Room /

Chat  (36 connectés)

Bienvenue
visiteur !






publicité RPG Maker!

Statistiques

Liste des
membres


Contact

73 connectés actuellement

9170811 visiteurs
depuis l'ouverture

1063 visiteurs
aujourd'hui

Groupe Facebook

Barre de séparation

Partenaires




TOP
GAMEMAKING


Les 5 plus
visités

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Pixelandgame

Tashiroworld

HeyMakeGames

Au hasard

Le Comptoir du Clikeur

RPG Architect

Nebula-Académie

Les deux derniers

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Nos autres partenaires

Devenir
partenaire


Barre de séparation

Un site du réseau
War Paradise

Annuaires référenceurs





Zeus Video Player
Script pour RPG Maker XP
Ecrit par Zeus81

Zeus Video Player 1.0
by Zeus81



Il existe déjà plusieurs scripts pour lire des vidéo sur RMXP mais la petite particularité de celui-ci est qu'il fonctionne aussi en plein écran...

Fonctionnalités
- Lit les fichiers avi
- Pas de clignotement de l'écran.
- Marche aussi en mode plein écran.
- Possibilité de centrer ou étirer les vidéo qui ont une résolution différente de 640x480.
- Option pour quitter avant la fin de la vidéo en appuyant sur Entrée/Espace/C.

Exemple d'utilisation
Graphics.play_movie(path, cancelable, fit)
path = chemin du fichier avi
cancelable = true si on veut autoriser l'arrêt de la vidéo, sinon false
fit = true si on veut étirer la vidéo quand elle n'est pas en 640x480, false si on veut la centrer.
ex : Graphics.play_movie("Movies/prout.avi", true, true)

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
69
70
71
72
73
74
75
# Zeus Video Player 1.0
 
module Graphics
 
  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_movie(filename, cancelable = true, fit = true)
    MultiByteToWideChar.call(65001, 0, filename, -1, utf16="\0"*520, 260) # utf8 => utf16
    WideCharToMultiByte.call(0, 0, utf16, -1, ansi="\0"*260, 260, 0, 0) # utf16 => ansi
    l = GetShortPathName.call(ansi, spath="\0"*260, 260)
    unless FileTest.exist?(spath = spath[0,l])
      raise(error=Errno::ENOENT.new(filename), error.message, caller)
    end
    MciSendString.call("open \"#{spath}\" alias VIDEO type AVIVideo style Child parent #{HWnd}", 0, 0, 0)
    MciSendString.call('where VIDEO source', buffer=' '*28, 28, 0)
    src_rect = buffer.split(' ').map! {|s| s.to_i}
    return if src_rect.size != 4 # format de la vidéo non supporté
    width, height = 640, 480
    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 = width, height, 9999
    Graphics.update
    if fit
      ratio = src_rect[2]/src_rect[3].to_f
      src_rect[2], src_rect[3] = width, (width/ratio).to_i
      src_rect[3], src_rect[2] = height, (height*ratio).to_i if src_rect[3] > height
    end
    src_rect[0], src_rect[1] = (width-src_rect[2])/2, (height-src_rect[3])/2
    MciSendString.call('put VIDEO window at 0 0 1 1', 0, 0, 0) # manip pour éviter un bug en plein écran
    MciSendString.call('play VIDEO', 0, 0, 0)
    MciSendString.call("put VIDEO window at #{src_rect.join(' ')}", 0, 0, 0)
    do_exit = false
    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
        end
        Input.update
        break if cancelable and Input.trigger?(Input::C)
        MciSendString.call('status VIDEO mode', buffer, 28, 0)
        break if buffer !~ /^playing/
      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




zeus81 - posté le 27/03/2014 à 16:39:18. (11072 messages postés) - bocauxharam

Mise à jour : https://www.dropbox.com/s/q933du4ix2r0cep/Zeus%20Video%20Player.rb
Log change v2.1 :
- compatibilité VX.
- compatibilité VXace (ça remplace le player par défaut).
- la vidéo est mise en pause quand le jeu perd le focus.
- support des noms de fichiers unicodes.
- on peut utiliser F1 et F12 comme Alt+Enter pendant une vidéo.
- meilleure compatibilité avec Fullscreen++
- messages d'erreurs plus précis.
- on peut choisir une image de fond pour le player (dans le cas où la vidéo ne remplit pas toute la fenêtre).
L'image doit s'appeler "ZeusVideoPlayer" et se trouver dans le dossier Pictures, elle sera chargée automatiquement si trouvée.
- on peut lire tous types de fichiers (plus seulement les avi).
Cela dit ça peut créer quelques bugs liés au mode plein écran.
J'ai rajouté une option ZVP_OldAviMode pour rétablir le fonctionnement de la v1.
- bugs divers corrigés.


Kreiss - posté le 25/10/2014 à 18:42:37. (45 messages postés)

C'est un très bon script, tout fonctionne très bien.

Seul problème, c'est qu'une fois le jeu crypter avec le dossier vidéo dans graphics.
Le script ne le trouve plus...
Il y a un moyen de régler le problème sans devoir déplacer le dossier vidéo à la racine ?


zeus81 - posté le 26/10/2014 à 04:12:24. (11072 messages postés) - bocauxharam

Non, il ne faut simplement pas mettre les vidéos dans les dossiers Graphics et Data.
Ça sera pas crypté mais tant pis, c'est déjà le cas des Audios.

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

Plan du site:

Activité: Accueil | News | Forum | Flash-news | Chat | Commentaires | Galerie | Screen de la semaine | Sorties | Articles perso | Livre d'or | Recherche
Jeux: Index jeux séparés | Top Classiques | Top Originaux | Les autres | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Jeux complets | Proposer
Rubriques: Le Wiki | Collection Oniro | Tutoriaux | Scripts | Guides | Gaming-Live | Tests | Making-of | Interviews | Articles perso | OST | L'Annuaire | Divers | Palmarès
Hébergés: Aëdemphia | Fighting Robots Quest | Forstale | Geex | Inexistence | La Légende d'Ibabou | Lije | LoveMaster | Sarcia | Super Mario RPG - Lost Souls
Ressources: Jeux | Programmes | Packs de ressources | Midis | Eléments séparés | Sprites
RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis