Scripts Mod (API): Exemplos Avançados

O Cookboox fornece alguns exemplos de scripts simples que podem auxiliá-lo a iniciar. Sinta-se à vontade para utilizá-los e modificá-los para uso em suas próprias campanhas. Existe também um Fórum de Scripts Mod (API) onde pode discutir sobre scripts Mod (API) e partilhar os seus scripts com a comunidade.


Gestor de Estado de Tokens 

(Contribuição de Eric Dalquist)

Este script adiciona automaticamente marcadores de estado com base nos valores da barra. O script pode ser configurado para monitorizar qualquer uma das três barras, definir qualquer um dos marcadores de estado para qualquer proporção entre 0 e 1. O script pode gerir várias barras/tokens numa única instância. O exemplo abaixo monitora a barra 1 e define o marcador vermelho quando o valor é <= 50% e, em seguida, define o marcador morto quando o valor é <= 0.

 * Defina vários marcadores de token com base nas relações bar cur/max
 * 
 * A matriz CONFIG pode conter qualquer número de objetos de configuração. Estes objetos
 * são processados em ordem.
 * 
 * barId - O ID da barra para visualizar os valores [1, 2, 3]
 * barRatio - A proporção entre o valor da barra e o valor máximo que aciona a configuração do marcador de status [0 - 1]
 * status - O nome do marcador de status a ser alternado [redmarker, bluemarker, greenmarker, brownmarker, purplemarker, dead]
 * whenLow - O estado do marcador quando o valor da barra é <e = a proporção [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);
            }
        }
    });
});

Gestor temporário de HP

(Contribuição de Eric Dalquist)

Gerencia automaticamente os pontos de vida temporários. Se uma das barras simbólicas for utilizada para monitorizar os pontos de vida temporários, este script pode deduzir automaticamente os pontos de vida do valor temporário antes de serem removidos da barra principal de pontos de vida.

* Remove automaticamente os pontos de vida temporários, caso existam.
 - 
 - Quando um token tem o seu HP reduzido, o script verifica se há algum
 - HP temporário disponível. Se isso ocorrer, esses pontos são removidos primeiro e o HP real é
 * atualizado para refletir o HP temporário que absorveu o golpe.
 * 
 * TEMP_BAR_ID - A barra utilizada para monitorizar a HP temporária [1, 2, 3]
 * HP_BAR_ID - A barra utilizada para monitorizar o HP real [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("AVISO: A barra anterior " + HP_BAR_ID + " não contém um número: '" + prevHpValStr + "'");
        retornar;
    }
    
    var hpValStr = obj.get("barra" + HP_BAR_ID + "_valor");
    var hpVal = parseInt(hpValStr);
    se (isNaN(hpVal)) {
        log("AVISO: A barra " + HP_BAR_ID + " não contém um número: '" + hpValStr + "'");
        retornar;
    }
    
    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);
            }
        }
    }
});


Ficha de Patrulha

//Aguarde até que o evento pronto seja acionado para que possamos saber que a campanha está completamente carregada.
   Obtenha uma referência ao nosso token de patrulhamento.
   var patroltoken = findObjs({_type: "graphic", name: "Guarda A"})[0]; //Sabemos que existe um token na Campanha chamado "Guarda A".
   var direction = -70; //Ande 70 pixels para a esquerda.
   var passosdados = 0; //Quantos passos já percorremos na direção atual?
   setInterval(função() {
     if(passosdados > 3) {
       //Mude de direção!
       direção = direção * -1; //irá "inverter" a direção em que estamos a caminhar
       passos dados = 0; //reinicializar os passos para 0.
     }
     patroltoken.set("left", patroltoken.get("left") + direction); //walk!
     stepstaken++;
   }, 5000); //executar uma ação a cada 5 segundos
});
 
Este artigo foi útil?
30 de 42 acharam isto útil