API: Marcadores de token

Uma nova função foi adicionada à API Roll20 para suportar marcadores de token personalizados. Essas informações são armazenadas no nó da campanha como «token_markers». pode ser acessado a partir da API através de

Campanha().obter("marcadores_de_token");

Essas informações são apenas para leitura.

O valor de retorno será uma matriz JSON convertida em string contendo um objeto para cada marcador de token atualmente no jogo.

{
"id":59, // o ID do banco de dados para o
"name":"Bane", // o nome (não exclusivo) do marcador
"tag":"Bane::59", // como o token é realmente referenciado
// isso incluirá o ID para marcadores personalizados, mas não
// para marcadores padrão.
    "url":"https://s3.amazonaws.com/files.d20.io/images/59/yFnKXmhLTtbMtaq-Did1Yg/icon.png?1575153187"
// ^a URL da imagem do marcador de token
}

Elaborámos um script de exemplo para demonstrar como pode utilizar isto para encontrar os marcadores de token disponíveis na sua campanha.

Adicione este script ao seu jogo e estes comandos estarão disponíveis:

!markernamesirá exibir todos os marcadores no chat com a imagem, nome e identificação.

!markerids <nome>irá apresentar no chat todos os marcadores que correspondam ao nome fornecido.

!settokenmarker <string> irá adicionar a string fornecida à lista de marcadores do token atualmente selecionado. Observe que isso não realiza nenhuma validação para garantir que o marcador de token exista; simplesmente adiciona o valor fornecido aos marcadores de token.

!gettokenmarkersexibe o atributo statusmarker do token atualmente selecionado no 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("Marcadores de Token", 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 || 'Não foi possível encontrar nenhum marcador de token correspondente'

sendChat("Marcadores de token", 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("Marcadores de token", currentMarkers);

}

});

});
 
Este artigo foi útil?
9 de 38 acharam isto útil