Script di mod: esempi di base

Il Manuale offre alcuni esempi di script semplici che possono aiutarvi a muovere i primi passi. Non esitate a utilizzarli e a modificarli per inserirli 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à.

Indicatori di stato “Insanguinato” e “Morto”

(A cura di Ken Bauer)

Questo script aggiunge automaticamente l'indicatore rosso, che indica lo stato di ferimento, a tutti i segnalini la cui salute scende al di sotto della metà, e l'indicatore di morte a tutti quelli la cui salute scende a 0 o meno. Si presume che i punti salute siano memorizzati nella barra 1.

on("change:graphic", function(obj) {
  if(obj.get("bar1_max") === "") return;

  if(obj.get("bar1_value") <= obj.get("bar1_max") / 2) {
    obj.set({
      status_redmarker: true
    });
  }
  else {
    obj.set({
      status_redmarker: false
    });
  }

  if(obj.get("bar1_value") <= 0) {
    obj.set({
      status_dead: true
    });
  }
  else {
    obj.set({
      status_dead: false
    });
  }
});

L’oscurità si sta avvicinando…

Questo script riduce il raggio di luce di un segnalino del 10% ogni volta che tale segnalino si sposta. Ideale per simulare situazioni quali “lampade a cui sta finendo l’olio” o altre situazioni simili di forte stress.

on("change:token", function(obj, prev) {
  //Eseguire questa operazione solo se ci si è effettivamente spostati.
  if(obj.get("left") == prev["left"] && obj.get("top") == prev["top"]) return;

  obj.set({
    light_radius: Math.floor(obj.get("light_radius") * 0.90)
  });
});

sendChat nei panni di un giocatore o di un personaggio

(A cura di Brian Shields)

Questo script fornisce alcune righe che potete utilizzare in uno script per l'evento `chat:message `, al fine di garantire che il messaggio venga inviato correttamente tramite `sendChat`, sia come Giocatore che come Personaggio, a seconda di chi abbia attivato l'evento.

on("chat:message", function(msg) {
  var message = '';
  // Determinare il contenuto di `message`
  var characters = findObjs({_type: 'character'});
  var speaking;
  personaggi.forEach(function(chr) { if(chr.get('name') == msg.who) speaking = chr; });

  if(speaking) sendChat('personaggio|'+speaking.id, messaggio);
  else sendChat('player|'+msg.playerid, messaggio);
});
Questo articolo ti è stato utile?
Utenti che ritengono sia utile: 72 su 89