Script Mod (API): Esempi avanzati

Il Cookboox fornisce alcuni esempi di script semplici che possono assistervi nell'avvio. Sentitevi liberi di utilizzarli e modificarli per le vostre campagne. È disponibile anche un forum dedicato agli script Mod (API) dove è possibile discutere di scripting Mod (API) e condividere i propri script con la comunità.


Gestione dello stato dei token 

(Contributo di Eric Dalquist)

Questo script aggiunge automaticamente degli indicatori di stato in base ai valori della barra. Lo script può essere configurato per monitorare una qualsiasi delle tre barre, impostare uno qualsiasi degli indicatori di stato per qualsiasi rapporto compreso tra 0 e 1. Lo script è in grado di gestire più barre/segnalini in un'unica istanza. L'esempio seguente monitora la barra 1 e imposta l'indicatore rosso quando il valore è <= 50%, quindi imposta l'indicatore di inattività quando il valore è <= 0.

 * Imposta vari indicatori per segnalino in base ai rapporti bar cur/max
 * 
 * L'array CONFIG può contenere un numero qualsiasi di oggetti di configurazione. Questi oggetti
 * vengono elaborati in ordine.
 * 
 * barId - L'ID della barra da cui ricavare i valori [1, 2, 3]
 * barRatio - Il rapporto tra il valore della barra e il valore massimo che attiva l'impostazione dell'indicatore di stato [0 - 1]
 * status - Il nome dell'indicatore di stato da attivare [redmarker, bluemarker, greenmarker, brownmarker, purplemarker, dead]
 * whenLow - Lo stato dell'indicatore quando il valore della barra è <e = il rapporto [true, false]
 *
var CONFIG = [
    {barId: 1, barRatio: .5, status: "redmarker", whenLow: true},
    {barId: 1, barRatio: 0, status: "dead", whenLow: true}];


on("change:token", function(obj) {
    CONFIG.forEach(function(opts) {
        var maxValue = parseInt(obj.get("bar" + opts.barId + "_max"));
        var curValue = parseInt(obj.get("bar" + opts.barId + "_value"));
        log(opts.barId + ": " + curValue + "/" + maxValue);
    
        if (!isNaN(maxValue) &&!isNaN(curValue)) {
            var markerName = "status_" + opts.status;
            if (curValue <= (maxValue * opts.barRatio)) {
                obj.set(markerName, opts.whenLow);
            }
            else {
                obj.set(markerName, !opts.whenLow);
            }
        }
    });
});

Responsabile temporaneo PF

(Contributo di Eric Dalquist)

Gestisce automaticamente i punti ferita temporanei. Se una delle barre del segnalino viene utilizzata per monitorare i punti PF temporanei, questo script può automaticamente sottrarre i PF dal valore temporaneo prima che vengano rimossi dalla barra dei PF principale.

* Rimuove automaticamente i PF temporanei, se presenti.
 * 
 * Quando un segnalino subisce una riduzione dei propri PF, lo script verifica se sono disponibili PF temporanei (
 * temp PF). In tal caso, questi vengono rimossi per primi e il PF effettivo è
 * aggiornato per riflettere il PF temporaneo che assorbe il colpo.
 * 
 * TEMP_BAR_ID - La barra utilizzata per monitorare il PF temporaneo [1, 2, 3]
 * HP_BAR_ID - La barra utilizzata per monitorare l'HP reale [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("AVVISO: La barra precedente " + HP_BAR_ID + " non contiene un numero: '" + prevHpValStr + "'");
        return;
    }
    
    var hpValStr = obj.get("bar" + HP_BAR_ID + "_value");
    var hpVal = parseInt(hpValStr);
    if (isNaN(hpVal)) {
        log("ATTENZIONE: la barra " + HP_BAR_ID + " non contiene un numero: '" + 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);
            }
        }
    }
});


Giro di pattuglia con segnalino

Attendere fino all'attivazione dell'evento "ready" per confermare che la campagna sia stata caricata completamente.
   //Ottenere un riferimento al nostro token di pattugliamento.
   var patroltoken = findObjs({_type: "graphic", name: "Guard A"})[0]; //Siamo consapevoli che esiste un segnalino nella campagna denominato "Guard A".
   var direzione = -70; //Cammina 70 pixel verso sinistra.
   var stepstaken = 0; //Quanti passi abbiamo compiuto nella direzione attuale?
   setInterval(function() {
     if(passi compiuti > 3) {
       //Cambia direzione!
       direction = direction * -1; //invertirà la direzione in cui ci stiamo muovendo
       stepstaken = 0; //ripristina i passi a 0.
     }
     patroltoken.set("left", patroltoken.get("left") + direzione); //cammina!
     stepstaken++;
   }, 5000); //esegui un'azione ogni 5 secondi
});
 
Questo articolo ti è stato utile?
Utenti che ritengono sia utile: 30 su 42