Final Fantasy RPG Maker

Audio+

Voici un script que j'ai découvert grâce à un projet sur Factory, que j'ai trouvé vraiment super : un script qui permet beaucoup plus de fonction avec les musiques de votre jeu ! (comme mettre une pause à votre musique, reprendre à un moment particulier de la musique
Attention : c'est un peu compliqué au début, car il y a une synthaxe particulière, mais il explique bien.
En cas de problème, demandez moi.

(ce qui me surprend le plus avec ce script c'est que je le trouve très court ... et je me dis que les créateurs de RMXP aurait pu proposé ces fonctions eux même mais bon, on peut pas tout avoir, et puis ils ont voulu faire un logiciel accessible à tous)

Auteur : Zeus81

Mode d'emploi : Présent dans le script

Installation : Créer un nouveau script au dessus de Main et coller le code cidessous

Source : http://www.rpg-maker.fr/index.php?page= ... 292f64589d

Code :

#=================================
# Audio +
# Script créé par Zeus81
#=================================
#
#
# Manuel d'utilisation :
#
# Les commandes suivantes doivent être écrites dans un script.
#
#
# OUVERTURE D'UN NOUVEAU FICHIER AUDIO :
# Advanced_Audio.new("identifiant", "nom du fichier")
#
# identifiant = Nom quelconque dont on se servira ensuite pour modifier notre son.
#
# nom du fichier = Nom du fichier à lire (avec le chemin et l'extension).
#
# Exemple : Advanced_Audio.new("BGS 01", "Audio/BGS/020-People02.ogg")
#
# Note : Si un autre fichier audio porte le même identifiant il sera remplacé.
#
#
# DEMARRER LA LECTURE :
# Advanced_Audio["identifiant"].play(répétition, départ, fin)
#
# identifiant = Identifiant précédemment indiqué.
# Attention si l'identifiant ne correspond à aucun fichier ouvert, ça plantera.
#
# répétition = Précise si le fichier doit être lu en boucle ou pas.
# Pour lire en boucle mettez true, sinon false.
#
# départ = Temps à partir d'où débute la lecture en millisecondes.
# Si vous mettez -1 ce sera à partir de la dernière position de lecture.
#
# fin = Temps où s'arrêtera la lecture en ms.
# Si vous mettez -1 ça ira jusqu'à la fin du fichier.
#
# Exemple : Advanced_Audio["BGS 01"].play(true, 0, -1)
#
# Note : Les répétitions redémarrent non pas à la position de départ indiqué mais au début du fichier.
#
#
# METTRE EN PAUSE :
# Advanced_Audio["identifiant"].pause
#
#
# SORTIR DE PAUSE :
# Advanced_Audio["identifiant"].resume
#
#
# ARRETER LA LECTURE :
# Advanced_Audio["identifiant"].stop
#
# Note : Contrairement à la pause si vous voulez redémarrer la lecture il faudra passer par play.
# Ce qui signifie qu'il faudra remettre les options (répétition, départ, fin).
#
#
# FERMER LE FICHIER :
# Advanced_Audio["identifiant"].close
#
# Note : Ferme le fichier et libère la mémoire (en théorie).
#
#
# MODIFICATION DU VOLUME :
# Advanced_Audio["identifiant"].volume_change(volume, temps)
#
# volume = Nouveau volume du fichier entre 0 et 100
#
# temps = Durée de transition en nombre de frames.
#
# Exemple : Advanced_Audio["BGS 01"].volume_change(50, 40)
#
# Note : Par défaut le volume est à 100%
#
#
# MODIFICATION DE LA BALANCE (GAUCHE DROITE) :
# Advanced_Audio["identifiant"].balance_change(balance, temps)
#
# balance = Nouvelle balance du fichier entre -100 et 100
# A -100 le son est à gauche, à 0 au centre, à 100 à droite.
#
# Exemple : Advanced_Audio["BGS 01"].balance_change(-75, 200)
#
# Note : Par défaut la balance est à 0
#
#
# MODIFICATION DE LA VITESSE (TEMPO) :
# Advanced_Audio["identifiant"].pitch(vitesse)
#
# vitesse = Nouvelle vitesse de lecture en pourcentage.
# 200 = 2x, 100 = 1x, 50 = 0.5x
#
# Exemple : Advanced_Audio["BGS 01"].pitch(120)
#
# Note : Par défaut la vitesse est à 100%
#
#
# AUTRES FONCTIONS :
#
# Advanced_Audio["identifiant"].position : retourne la position de lecture actuelle
# Advanced_Audio["identifiant"].length : retourne la durée totale du fichier
# Advanced_Audio["identifiant"].mode : retourne l'état actuel (playing, paused, stopped)
#
# Advanced_Audio.reset : Ferme tous les fichiers audio
 
if defined?(Advanced_Audio)
 
Advanced_Audio.reset
 
else
 
class << Graphics
alias zeus81_advanced_audio_update update
def update
zeus81_advanced_audio_update
Advanced_Audio&#46;update
end
end
 
 
class Advanced_Audio
 
MciSendString = Win32API&#46;new("winmm", "mciSendString", "ppll", "l")
@@buffer = " "*256
@@audio = {}
 
def self&#46;&#91;&#93;(aliasname)
return @@audio&#91;aliasname&#93;
end
def self&#46;call(command)
return (MciSendString&#46;call(command, @@buffer, @@buffer&#46;size, 0) == 0)
end
def self&#46;update
@@audio&#46;each_value {|audio| audio&#46;update}
end
def self&#46;reset
@@audio&#46;each_value {|audio| audio&#46;volume(1000); audio&#46;close}
end
 
def initialize(aliasname, filename)
@aliasname = aliasname
@@audio&#91;@aliasname&#93;&#46;close if @@audio&#91;@aliasname&#93; != nil
@@audio&#91;@aliasname&#93; = self
Advanced_Audio&#46;call("open \"#{filename}\" alias \"#@aliasname\" type MPEGVideo")
Advanced_Audio&#46;call("set \"#@aliasname\" time format ms")
@volume = 1000&#46;0
@balance = 0&#46;0
@volume_duration = @balance_duration = 0
update
end
 
def play(repeat=true, from=-1, to=-1)
command = "play \"#@aliasname\""
command&#46;concat(" from #{from}") if from != -1
command&#46;concat(" to #{to}") if to != -1
command&#46;concat(" repeat") if repeat
Advanced_Audio&#46;call(command)
end
def pause
Advanced_Audio&#46;call("pause \"#@aliasname\"")
end
def resume
Advanced_Audio&#46;call("resume \"#@aliasname\"")
end
def stop
Advanced_Audio&#46;call("stop \"#@aliasname\"")
end
def close
@@audio&#46;delete(@aliasname)
Advanced_Audio&#46;call("close \"#@aliasname\"")
end
def position
Advanced_Audio&#46;call("status \"#@aliasname\" position")
return @@buffer&#46;to_i
end
def length
Advanced_Audio&#46;call("status \"#@aliasname\" length")
return @@buffer&#46;to_i
end
def mode
Advanced_Audio&#46;call("status \"#@aliasname\" mode")
return @@buffer&#46;gsub("\000", "")
end
def pitch(pitch)
Advanced_Audio&#46;call("set \"#@aliasname\" tempo #{pitch&#46;to_i}")
Advanced_Audio&#46;call("set \"#@aliasname\" speed #{(pitch*10)&#46;to_i}")
end
def left_volume(volume)
Advanced_Audio&#46;call("setaudio \"#@aliasname\" left volume to #{volume&#46;to_i}")
end
def right_volume(volume)
Advanced_Audio&#46;call("setaudio \"#@aliasname\" right volume to #{volume&#46;to_i}")
end
def volume(volume)
Advanced_Audio&#46;call("setaudio \"#@aliasname\" volume to #{volume&#46;to_i}")
end
 
def volume_change(volume, duration=0)
@volume_target = &#91;&#91;volume*10, 0&#93;&#46;max, 1000&#93;&#46;min
@volume_duration = &#91;duration*2, 1&#93;&#46;max
end
def balance_change(balance, duration=0)
@balance_target = &#91;&#91;balance*10, -1000&#93;&#46;max, 1000&#93;&#46;min
@balance_duration = &#91;duration*2, 1&#93;&#46;max
end
 
def update
if @volume_duration > 0
@volume = (@volume * (@volume_duration - 1) + @volume_target) / @volume_duration&#46;to_f
@volume_duration -= 1
end
if @balance_duration > 0
@balance = (@balance * (@balance_duration - 1) + @balance_target) / @balance_duration&#46;to_f
@balance_duration -= 1
end
if @last_volume != @volume or @last_balance != @balance
@last_volume = @volume
@last_balance = @balance
left_volume((1000 - @balance) * @volume / 1000)
right_volume((1000 + @balance) * @volume / 1000)
end
end
 
end
 
end



Ajouté par Shaolan
le 20/03/2009 à 17:52:11
Vu 5670 fois





Page générée en 0.0001 secondes
©2011 Site créé par Martial, le Webmaster
Me contacter - Livre d'or - Forum - Plan du site
Mentions légales - Remerciements
Final-RPG