Il Manuale offre alcuni esempi di script semplici che possono aiutarvi a muovere i primi passi. Non esitate a utilizzarli e a modificarli per impiegarli nelle vostre campagne. È inoltre disponibile un forum dedicato agli script di mod, dove potrete discutere di scripting per le mod e condividere i vostri script con la comunità.
Gestore dello stato dei segnalini
(A cura di Eric Dalquist)
Questo script aggiunge automaticamente degli indicatori di stato in base ai valori delle barre. Lo script può essere configurato per monitorare una qualsiasi delle tre barre e 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 riportato di seguito monitora la barra 1 e imposta il " redmarker" quando il valore è <= 50%, per poi impostare il "dead marker" quando il valore è <= 0.
/**
* Imposta vari indicatori per segnalino in base ai rapporti cur/max delle barre
*
* L'array CONFIG può contenere un numero qualsiasi di oggetti di configurazione. Questi oggetti
* vengono elaborati in ordine.
*
* barId - L'ID della barra di cui si desiderano visualizzare i valori [1, 2, 3]
* barRatio - Il rapporto tra il valore della barra e il valore massimo che determina l'attivazione dell'indicatore di stato [0 - 1]
* status - Il nome dell'indicatore di stato da attivare o disattivare [redmarker, bluemarker, greenmarker, brownmarker, purplemarker, dead]
* whenLow - Lo stato dell’indicatore quando il valore della barra è <a = 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 delle risorse umane PF
(A cura di Eric Dalquist)
Gestisce automaticamente i punti vita temporanei. Se una delle barre del segnalino viene utilizzata per tenere traccia dei punti salute temporanei, questo script può sottrarre automaticamente i punti salute dal valore temporaneo prima che vengano rimossi dalla barra principale dei punti salute.
/**
* Rimuove automaticamente i PF temporanei, qualora fossero presenti.
*
* Quando i PF di un segnalino vengono ridotti, lo script verifica se sono disponibili PF temporanei (
). Se presenti, questi vengono rimossi per primi e i PF effettivi sono
* aggiornato per tenere conto dei PF temporanei che assorbono il colpo.
*
* TEMP_BAR_ID - La barra utilizzata per monitorare i PF temporanei [1, 2, 3]
* HP_BAR_ID - La barra utilizzata per monitorare i punti salute reali [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("AVVISO: 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);
}
}
}
});
Segnalino di pattugliamento
on("ready", function() {
//Attendere che si verifichi l'evento "ready" per assicurarsi che la campagna sia stata caricata completamente.
//Ottenere un riferimento al nostro segnalino di pattugliamento.
var patroltoken = findObjs({_type: "graphic", name: "Guard A"})[0]; // Sappiamo che nella Campagna è presente un segnalino denominato "Guard A".
var direction = -70; //Avanzare di 70 pixel verso sinistra.
var stepstaken = 0; // Quanti passi abbiamo compiuto nella direzione attuale?
setInterval(function() {
if (stepstaken > 3) {
//Cambiare direzione!
direzione = direzione * -1; //"inverterà" la direzione in cui ci stiamo muovendo
passiEffettuati = 0; //azzeramento dei passi.
}
patroltoken.set("left", patroltoken.get("left") + direction); //avanti!
stepstaken++;
}, 5000); //eseguire un'azione ogni 5 secondi
});