Scripts de mod: ejemplos básicos

El manual ofrece algunos ejemplos de scripts sencillos que pueden ayudarle a dar los primeros pasos. No dude en utilizarlos y modificarlos para emplearlos en sus propias campañas. También hay un foro sobre scripts de mods en el que puede debatir sobre la programación de scripts de mods y compartir sus scripts con la comunidad.

Marcadores de estado «ensangrentado» y «muerto»

(Colaboración de Ken Bauer)

Este script añade automáticamente el marcador «Rojo» para indicar el estado de sangrado a cualquier ficha cuya salud descienda por debajo de la mitad, y el marcador «Muerto» a aquellas cuya salud descienda a 0 o menos. Se da por hecho que la vida se almacena en la 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
    });
  }
});

La oscuridad se cierne sobre nosotros…

Este script reduce el radio de luz de una ficha en un 10 % cada vez que dicha ficha se mueve. Es ideal para simular situaciones como «lámparas que se quedan sin aceite» o situaciones similares de gran tensión.

on("change:token", function(obj, prev) {
  //Haga esto únicamente si realmente nos hemos desplazado.
  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 como jugador o personaje

(Colaboración de Brian Shields)

Este script proporciona unas cuantas líneas que puede utilizar en un script de eventos «chat:message» para asegurarse de que envía un mensaje con «sendChat» de forma correcta, ya sea como jugador o como personaje, dependiendo de quién haya activado el evento.

on("chat:message", function(msg) {
  var message = '';
  // Determinar el contenido de `message`
  var characters = findObjs({_type: 'character'});
  var speaking;
  characters.forEach(function(chr) { if(chr.get('name') == msg.who) speaking = chr; });

  if(speaking) sendChat('character|'+speaking.id, message);
  else sendChat('player|'+msg.playerid, message);
});
¿Fue útil este artículo?
Usuarios a los que les pareció útil: 72 de 89