È stata aggiunta una nuova funzione all'API di Roll20 per supportare i marcatori di token personalizzati. Queste informazioni sono memorizzate nel nodo della campagna come 'token_markers'. è possibile accedervi dall'API tramite
Campaign().get("token_markers");
Queste informazioni sono di sola lettura.
Il valore di ritorno sarà un array JSON stringato contenente un oggetto per ogni marcatore di token attualmente presente nel gioco.
{
"id":59, // l'id del database per il marcatore
"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 del marcatore token
}
Abbiamo scritto un esempio di script per mostrare come può utilizzarlo per trovare i marcatori di token disponibili nella sua Campagna.
Aggiunga questo script al suo gioco e questi comandi saranno disponibili:
!markernames
emetterà tutti i marcatori nella chat con l'immagine, il nome e l'id
!markerids <name>
renderà in output nella chat tutti i marcatori che corrispondono al nome fornito
!settokenmarker <string>
aggiungerà la stringa fornita all'elenco dei marcatori del token attualmente selezionato. Tieni presente che questo non esegue alcuna convalida per assicurarsi che il Token Marker esista, ma semplicemente aggiunge il valore fornito ai marcatori del token.
!gettokenmarkers
invia nell'output della chat l'attributo statusmarker del token attualmente selezionato
su("pronto", () => {
consentire symboliToken = JSON.parsare(Campagna().ottenere("simboli_token"));
consentire ottenereMessaggioChatDaSymboliToken = simboli => {
consentire messaggioChat = '';
_.ogni(simboli, simbolo => {
messaggioChat += `<p><img src='${marker.url}'> ${marker.id}: ${marker.name}</p>`;
});
restituire messaggioChat;
};
su("chat:messaggio", msg => {
se(msg.contenuto.split(" ")[0].inferioreAltrimentiMaiuscolo() === '!nominisimboli') {
consentire messaggioChat = ottenereMessaggioChatDaSymboliToken(symboliToken);
inviaChat("Simboli Token", messaggioChat);
} altrimenti se(msg.contenuto.split(" ")[0].inferioreAltrimentiMaiuscolo() === '!idosimboli') {
consentire nomeSimbolo = msg.contenuto.split(" ")[1].inferioreAltrimentiMaiuscolo();
consentire risultati = [];
_.ogni(simboli, simbolo => {
se(simbolo.nome.inferioreAltrimentiMaiuscolo() === nomeSimbolo) risultati.push(simbolo);
});
log(risultati);
consentire messaggioChat = ottenereMessaggioChatDaSymboliToken(risultati);
messaggioChat = messaggioChat || 'Impossibile trovare simboli token corrispondenti'
inviaChat("Simboli Token", messaggioChat);
} altrimenti se(msg.contenuto.split(" ")[0].inferioreAltrimentiMaiuscolo() === '!impostasimbolotoken') {
consentire nomeSimbolo = msg.contenuto.split(" ")[1].inferioreAltrimentiMaiuscolo();
se (!msg.selezionata && msg.selezionata[0].tipo === "grafica") restituire;
oggetto = ottieniOggetto(msg.selezionata[0].tipo, msg.selezionata[0].id);
symboliCorrenti = oggetto.ottenere("symboli_stato").dividere(',');
symboliCorrenti.push(nomeSimbolo);
oggetto.imposta("symboli_stato", symboliCorrenti.unirsi(','));
} altrimenti se(msg.contenuto.split(" ")[0].inferioreAltrimentiMaiuscolo() === '!ottienisimbolitoken') {
se (!msg.selezionata) restituire;
se (msg.selezionata[0].tipo !== "grafica") restituire;
oggetto = ottieniOggetto(msg.selezionata[0].tipo, msg.selezionata[0].id);
symboliCorrenti = oggetto.ottenere("symboli_stato");
inviaChat("Simboli Token", symboliCorrenti);
}
});
});