collapse collapse

 Community


 User Info




Willkommen Gast. Bitte einloggen oder registrieren.

 Partnerseiten

rpgvx.net

Das Forum ist offline

Autor Thema: Frage zu einem Script  (Gelesen 921 mal)

Offline rayman

  • Eventkenner
  • Eventmeister
  • ***
  • Beiträge: 358
Frage zu einem Script
« am: August 24, 2010, 16:23:09 »
Ich habe mal eine Frage zu diesem Script:
Spoiler for Hiden:
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#                            -  Game_Film II - reloaded ^^
#  par berka
#                          www.rpgmakervx-fr.com                                         
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#  Rgss 1&2                  v 1.0
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#                          -Utilisation-
# écrivez dans un event, commande insérer un script:
#
# #minimum requis:
# [film]                # obligatoire !
# film = monfilm.avi    # ou mpg... nom du fichier à lire
#
# #configuration optionnelle, l'ordre n'est pas important
# mettre les 4 coordonnées sinon aucune !
# x = 12                # position horizontale
# y = 1                  # position verticale
# w = 150                # redimensionnement du film: largeur
# h = 150                # redimensionnement du film: hauteur
#
# full = true            # active (ou pas) le plein écran dans le mode fenetré
# vol = 750              # entre 0 et 1000 volume sonore du film
# bass = 999            # entre 0 et 1000 volume des basses: tres faible nuance
# aig = 250              # entre 0 et 1000 volume des aigus: tres faible nuance
# #commandes:
# bouton B pour quitter, C pour interrompre/reprendre la lecture
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# pourquoi un nouveau script de video ?
# simplement pour ne plus avoir à répondre à toutes ces questions sur la video !
# ce script est le plus simple possible: j'ai testé toutes les erreurs possibles
# l'appel est personalisable
# le format de la video est auto-détecté
# ajout du plein écran
# de la gestion du volume
# Un dossier Films est automatiquement créé dans votre projet.
# vous y déposez les vidéos à lire !
# Il vaut mieux prendre de petites videos: parce que les démos de 200 Mo...
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
class Game_Film
  def initialize(hash)
    hash.has_key?(:film) ? film=hash[:film] : return
    hash.has_key?(:x) ? @x=hash[:x]+" " : @x="0"
    hash.has_key?(:y) ? @y=hash[:y]+" " : @y="0"
    hash.has_key?(:w) ? @w=hash[:w]+" " : @w=""
    hash.has_key?(:h) ? @h=hash[:h]+" " : @h=""
    hash.has_key?(:vol) ? @vol=hash[:vol]+" " : @vol="1000"
    hash.has_key?(:bass) ? @bass=hash[:bass]+" " : @bass="1000"
    hash.has_key?(:aig) ? @aig=hash[:aig]+" " : @aig="1000"
    hash.has_key?(:pos) ? @pos="at pos #{hash[:pos].to_i*1000} " : @pos="at pos 0 "
    @full=hash[:full] if hash.has_key?(:full)
    @full&&dim_ecran !=[640,480] ? @plee="fullscreen " : @plee=""
    @type=" "
    @type=" type mpegvideo" if File.extname(film)==(".mpg"||".mpeg")
    @type=" type avivideo" if File.extname(film)==".avi"
    @nom='./Films/'+film
    (p "fichier #{@nom} non trouvé";return) if !FileTest.exist?(@nom)
    @film=Win32API.new('winmm','mciSendString','ppll','v')
    lecture
  end
  def handle
    jeu="\0"*256
    ini=Win32API.new('kernel32','GetPrivateProfileStringA','pppplp', 'l')
    ini.call('Game','Title','',jeu,255,".\\Game.ini")
    return Win32API.new('user32','FindWindowEx','llpp','l').call(0,0,nil,jeu.delete!("\0"))
  end
  def lecture
    v,t,status,pause=version,Time.now," "*255,false
    @film.call("open #{@nom} alias FILE#{@type} style child parent "+handle.to_s,0,0,0)
    @film.call("put FILE window at #{@x}#{@y}#{@w}#{@h}",status,255,0)
    @film.call("setaudio File volume to #{@vol}",status,255,0)
    @film.call("setaudio File bass to #{@bass}",status,255,0)
    @film.call("setaudio File trebble to #{@bass}",status,255,0)
    @film.call("play FILE #{@plee} notify",status,255,handle)
    loop{sleep(0.1)
      Input.update
      @film.call("status FILE mode notify",status,255,0)
      break if status.unpack("aaaa")=="stop".split(//)||Input.trigger?(Input::B)
      if Input.trigger?(Input::C)
        if !pause;@film.call("pause FILE notify",status,255,handle);pause=true
        else;@film.call("play FILE #{@plee} notify",status,255,handle);pause=false
        end     
      end
      (t=maj(t))if v=='xp'}
    @film.call("close FILE notify",0,0,handle)
    $scene=Scene_Map.new
  end
  def dim_ecran
    lw=Win32API.new('user32','GetSystemMetrics','i','i')
    return lw.call(0),lw.call(1)
  end
  def maj(t)
    (Graphics.update;return Time.now)if t.sec<=Time.now.sec-9||t.min !=Time.now.min
    return t
  end
  def version;FileTest.exist?('./Data/scripts.rvdata') ? 'vx': 'xp';end
end
Dir.open("./Films") rescue Dir::mkdir("./Films",0777)
class Game_Interpreter;def eval(script);cmd_eval(script);end;end#rmvx
class Interpreter;def eval(script);cmd_eval(script);end;end#rmxp
def cmd_eval(script)
  if script.include?("[film]")
    hash={}
    script.gsub!("[film]"){}
    list=script.split("\n")
    list.each{|e|e.gsub!(" "){};f=e.split("=");hash[f[0].to_sym]=f[1] if !f[1].nil?}
    Game_Film.new(hash)
  else;return Kernel.eval(script)
  end
end
Mit diesem Script, kann man Videos abspielen.
Man kann dann auch Pausieren und beenden.
Ist es möglich, die Pause und beenden funktion für einzelne, oder alle Videos nicht möglich zu machen?
So dass es durchläuft, bbis zum ende.

Mfg

Ray
« Letzte Änderung: August 28, 2010, 22:38:21 von Ðeity »
RPG-EVOLUTION:



Re: Frage zu einem Script

Offline Kay95

  • RTP-Mapper
  • *
  • Beiträge: 35
Re: Frage zu einem Script
« Antwort #1 am: August 28, 2010, 22:27:59 »
In der theorie müsstest du nur die stelle im script suchen die den knopf fürs pausieren beenden oder die ganze funktion beinhaltet löschen so geht es ja auch mit dem menüpunkt spiechern
aber ist nur ne theorie da ich mich mit rgss null auskenne^^

Re: Frage zu einem Script

Offline Ðeity

  • No Pain, no gain!
  • Administrator
  • Eventmeister
  • ****
  • Beiträge: 427
  • No Pain, no Gain!
    • Deity-VX
Re: Frage zu einem Script
« Antwort #2 am: August 28, 2010, 22:56:41 »
Es gibt ein Problem. ^^
Ich kann es zwar für die Taste C und X ausmachen, nicht aber für ESC und Leertaste, da diese unabhängig vom Maker fungieren. :(

Erste Zeile musst du die ID für den Switch wählen, der das Pausieren und Beenden durch Drücken von C/X kontolliert.

SWITCH_HANDE_ID = 1
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#                            -  Game_Film II - reloaded ^^
#  par berka
#                          www.rpgmakervx-fr.com                                         
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#  Rgss 1&2                  v 1.0
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#                          -Utilisation-
# écrivez dans un event, commande insérer un script&#058;
#
# #minimum requis:
# [film]                # obligatoire !
# film = monfilm.avi    # ou mpg... nom du fichier à lire
#
# #configuration optionnelle, l'ordre n'est pas important
# mettre les 4 coordonnées sinon aucune !
# x = 12                # position horizontale
# y = 1                  # position verticale
# w = 150                # redimensionnement du film: largeur
# h = 150                # redimensionnement du film: hauteur
#
# full = true            # active (ou pas) le plein écran dans le mode fenetré
# vol = 750              # entre 0 et 1000 volume sonore du film
# bass = 999            # entre 0 et 1000 volume des basses: tres faible nuance
# aig = 250              # entre 0 et 1000 volume des aigus: tres faible nuance
# #commandes:
# bouton B pour quitter, C pour interrompre/reprendre la lecture
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# pourquoi un nouveau script de video ?
# simplement pour ne plus avoir à répondre à toutes ces questions sur la video !
# ce script est le plus simple possible: j'ai testé toutes les erreurs possibles
# l'appel est personalisable
# le format de la video est auto-détecté
# ajout du plein écran
# de la gestion du volume
# Un dossier Films est automatiquement créé dans votre projet.
# vous y déposez les vidéos à lire !
# Il vaut mieux prendre de petites videos: parce que les démos de 200 Mo...
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
class Game_Film
  def initialize(hash)
    hash.has_key?(:film) ? film=hash[:film] : return
    hash.has_key?(:x) ? @x=hash[:x]+" " : @x="0"
    hash.has_key?(:y) ? @y=hash[:y]+" " : @y="0"
    hash.has_key?(:w) ? @w=hash[:w]+" " : @w=""
    hash.has_key?(:h) ? @h=hash[:h]+" " : @h=""
    hash.has_key?(:vol) ? @vol=hash[:vol]+" " : @vol="1000"
    hash.has_key?(:bass) ? @bass=hash[:bass]+" " : @bass="1000"
    hash.has_key?(:aig) ? @aig=hash[:aig]+" " : @aig="1000"
    hash.has_key?(:pos) ? @pos="at pos #{hash[:pos].to_i*1000} " : @pos="at pos 0 "
    @full=hash[:full] if hash.has_key?(:full)
    @full&&dim_ecran !=[640,480] ? @plee="fullscreen " : @plee=""
    @type=" "
    @type=" type mpegvideo" if File.extname(film)==(".mpg"||".mpeg")
    @type=" type avivideo" if File.extname(film)==".avi"
    @nom='./Films/'+film
    (p "fichier #{@nom} non trouvé";return) if !FileTest.exist?(@nom)
    @film=Win32API.new('winmm','mciSendString','ppll','v')
    lecture
  end
  def handle
    jeu="\0"*256
    ini=Win32API.new('kernel32','GetPrivateProfileStringA','pppplp', 'l')
    ini.call('Game','Title','',jeu,255,".\\Game.ini")
    return Win32API.new('user32','FindWindowEx','llpp','l').call(0,0,nil,jeu.delete!("\0"))
  end
  def lecture
    v,t,status,pause=version,Time.now," "*255,false
    @film.call("open #{@nom} alias FILE#{@type} style child parent "+handle.to_s,0,0,0)
    @film.call("put FILE window at #{@x}#{@y}#{@w}#{@h}",status,255,0)
    @film.call("setaudio File volume to #{@vol}",status,255,0)
    @film.call("setaudio File bass to #{@bass}",status,255,0)
    @film.call("setaudio File trebble to #{@bass}",status,255,0)
    @film.call("play FILE #{@plee} notify",status,255,handle)
    loop{sleep(0.1)
      Input.update
      @film.call("status FILE mode notify",status,255,0)
      break if status.unpack("aaaa")=="stop".split(//)|| (Input.trigger?(Input::B) && $game_switches[SWITCH_HANDE_ID])
      if Input.trigger?(Input::C) && $game_switches[SWITCH_HANDE_ID]
        if !pause;@film.call("pause FILE notify",status,255,handle);pause=true
        else;@film.call("play FILE #{@plee} notify",status,255,handle);pause=false
        end     
      end
      (t=maj(t))if v=='xp'}
    @film.call("close FILE notify",0,0,handle)
    $scene=Scene_Map.new
  end
  def dim_ecran
    lw=Win32API.new('user32','GetSystemMetrics','i','i')
    return lw.call(0),lw.call(1)
  end
  def maj(t)
    (Graphics.update;return Time.now)if t.sec<=Time.now.sec-9||t.min !=Time.now.min
    return t
  end
  def version;FileTest.exist?('./Data/scripts.rvdata') ? 'vx': 'xp';end
end
Dir.open("./Films") rescue Dir::mkdir("./Films",0777)
class Game_Interpreter;def eval(script);cmd_eval(script);end;end#rmvx
class Interpreter;def eval(script);cmd_eval(script);end;end#rmxp
def cmd_eval(script)
  if script.include?("[film]")
    hash={}
    script.gsub!("[film]"){}
    list=script.split("\n")
    list.each{|e|e.gsub!(" "){};f=e.split("=");hash[f[0].to_sym]=f[1] if !f[1].nil?}
    Game_Film.new(hash)
  else;return Kernel.eval(script)
  end
end

MfG
Deity



Re: Frage zu einem Script

Offline rayman

  • Eventkenner
  • Eventmeister
  • ***
  • Beiträge: 358
Re: Frage zu einem Script
« Antwort #3 am: August 28, 2010, 23:17:39 »
Danke =D
Schade das die Tasten unabhängig vom Maker fungieren.
Nja, muss man mit leben^^
RPG-EVOLUTION:



 


 Bild des Monats

rooftop party

Views: 3615
By: papilion

 Umfrage

  • Wer soll das BdM gewinnen?
  • Dot Kandidat 1
  • 3 (25%)
  • Dot Kandidat 2
  • 1 (8%)
  • Dot Kandidat 3
  • 2 (16%)
  • Dot Kandidat 4
  • 0 (0%)
  • Dot Kandidat 5
  • 6 (50%)
  • Stimmen insgesamt: 12
  • View Topic

 Schnellsuche





SimplePortal 2.3.3 © 2008-2010, SimplePortal