Le Deal du moment : -50%
-50% sur les sacs à dos pour ordinateur ...
Voir le deal
19.99 €

Aller en bas
Sphinx
Sphinx
Membre

Nombre de messages : 69
Distinction : aucune
Date d'inscription : 08/03/2016
https://genie23.fr/js-rmmv/mes-plugins-rmmv/

[Plugin] BGM/BGS automatique en fonction de l'ID de la région Empty [Plugin] BGM/BGS automatique en fonction de l'ID de la région

Mer 9 Mar 2016 - 15:05
Bonjour à toutes et tous,

En bricolant un peu les scripts de RMMV pour mon futur projet, j'ai mis au point un plugin pour qu'au moment où le joueur arrive sur une map (et uniquement à cet instant) la musique de fond et le fond sonore dépende de l'ID de région sur lequel se trouve le joueur.

Le système est simple à installer et tout aussi simple à utiliser. Pour l'installer, il suffit d'ajouter le code qui suit dans un nouveau fichier "Sphinx-RegionBGM.js" à créer dans le dossier js/plugins (comme ce plugin n'utilise aucun paramètre, le nom du fichier n'est qu'une suggestion) puis de l'ajouter aux modules de RMMV.
Code:
//=============================================================================
// Sphinx-RegionBGM.js
//=============================================================================

/*:
 * @plugindesc Système de sélection automatique du BGM et du BGS qui convient selon l'ID de la région
 * @author Sphinx
 *
 * @help
 * //==========================================================================
 * // Plugin : Sphinx-RegionBGM
 * // Date  : 8 mars 2016
 * // Auteur : Sphinx
 * //==========================================================================
 * Ce plugin sert à sélectionner automatiquement, au chargement de la map, le
 * BGM et le BGS qui convient selon l'ID de région du héros.
 * S'utilise en ajoutant aux remarques de la carte les balises meta suivantes :
 *    - <bgmID: nom volume pano ton> pour définir le BGM "nom" à la carte si
 *                                    le joueur arrive sur la carte par une
 *                                    case de région ID (utiliser bgm10 pour
 *                                    définir le BGM de la région 10 par exemple)
 *    - <bgsID: nom volume pano ton> pour définir le BGS "nom" à la carte si
 *                                    le joueur arrive sur la carte par une
 *                                    case de région ID (utiliser bgs10 pour
 *                                    définir le BGS de la région 10 par exemple)
 *    ¤ nom    : nom du BGM/BGS dans la liste des ressources audios
 *                "Aucun" pour désactiver le BGM/BGS pour un ID région défini
 *    ¤ volume : une valeur entre 0 (volume min) et 100 (volume max)
 *    ¤ pano  : une valeur comprise entre -100 (toute la sortie audio sur le
 *                haut-parleur gauche) et 100 (toute la sortie audio sur le
 *                haut-parleur droit)
 *                Valeur moyenne : 0 (son réparti entre les 2 hauts-parleurs)
 *    ¤ ton    : une valeur comprise entre 50 (plus grave et plus lent) et
 *                150 (plus aigu et plus rapide).
 *                Valeur moyenne : 100 (ton normal)
 *
 * La seule valeur obligatoire est "nom". Les autres valeurs ne deviennent
 * obligatoires que si d'autres valeurs sont à définir ensuite. Si elles ne sont
 * pas spécifiées, alors ce sont celles du BGM par défaut de la carte qui seront
 * utilisées à la place.
 * Pour désactiver le BGM et/ou le BGS pour un ID de région spécifique, utiliser
 * "Aucun" comme nom de BGM/BGS (il ne sera alors évidemment pas utile de préciser
 * les autres valeurs).
 *
 * Dépendances :
 *    Aucune
 */

Game_Map.prototype.autoplay = function() {
    if($gamePlayer.regionId() && $dataMap.meta["bgm" + $gamePlayer.regionId()]) {
        var dataBgm = $dataMap.meta["bgm" + $gamePlayer.regionId()].trim().split(" ");
        var bgm = {
            name: (dataBgm[0] === "Aucun" ? "" : dataBgm[0]),
            volume: (dataBgm[1] === undefined ? $dataMap.bgm.volume : parseInt(dataBgm[1], 10)),
            pan: (dataBgm[2] === undefined ? $dataMap.bgm.pan : parseInt(dataBgm[2], 10)),
            pitch: (dataBgm[3] === undefined ? $dataMap.bgm.pitch : parseInt(dataBgm[3], 10))
        };
        AudioManager.playBgm(bgm);
    } else if($dataMap.autoplayBgm) {
        AudioManager.playBgm($dataMap.bgm);
    }
    if($gamePlayer.regionId() && $dataMap.meta["bgs" + $gamePlayer.regionId()]) {
        var dataBgs = $dataMap.meta["bgs" + $gamePlayer.regionId()].trim().split(" ");
        var bgs = {
            name: (dataBgs[0] === "Aucun" ? "" : dataBgs[0]),
            volume: (dataBgs[1] === undefined ? $dataMap.bgs.volume : parseInt(dataBgs[1], 10)),
            pan: (dataBgs[2] === undefined ? $dataMap.bgs.pan : parseInt(dataBgs[2], 10)),
            pitch: (dataBgs[3] === undefined ? $dataMap.bgs.pitch : parseInt(dataBgs[3], 10))
        };
        AudioManager.playBgs(bgs);
    } else if($dataMap.autoplayBgs) {
        AudioManager.playBgs($dataMap.bgs);
    }
};

L'utilisation de ce plugin est très simple également, elle se base sur le champ "Remarque" des propriétés de chaque map (à l'attention des scripteurs, ce sont ces mêmes remarques qui sont lues pour initialiser l'objet $dataMap.meta que j'utilise dans ce plugin).
Pour définir un BGM à jouer sur un ID région particulier, il suffit de rajouter :
Code:
<bgmID: NOM_BGM VOLUME PANORAMIQUE TON>
Code:
<bgsID: NOM_BGM VOLUME PANORAMIQUE TON>
où :
  • ID est à remplacer par l'ID région correspondant
  • NOM_BGM et NOM_BGS (obligatoire) sont les noms du BGM ou du BGS à jouer
  • VOLUME (facultatif) est le volume du son compris entre 0% et 100% (ne pas mettre le symbole %)
  • PANORAMIQUE (facultatif) est une valeur comprise entre -100 et 100 et indique la répartition du son entre les 2 hauts parleurs. Mettre -100 pour que toute la sortie du BGM/BGS se fasse via le haut parleur gauche, 0 pour que le son soit réparti également entre les 2 hauts parleurs et 100 pour que toute la sortie se fasse sur le haut parleur droit.
  • TON (facultatif) est une valeur comprise entre 50 et 150, qui indique quelle modification doit subir l'effet sonore. 100 pour un son normal, en dessous de 100 pour un son ralenti et plus grave, et au dessus 100 pour un son accéléré et plus aigu (plus la valeur s'éloigne de 100, plus l'effet dans un sens ou dans l'autre sera prononcé).

