Accueil du SiteAccueil du Site  AccueilAccueil  FAQFAQ  RechercherRechercher  MembresMembres  GroupesGroupes  ConnexionConnexion  S'enregistrerS'enregistrer  




Partagez | 
 

 Dynamic_sound

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Raven
Administrateur
Administrateur
avatar

Masculin
Messages postés : 1338
Date d'inscription : 20/04/2013
Jauge LPC :
41 / 10041 / 100














MessageSujet: Dynamic_sound   Dim 14 Juin 2015 - 17:38

Yo les gens !

J'vous partage un petit script pour faire des "sons" dynamiques". D'un part, ça permet de rajouter autre chose que BGM/BGS, d'autre part, le son dépendra de l'emplacement que vous lui aurez donné.
-> Plus vous serez prêt de la source, plus le son sera fort et inversement.

Pour modifier les sons, rendez-vous à la ligne 46 :
Code:
    @emissions[1] = Sound_Emission.new
    @emissions[1].setup (10,12,3,4,20,'011-Waterfall01',100)

C'est expliqué dans le script, mais pour les non anglophones voilà comment procéder.
@emission[X] : C'est l'ID de la map sur laquelle le son est joué.
(X,Y,largeur, hauteur, rayon d'effet,'nomdelaBGS',ton) : J'peux pas être plus clair

Vous pouvez faire ça pour plusieurs maps hein, pour ça recopiers les deux lignes de codes aux lignes 46 et 47 et modifiez les données en fonction de ce don vous avez besoin.

Note 1 : Un petit crédit à Modern Algebra serait cool aussi.

Avantages :
++ Pour les sons d'ambiance comme feu de camp, rivières, cascades, foule en colère, etc.

Inconvénient :
Ce script ne gère qu'un son dynamique par map.


Code:
#==============================================================================
#  Dynamic Sound Emissions
#  Version: 1.0
#  Author: Modern Algebra
#  Date: August 27, 2007
#------------------------------------------------------------------------------
#  Description:
#  This script allows you to set an object in the map which emits a sound. What
#  this script does is set the volume of that sound according to how close you
#  are to the object. If you are far away, the sound will be faint, if you are
#  close the sound will be loud. Sorry, in this version there can be only one
#  object per map.
#------------------------------------------------------------------------------
#  Instructions:
#  To set the objects which emit sound for each map, see below.
#------------------------------------------------------------------------------
# ** Data_Sound_Emission
#       This class holds all of the objects which emit any sound, for all maps
#==============================================================================

class Data_Sound_Emission
  #-------------------------------------------------------------------------
  # * Public Instance Variables
  #-------------------------------------------------------------------------
  attr_reader    :emissions
  #-------------------------------------------------------------------------
  # * Object Initialization
  #-------------------------------------------------------------------------
  def initialize
    @emissions = []
    #----------------------------------------------------------------------
    # * Editable Region
    #----------------------------------------------------------------------
    #  Place all sound emitting objects here. Write it like this:
    #
    #    @emissions[map_id] = Sound_Emission.new
    #    @emissions[map_id].setup (x,y,width,height,radius,bgs,pitch)
    #
    #  Where map_id is the ID of the map you want the object to appear on,
    #  x and y are the x and y positions of the upper-left corner of the object,
    #  width is the amount of squares in the x direction that the object covers,
    #  height is the amount of squares in the y direction that the object
    #  covers, radius is the number of squares away you want the sound to be
    #  hears, bgs is the bgs you want to play, and pitch is the pitch value
    #-----------------------------------------------------------------------
    @emissions[1] = Sound_Emission.new
    @emissions[1].setup (10,12,3,4,20,'011-Waterfall01',100)

    #-----------------------------------------------------------------------
    # * END Editable Region
    #-----------------------------------------------------------------------
  end
end
#==============================================================================
# ** Sound Emitting Object
#------------------------------------------------------------------------------
#  This class holds all the relevant data for the object which is emitting the
#  sound. It is accessed through $game_dynamic_sound_emission
#==============================================================================
class Sound_Emission
  #-------------------------------------------------------------------------
  # * Public Instance Variables
  #-------------------------------------------------------------------------
  attr_reader    :bgs
  attr_reader    :radius
  attr_reader    :pitch
  #-------------------------------------------------------------------------
  # * Object Initialization
  #-------------------------------------------------------------------------
  def setup (x, y, width, height, radius, bgs, pitch)
    @rect = Rect.new (x*128, y*128, (width-1)*128, (height-1)*128)
    @radius = radius*128
    @bgs = bgs
    @pitch = pitch
  end
  #-------------------------------------------------------------------------
  # * Volume
  #     Checks position to determine the appropriate volume.
  #-------------------------------------------------------------------------
  def volume (x, y)
    # Determine distance between position and the sound emitting object
    distance = [x - @rect.x, y - @rect.y]
    testers = [@rect.width, @rect.height]
    for i in 0...2 # For both the x distance and the y distance
      # Determine total distance in that direction from the object
      if distance[i] > 0  # IF you are to the right of the object
        # Take into account the width of the object
        if distance[i] <= testers[i] # If you are above or beside the object
          # Neglect the distance in that direction
          distance[i] = 0  
        else
          # Subtract the width to determine the closest row or column
          distance[i] -= testers[i]
        end
      else
        # Make the value positive
        distance[i] *= -1
      end
    end
    # Calculate the total distance
    total_distance = distance[0] + distance[1]
    ratio = (total_distance.to_f / @radius.to_f)*100 # Get the percentage
    ratio = [ratio,100].min
    ratio = 100 - ratio
    return ratio
  end
end

#==============================================================================
# ** Scene Title
#==============================================================================

class Scene_Title
  #-------------------------------------------------------------------------
  # * Alias Main to initialize the data class upon startup
  #-------------------------------------------------------------------------
  alias add_data_emissions main
  def main
    # Initialize $data_sound_objects
    $data_sound_objects = Data_Sound_Emission.new
    add_data_emissions
  end
end

#==============================================================================
# ** Game Player
#==============================================================================

class Game_Player
  #-------------------------------------------------------------------------
  # * Alias update to play the BGS
  #-------------------------------------------------------------------------
  alias update_volume update
  def update
    update_volume
    if $data_sound_objects.emissions[$game_map.map_id] != nil
      emitter = $data_sound_objects.emissions[$game_map.map_id]
      volume = emitter.volume (@real_x, @real_y)
      bgs = RPG::AudioFile.new (emitter.bgs,volume,emitter.pitch)
      if volume != 0
        $game_system.bgs_play (bgs)
      else
        Audio.bgs_stop
      end
    end
  end
end

_____________________
|  |
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://redrustyraven.blogspot.fr https://www.facebook.com/RedRustyRaven
City Hunter
Administrateur
Administrateur
avatar

Masculin
Messages postés : 6519
Date d'inscription : 25/05/2011
Jauge LPC :
40 / 10040 / 100

















MessageSujet: Re: Dynamic_sound   Dim 14 Juin 2015 - 19:09

On peut aussi largement faire la même chose en évent en coupant ta map par zone et en faisant des conditions. C'est plutôt long et fastidieux, mais avec mes compétences je n'ai guère trouvé mieux ^^

Merci du partage. Des points.

_____________________
   
Code pour les bannières:
 


Qui aime City Hunter, est aimé de moi =D :
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Zexion
Administrateur
Administrateur
avatar

Masculin
Messages postés : 6227
Date d'inscription : 04/01/2012
Jauge LPC :
97 / 10097 / 100












MessageSujet: Re: Dynamic_sound   Dim 14 Juin 2015 - 19:15

Intéressant. Merci Raven. Smile
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Kasbak
Membre V.I.P.
Membre V.I.P.
avatar

Masculin
Messages postés : 1356
Date d'inscription : 05/01/2013
Jauge LPC :
100 / 100100 / 100
















MessageSujet: Re: Dynamic_sound   Dim 21 Juin 2015 - 0:32

Merci du partage ça peu etre utile.

_____________________





_____________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://kasbakprod.wifeo.com/ http://kasbak.deviantart.com/
Siegfried
Mage (niveau 2)
Mage (niveau 2)
avatar

Masculin
Messages postés : 286
Date d'inscription : 31/07/2011
Jauge LPC :
72 / 10072 / 100




MessageSujet: Re: Dynamic_sound   Jeu 23 Juil 2015 - 13:22

Script bien codé et fonctionnalité (je pense) inédite. Excellente idée. Smile

Applications possibles : ambiance, mini-jeux, mise en scène (musique inquiétante dans un couloir qui augmente plus on s'approche de l'événement déclencheur d'une catastrophe).

Par contre, il remplace toute autre ambiance sonore, non ? Je me demande s'il y aurait moyen de créer plusieurs "flux" de sons autres que BGM/BGS... Je n'y avais jamais pensé avant de voir ce script. Surprised

_____________________

Le site du Palais fait peau neuve !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://saleth.fr
Raven
Administrateur
Administrateur
avatar

Masculin
Messages postés : 1338
Date d'inscription : 20/04/2013
Jauge LPC :
41 / 10041 / 100














MessageSujet: Re: Dynamic_sound   Jeu 23 Juil 2015 - 14:24

Non non, il me semble pas qu'il remplace le son ambiant, mais il le "couvre" me semble t-il simplement parce qu'il est très fort. Faudrait que je vérifie.

_____________________
|  |
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://redrustyraven.blogspot.fr https://www.facebook.com/RedRustyRaven
Contenu sponsorisé




MessageSujet: Re: Dynamic_sound   

Revenir en haut Aller en bas
 
Dynamic_sound
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Le Palais Créatif :: ~ PARTAGE ~ :: Scripts et plugins :: RPG Maker XP :: Autres-
Sauter vers: