Sujet: [VXAce] Message Sound Mer 2 Oct 2013 - 22:35
Bonjour à tous et à toutes, Je viens vous partager un petit script que j'ai fait à mes heures perdues (de 3h à 4h quoi :hap2: ) ! Il sert à jouer des sons pour chaque lettre d'un message. A la manière d'animal crossing !
Une vidéo démonstration (ce sont des samples, ce n'est pas absolument pas ma voix ! ) :
Spoiler:
Le script :
Spoiler:
Code:
################################################################################ ##### MessageSound ################################################################################ # Auteur : Biward # Date : 21/08/2013 05:21 # Version : VXAce # # Ce script permet de jour un son pour chaque lettre d'un message. # # Il y a pour vous plusieurs commandes pratiques : # # - set_sound(c, nb) qui permet de passer à un son différent pour une lettre. # Par exemple dans la configuration, vous avez indiquez ceci "a" => ["son1", "son2"] # Faire set_sound("a", 1) va permettre au script de savoir que vous voulez jouer # son2 et non son1. Si vous faite set_sound("a", 0), le son 1 sera joué. # # - aut_sound(c) qui permet de jouer automatique tous les sons possibles pour une # lettre. Par exemple dans la configuration, vous avez ceci "a" => ["a", "a1", "a2"] # A la première rencontre avec la lettre a, le son "a" sera joué. A la deuxième # rencontre de la lettre a, le son "a1" sera joué. Et à la troisième, "a2". Après, # cela redémarre à 0. # # - man_sound(c) qui vous permet de dire au script que vous voulez choisir manuellement # (et non automatiquement, comme la commande d'avant). Il vous faudra donc passer # par la commande set_sound pour choisir un autre son que le son 0 (si vous en # avez plusieurs pour une lettre) # # - enable_sound qui permet d'activer la lecture des sons dans les messages # sans passer par la commande interne au message. Ainsi, tous les messages se # situant entre l'activation de la lecture des sons et sa désactivation seront # lus avec les sons. # # - disable_sound qui permet de désactiver la lecture des sons dans les messages # # - \M dans un message permet d'activer la lecture des sons jusqu'à la prochaine # balise \M ou jusqu'à une commande disable_sound placée dans un appel de script. # Cette balise fonctionne donc souvent par paire et permet la lecture de quelques # lignes d'un message seulement. # Attention, si on ne trouve qu'une seule balise (qui active la lecture) dans un # message, le message d'après sera lu avec les sons, et les autres aussi jusqu'à # ce qu'on désactive la lecture avec une balise ou une commande # ################################################################################ ##### Configuration ################################################################################ module BIMU
# Indiquez ici les sons à jouer en fonction de la lettre/caractères. Letters = { "a" => ["a", "b"], "b" => "b", "c" => "c", "d" => "d", "e" => "Attack3", "x" => "Applause2", "z" => "Cancel2", "?" => "Cancel1" }
end ################################################################################ ##### Début du script ################################################################################ class Window_Base class << self attr_accessor :voice, :num, :rand end
alias inibimu initialize def initialize(x, y, width, height) inibimu(x, y, width, height) Window_Base.rand = {} if ! Window_Base.rand Window_Base.num = {} if ! Window_Base.num end alias prcbi process_character def process_character(c, text, pos) prcbi(c, text, pos) if Window_Base.voice v = BIMU::Letters[c.downcase] if v.is_a?(Array) Audio.se_play("Audio/SE/#{BIMU::Letters[c.downcase][Window_Base.num[c.downcase]].to_s}", 100, 100) if v[Window_Base.num[c.downcase]] Window_Base.num[c.downcase] += 1 if Window_Base.rand[c.downcase] Window_Base.num[c.downcase] = 0 if Window_Base.num[c.downcase] >= BIMU::Letters[c.downcase].size elsif v.is_a?(String) Audio.se_play("Audio/SE/#{BIMU::Letters[c.downcase]}", 100, 100) if v end end end end
class Window_Base alias pecbimu process_escape_character def process_escape_character(code, text, pos) case code.upcase when 'M' Window_Base.voice = ! Window_Base.voice end pecbimu(code, text, pos) end end
class Game_Interpreter def set_sound(c, nb) Window_Base.num[c] = nb end def aut_sound(c) Window_Base.rand[c] = true Window_Base.num[c] = 0 if ! Window_Base.num[c] end def man_sound(c) Window_Base.rand[c] = false Window_Base.num[c] = 0 end def enable_sound Window_Base.voice = true end def disable_sound Window_Base.voice = false end end ################################################################################ ##### Fin du script ################################################################################