Script di mod: indicatori per segnalino

L'oggetto "campagna" memorizza l'elenco degli indicatori per segnalino disponibili nel gioco (predefiniti e personalizzati). Queste informazioni vengono memorizzate come _token_markers. È di sola lettura. È possibile accedervi da uno script di mod utilizzando:

Campaign().get("_token_markers");

Il valore restituito è un array JSON convertito in stringa contenente un oggetto per ciascun indicatore per segnalino attualmente presente nel gioco.

{
    "id": 59, // l'ID del marcatore nel database
    "name": "Bane", // il nome (non univoco) del marcatore
    "tag": "Bane::59", // il modo in cui il token viene effettivamente referenziato
        // questo includerà l'ID per i marcatori personalizzati, ma non
        // per i marcatori predefiniti.
    "url": "https://s3.amazonaws.com/files.d20.io/images/59/yFnKXmhLTtbMtaq-Did1Yg/icon.png?1575153187"
    // ^l'URL dell'immagine dell'indicatore per segnalino
}

Abbiamo redatto uno script di esempio per illustrare come è possibile utilizzare questa funzione per individuare gli indicatori per segnalino disponibili nella propria campagna.

Si prega di aggiungere questo script al proprio gioco per poter utilizzare i seguenti comandi:

!markernames visualizzerà tutti i marcatori nella chat, indicando l'immagine, il nome e l'ID

!markerids visualizzerà nella chat tutti i marcatori che corrispondono al nome specificato

!settokenmarker aggiungerà la stringa specificata all'elenco degli indicatori di stato del segnalino attualmente selezionato. Si prega di notare che questa operazione non esegue alcuna convalida per verificare l'esistenza dell'indicatore per segnalino, ma si limita ad aggiungere il valore fornito agli indicatori per segnalino.

!gettokenmarkers visualizza nella chat l'attributo " statusmarkers " del segnalino attualmente selezionato

on("ready", () => {
  const tokenMarkers = JSON.parse(Campaign().get("_token_markers"));
  const getChatMessageFromTokenMarkers = markers => {
    let chatMessage = '';
    _.each(markers, marker => {
      chatMessage += `<p><img src='${marker.url}'> ${marker.id}: ${marker.name}</p>`;
    });
    return chatMessage;
  };
  on("chat:message", msg => {
    if (msg.content.split(" ")[0].toLowerCase() === '!markernames') {
      let chatMessage = getChatMessageFromTokenMarkers(tokenMarkers);
      sendChat("Indicatori per segnalino", chatMessage);
    } else if (msg.content.split(" ")[0].toLowerCase() === '!markerids') {
      const markerName = msg.content.split(" ")[1].toLowerCase();
      let results = [];
      _.each(tokenMarkers, marker => {
        if (marker.name.toLowerCase() === markerName) results.push(marker);
      });
      log(results);
      let chatMessage = getChatMessageFromTokenMarkers(results);
      chatMessage = chatMessage || 'Impossibile trovare alcun indicatore per segnalino corrispondente'
      sendChat("Indicatori per segnalino", chatMessage);
    } else if (msg.content.split(" ")[0].toLowerCase() === '!settokenmarker') {
      const markerName = msg.content.split(" ")[1].toLowerCase();
      if (!msg.selected && msg.selected[0]._type == "graphic") return;
      obj = getObj(msg.selected[0]._type, msg.selected[0]._id);
      currentMarkers = obj.get("statusmarkers").split(',');
      currentMarkers.push(markerName);
      obj.set("statusmarkers", currentMarkers.join(','));
    } else if (msg.content.split(" ")[0].toLowerCase() === '!gettokenmarkers') {
      if (!msg.selected) return;
      if (msg.selected[0]._type !== "graphic") return;
      obj = getObj(msg.selected[0]._type, msg.selected[0]._id);
      currentMarkers = obj.get("statusmarkers");
      sendChat("Indicatori per segnalino", currentMarkers);
    }
  });
});
Questo articolo ti è stato utile?
Utenti che ritengono sia utile: 9 su 38