API: indicatori per segnalino

È stata aggiunta una nuova funzione all'API Roll20 per supportare gli indicatori per segnalino personalizzati. Queste informazioni sono memorizzate sotto il nodo della campagna come "token_markers". È possibile accedervi dall'API tramite

Campagna().get("token_markers");

Queste informazioni sono di sola lettura.

Il valore restituito sarà un array JSON convertito in stringa contenente un oggetto per ogni indicatore per segnalino attualmente presente nel gioco.

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

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:

!markernamesmostrerà tutti i marker nella chat con l'immagine, il nome e l'ID.

!markerids <nome>invierà alla chat tutti i marker corrispondenti al nome fornito.

!settokenmarker <string>aggiungerà la stringa fornita all'elenco dei marcatori del token 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.

!gettokenmarkersvisualizza l'attributo statusmarker del segnalino attualmente selezionato nella chat.

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 token marker corrispondenti'

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