API: Exemples avancés

Le Cookboox propose quelques exemples de scripts simples qui peuvent vous aider à démarrer. N'hésitez pas à les prendre et à les modifier pour les utiliser dans vos propres parties. Il existe également un Forum des scripts APIoù vous pouvez discuter de la programmation d'API et partager vos scripts avec la communauté.


Gestionnaire des statuts de jeton  

(Contribué par Eric Dalquist)

Ce script ajoute automatiquement des marqueurs d'état en fonction des valeurs de barre. Le script peut être configuré pour suivre l'une des trois barres, définir l'un des marqueurs d'état pour n'importe quel ratio entre 0 et 1. Le script peut gérer plusieurs barres/jetons dans une seule instance. L'exemple ci-dessous surveille la barre 1 et définit le marqueur rouge lorsque la valeur est <= 50% puis définit le marqueur mort lorsque la valeur est <= 0.

 * Définissez différents marqueurs de jeton en fonction des ratios de barre cur/max
 * 
 * Le tableau CONFIG peut contenir n'importe quel nombre d'objets de configuration. Ces objets
 * sont traités dans l'ordre.
 * 
 * barId - L'ID de la barre pour consulter les valeurs de [1, 2, 3]
 * barRatio - Le rapport entre la valeur de la barre et la valeur maximale qui déclenche le réglage du marqueur d'état [0 - 1]
 * statut - Le nom du marqueur d'état à basculer [redmarker, bluemarker, greenmarker, brownmarker, purplemarker, dead]
 * lorsqueBas - L'état du marqueur lorsque la valeur de la barre est <= le rapport [true, false]
 *
variable CONFIG = [
    {barId: 1, barRatio: .5, status: "redmarker", whenLow: true},
    {barId: 1, barRatio: 0, status: "dead", whenLow: true}];


sur("change:token", function(obj) {
    CONFIG.forEach(function(opts) {
        var valeurMax = parseInt(obj.get("bar" + opts.barId + "_max"));
        var valeurCourante = parseInt(obj.get("bar" + opts.barId + "_value"));
        log(opts.barId + ": " + valeurCourante + "/" + valeurMax);
    
        if (!isNaN(valeurMax) && !isNaN(valeurCourante)) {
            var nomMarqueur = "statut_" + opts.statut;
            if (valeurCourante <= (valeurMax * opts.barRatio)) {
                obj.set(nomMarqueur, opts.lorsqueBas);
            }
            else {
                obj.set(nomMarqueur, !opts.lorsqueBas);
            }
        }
    });
});

Gestionnaire de PV temporaires

(Contribué par Eric Dalquist)

Gère automatiquement les points de vie temporaires. Si l'une des barres de jetons est utilisée pour suivre les PV temporaires, ce script peut automatiquement déduire les PV de la valeur temporaire avant qu'ils ne soient supprimés de la barre principale des PV.

* Supprime automatiquement les PV temporaires s'ils existent.
 * 
 * Lorsqu'un jeton voit ses PV réduits, le script vérifie s'il y a des
 * PV temporaires disponibles. Le cas échéant, ceux-ci sont d'abord supprimés et les PV réels sont
 * mis à jour pour refléter les PV temporaires absorbant le coup.
 * 
 * TEMP_BAR_ID - La barre utilisée pour suivre les PV temporaires [1, 2, 3]
 * HP_BAR_ID - La barre utilisée pour suivre les PV réels [1, 2, 3]
 *
var TEMP_BAR_ID = 2;
var HP_BAR_ID = 1;
 
on("change:token", function(obj, prev) {
    var prevHpValStr = prev["bar" + HP_BAR_ID + "_value"];
    var prevHpVal = parseInt(prevHpValStr);
    if (isNaN(prevHpVal)) {
        log("WARN: La barre précédente " + HP_BAR_ID + " ne contient pas de nombre : '" + prevHpValStr + "'");
        return;
    }
    
    var hpValStr = obj.get("bar" + HP_BAR_ID + "_value");
    var hpVal = parseInt(hpValStr);
    if (isNaN(hpVal)) {
        log("WARN: La barre " + HP_BAR_ID + " ne contient pas de nombre : '" + hpValStr + "'");
        return;
    }
    
    if (prevHpVal > hpVal) {
        var tmpHpVal = parseInt(obj.get("bar" + TEMP_BAR_ID + "_value"));
        log(prevHpVal + " - " + hpVal + " - " + tmpHpVal);
        if (!isNaN(tmpHpVal)) {
            var hpChange = prevHpVal - hpVal;
            var remainingTmp = tmpHpVal - hpChange;
            if (remainingTmp > 0) {
                obj.set("bar" + TEMP_BAR_ID + "_value", remainingTmp);
                obj.set("bar" + HP_BAR_ID + "_value", prevHpVal);
            }
            else {
                var remainingHp = prevHpVal + remainingTmp;
                obj.set("bar" + TEMP_BAR_ID + "_value", 0);
                obj.set("bar" + HP_BAR_ID + "_value", remainingHp);
            }
        }
    }
});


Jeton de patrouille

//Attendre que l'événement prêt se déclenche pour savoir que la campagne est complètement chargée.
   //Obtenir une référence de notre jeton de patrouille.
   var patrouillejeton = findObjs({_type: "graphic", name: "Garde A"})[0]; //Nous savons qu'il y a un jeton dans la Campagne appelé "Garde A".
   var direction = -70; //Avancer vers la gauche de 70 pixels.
   var etapesfaites = 0; //Combien d'étapes avons-nous faites dans la direction actuelle?
   setInterval(function() {
     if(etapesfaites > 3) {
       //Changer de direction!
       direction = direction * -1; //va "inverser" la direction dans laquelle nous marchons
       etapesfaites = 0; //réinitialiser les étapes à 0.
     }
     patrouillejeton.set("left", patrouillejeton.get("left") + direction); //marcher!
     etapesfaites++;
   }, 5000); //effectuer une action toutes les 5 secondes
});
 
Cet article vous a-t-il été utile ?
Utilisateurs qui ont trouvé cela utile : 22 sur 34