Toutes ces valeurs sont strictement identiques à celles qui peuvent être définies via l'interface graphique de choix du BGM/BGS de la map.
Vous pouvez ne pas préciser les valeurs facultatives, auquel cas ce sont les valeurs du BGM ou du BGS de la map qui seront utilisées. Cependant, pour préciser le ton ou le panoramique, il faudra également spécifier le ou les paramètres qui précèdent (dans ce cas là, entre autre le volume donc).
A noter également qu'on peut sans problème spécifier un BGM ou un BGS sans avoir besoin de spécifier les deux.

Il suffit ensuite que le joueur entre sur la carte paramétrée par une case ayant un ID région correspondant au paramétrage, et le BGM et/ou le BGS joué ne sera plus celui par défaut mais celui voulu.

Exemple d'utilisation : une enceinte quelconque qui s'étendrait sur plusieurs maps et pour laquelle on voudrait une ambiance différente (c'est même pour ca que j'ai écrit ce script).

Conditions d'utilisations : gratuit pour un usage commercial ou non commercial. Crédits appréciés mais non exigés (ce script ne m'a pas demandé énormément de travail).

Bon making à toutes et tous Smile
lock60
lock60
Membre

Nombre de messages : 919
Distinction : aucune
Date d'inscription : 04/11/2015

[Plugin] BGM/BGS automatique en fonction de l'ID de la région Empty Re: [Plugin] BGM/BGS automatique en fonction de l'ID de la région

Lun 14 Mar 2016 - 11:37
Le concept est très intéressant.
Je n'ai pas beaucoup de temps en ce moment, mais je testerai ça dans la semaine.
Merci pour ce plugin.
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum