API: Documentação da função

O Roll20 disponibiliza várias funções que não fazem parte do JavaScript básico ou de alguma outra biblioteca.


Variáveis globais

Variável Descrição:
_ Este é o objeto namespace para o Underscore.js .
estado As propriedades do objeto de estado serão mantidas entre as sessões do jogo.

_ (Sublinhado)

Este é o objeto namespace para o Underscore.js . O Underscore possui diversas funções para manipulação de coleções.


estado

As propriedades do objeto de estado serão mantidas entre as sessões do jogo. O mesmo objeto de estado também é partilhado entre todos os scripts Mod (API) numa campanha, portanto, é altamente recomendável que, ao gravar valores no estado, minimize a sua pegada o máximo possível para evitar colisões de nomes. Observação: o estado é serializado com JSON, portanto, não é possível armazenar funções ou objetos com referências cíclicas.


Funções Globais

Tipo de retorno Função Descrição:
Objeto Roll20 Campanha Obtém o objeto Campaign Roll20 singleton.
Objeto Roll20 criarObj Cria um novo objeto Roll20.
Matriz de objetos Roll20 filtrarObjs Obtém todos os objetos Roll20 que passam num teste de predicado.
Matriz de objetos Roll20 encontrarObjs Obtém todos os objetos Roll20 com propriedades que correspondem a um determinado conjunto de atributos.
Matriz de objetos Roll20 obterTodosObj Obtém todos os objetos Roll20 na campanha.
varia obterAtributoPorNome Obtém o valor atual ou máximo de um atributo do objeto Roll20.
Objeto Roll20 obterObj Obtém um objeto Roll20 específico.
  u Regista uma mensagem na consola Mod (API).
  no Regista um manipulador de eventos.
  noSheetWorkerConcluído Registra um manipulador de eventos único para ser executado após uma pilha completa de scripts Sheet Worker. Scripts do Sheet Worker .
Booleano O jogador é o GM Verifica se um jogador possui atualmente privilégios de GM.
  playJukeboxPlaylist Inicie a reprodução de uma lista de reprodução da jukebox.
Número número inteiro aleatório Gera um valor inteiro aleatório.
  enviarChat Envia uma mensagem de chat.
  enviarPing Envia um ping semelhante a manter pressionado o botão esquerdo do mouse.
  spawnFx Gera um emissor de partículas.
  gerar efeito entre pontos Gera um emissor de partículas que se move de um ponto para outro.
  gerarEfeitoComDefinição Gera um emissor de partículas que não é representado por um objeto FX Roll20.
  Parar a lista de reprodução da Jukebox Interrompe todas as listas de reprodução atualmente em execução no jukebox.
  Voltar Move um objeto gráfico Roll20 para baixo de todos os outros gráficos na mesma camada da mesa.
  para a frente Move um objeto gráfico Roll20 para cima de todos os outros gráficos na mesma camada da mesa.

Campanha

Parâmetros

Sem parâmetros

Devoluções

O objeto Roll20 da campanha singleton.

Exemplos

var currentPageID = Campaign().get('playerpageid'),
    currentPage = getObj('page', currentPageID);

criarObj

Parâmetros

TYPE(String) O tipo de objeto Roll20 a ser criado. Apenas 'gráfico', 'texto', 'caminho', 'caractere', 'habilidade', 'atributo', 'folheto', 'tabela rolante', 'item de tabela' e 'macro' podem ser criados. ATTRIBUTES(Objeto) Os valores iniciais a serem utilizados para as propriedades do objeto Roll20.

Devoluções

O objeto Roll20 que foi criado.

Exemplos

Ao criar um objeto Roll20 que possui um objeto pai (como criar um objeto Roll20 de atributo, que é filho de um objeto Roll20 de personagem), é necessário fornecer o id do pai nosatributos.

on('add:character', function(obj) {
    createObj('attribute', {
        name: 'Strength',
        current: 0,
        max: 30,
        characterid: obj.id
    });
});

Ao criar um objeto Roll20 de caminho, é necessário fornecer um valor para a propriedade somente leitura_path. Esta é uma exceção à regra que impede a definição do valor de propriedades somente leitura ao criar objetos Roll20.

createObj('path', {
    left: 7000,
    top: 140,
    width: 140,
    height: 140,
    layer: 'objects',
    path: JSON.stringify([['M', 0, 0], ['L', 70, 0], ['L', 0, 70], ['L', 0, 0]])
});

Ao criar um objeto Roll20 para distribuição, não é possível definir o texto ou as notas do GM no momento da criação.

var handout = createObj('handout', {
    name: 'A Letter Addressed to You',
    inplayerjournals: 'all',
    archived: false
});
handout.set({
    notes: 'Notes can only be set after the handout is created',
    gmnotes: 'GM Notes can only be set after the handout is created'
});

filtrarObjs

Parâmetros

CALLBACK (Função) Uma função predicativa para testar todos os objetos Roll20. A função de retorno de chamada recebe um objeto Roll20 como parâmetro e deve retornar true (para objetos Roll20 que serão incluídos no valor de retorno filterObjs) ou false (para todos os outros objetos Roll20).

Devoluções

Uma matriz de objetos Roll20 que passaram no teste de predicado.

Exemplos

var tokenName = getMyTokenName(),
    duplicateTokens = filterObjs(function(obj) {
        if (obj.get('type') !== 'graphic' || obj.get('subtype') !== 'token' || obj.get('name') === tokenName) return false;
        return obj.get('name').indexOf(tokenName) === 0 && /\d+$/.text(obj.get('name'));
});

encontrarObjs

Parâmetros

ATRIBUTOS (Objeto) Uma coleção de pares chave:valor para corresponder aos objetos Roll20 na campanha. OPÇÕES (Objeto, opcional) Se options.caseInsensitive for verdadeiro, as comparações de cadeias de caracteres entre objetos Roll20 e atributos serão insensíveis a maiúsculas e minúsculas.

Devoluções

Uma matriz de objetos Roll20 com propriedades que correspondemaos atributos.

Exemplos

var npcs = findObjs({ type: 'character', controlledby: '' });

obterTodosObj

Parâmetros

Sem parâmetros

Devoluções

Uma matriz de todos os objetos Roll20 na campanha.

Exemplos

var tudo = obterTodosObjetos();

obterAtributoPorNome

Parâmetros

CHARACTER_ID(String) A identificação do objeto Roll20 do personagem que é o pai do objeto Roll20 do atributo cujo valor deseja obter. ATTRIBUTE_NAME(String) O nome do objeto Roll20 do atributo cujo valor você deseja obter. VALUE_TYPE(String, opcional) "current" ou "max" (o padrão é "current" se omitido).

Devoluções

A propriedadeatualoumáximado atributo apropriado. Caso a propriedade desejada não esteja definida, o valor padrão especificado pela ficha de personagem (se houver um padrão) será utilizado em seu lugar.

Exemplos

var personagem = getMyCharacter(),
    força = getAttrByName(personagem.id, 'força'),
    força_máxima = getAttrByName(personagem.id, 'força', 'máxima');

obterObj

Parâmetros

TYPE(String) O tipo de objeto Roll20 a ser obtido. ID(String) A identificação única do objeto Roll20 a ser obtido.

Devoluções

O objeto Roll20 especificado.

Exemplos

on('chat:message', função(msg) {
    var sendingPlayer = getObj('player', msg.playerid);
});

registro

Parâmetros

MENSAGEM (varia) A mensagem a ser publicada no console Mod (API). O parâmetro da mensagem será transformado em uma String com JSON.stringify.

Devoluções

(Nulo)

Exemplos

on('chat:message', function(msg) {
    log('Mensagem recebida de:');
    log(getObj('player', msg.playerid));
});
Mensagem recebida de:
{"_d20userid":"123456","_displayname":"John Doe","speakingas":"","_online":true,"color":"#885b68","_macrobar":"-J16Z-dRU5tleKiKOg0X|-K3F_4q_b1p-Vdiwgn1t","showmacrobar":true,"_id":"-J16Z-dRU5tleKiKOc0X","_type":"player","_lastpage":""}

no

Parâmetros

EVENTO(String) Existem cinco tipos de eventos: pronto, alteração, adição, destruição e chat. Com exceção do evento pronto, todos os tipos de eventos devem ser associados a um tipo de objeto. Para o chat, trata-se sempre de mensagens. Para todos os outros casos, esta é a propriedade de tipo de um objeto Roll20. Além do tipo de objeto, os eventos de alteração também podem especificar opcionalmente uma propriedade do objeto Roll20 especificado a ser observado. As duas ou três partes do evento (tipo, objeto e, opcionalmente, propriedade) são separadas por dois pontos. Portanto, as sequências de eventos válidas incluem, entre outras, "ready", "chat:message", "change:graphic", "change:campaign:playerpageid", "add:character" e "destroy:handout". CALLBACK(Função) A função que será chamada quando o evento especificado for acionado. Os parâmetros passados dependem do tipo de evento: os eventos ready não possuem parâmetros de retorno de chamada. Os eventos change possuem um parâmetro obj, que é uma referência ao objeto Roll20 tal como existe após a alteração, e um parâmetro prev, que é um objeto JavaScript simples com propriedades correspondentes ao objeto Roll20 antes do evento de alteração.Os eventos add têm um parâmetro obj, que é uma referência ao novo objeto Roll20. Os eventos destroy têm um parâmetro obj, que é uma referência ao objeto Roll20 que não existe mais. Os eventos chat têm um parâmetro msg, que contém os detalhes da mensagem que foi enviada para o chat.

Devoluções

(Nulo)

Exemplos

Os eventos são disparados na ordem em que foram registados, do mais específico ao menos específico. Neste exemplo, uma alteração na propriedadeesquerdade um objeto gráfico Roll20 resultará na chamadada função3, seguida pelafunção1e, em seguida,pela função2.

on('alteração:gráfico', função1);
on('alteração:gráfico', função2);
on('alteração:gráfico:esquerda', função3);

Os eventos adicionadostentarão ser acionados para objetos Roll20 que já estão na campanha quando uma nova sessão for iniciada. Para evitar esse comportamento, é possível aguardar para registar o eventode adiçãoaté que o eventoprontoseja disparado.

on('add:graphic', function(obj) {
    // Quando a sessão começar, esta função será chamada para cada gráfico da campanha
    // Esta função também será chamada sempre que um novo objeto gráfico Roll20 for criado
});

on('ready', function() {
    on('add:graphic', function(obj) {
        // Esta função será chamada *apenas* quando um novo objeto gráfico Roll20 for criado, não para aqueles que já existem
    });
});

O parâmetroprépara eventosde alteraçãonão é um objeto Roll20, mas sim um objeto JavaScript simples. Portanto, não é possível utilizar as funçõesgetouset, e não é possível omitir os sublinhados iniciais nas propriedades somente leitura.

on('change:graphic', função(obj, prev) {
    var id1 = obj.id, // todos os três são equivalentes
        id2 = obj.get('id'),
        id3 = obj.get('_id'),

        id4 = prev.id, // indefinido
        id5 = prev.get('id'), // indefinido não é uma função
        id6 = prev._id;       // correto

    // ambos são equivalentes
    obj.set('left', 70);
    obj.set({
        left: 70
    });

    prev.set('left', 70); // undefined não é uma função
    prev.set({ // undefined não é uma função
        left: 70
    });
    prev.left = 70; // correto, embora não altere nada na mesa
});

Para os campos assíncronos dos objetos Roll20 de personagem e folheto (notas,gmnotes ebio), o parâmetroprevnão conterá os dados necessários. (Em vez disso, terá um identificador numérico utilizado pelo sistema.) Caso necessite aceder ao valor anterior de um destes campos, será necessário acompanhá-lo por conta própria:

on('ready', function() {
    if (!state.example) state.example = { bioCache: {} };
});

on('change:character:bio', function(obj, prev) {
    obj.get('bio', function(text) {
        state.example.bioCache[obj.id] = text;

        // realizar ações...

        if (deveReverterBio()) {
            obj.set('bio', state.example.bioCache[obj.id]);
        }
    });
});

noSheetWorkerConcluído

Parâmetros

CALLBACK (Função) A função que será chamada quando a 'pilha' atual de Scripts do Sheet Worker for concluída.

Devoluções

(Nulo)

Exemplos

Esta função deve ser chamada antes de setWithWorker. A funçãode retorno de chamadaserá acionada apenas uma vez.

var myCharacter = ...,
    mySourceAttr = findObjs({ type: 'attribute', characterid: myCharacter.id, name: 'mySourceAttribute' })[0];

onSheetWorkerCompleted(function() {
    var calculatedAttr = findObjs({ type: 'attribute', characterid: myCharacter.id, name: 'myCalculatedAttribute' })[0];
    // realizar uma ação com calculatedAttr.get('current');
});
mySourceAttr.setWithWorker({ current: 5 });

 


O jogador é o GM

Parâmetros

PLAYER_ID(String) A identificação do objeto Roll20 do jogador a ser verificado.

Devoluções

verdadeirose o jogador tiver permissões de GM, oufalsocaso contrário.

Exemplos

Esta função é especialmente útil para restringir os comandos Mod (API) ao uso do GM.

on('chat:message', function(msg) {
    if (msg.type !== 'api') return;

    if (msg.content.indexOf('!playercommand') === 0) {
        // ...
    } else if (msg.content.indexOf('!gmcommand') === 0) {
        if (!playerIsGM(msg.playerid)) return;
        // ...
    
);

playJukeboxPlaylist

Parâmetros

PLAYLIST_ID(String) O ID da lista de reprodução a ser iniciada.

Devoluções

(Nulo)

Exemplos

var playlists = JSON.parse(Campaign().get('jukeboxfolder')),
    myPlaylist = _.find(playlists, (folder) => _.isObject(folder) && folder.n === myPlaylistName);
playJukeboxPlaylist(myPlaylist.id);

número inteiro aleatório

Parâmetros

MAX(Número) O número máximo a ser retornado, inclusive.

Devoluções

Um número inteiro aleatório entre 1 (inclusive) emax(inclusive). Esta função apresenta uma distribuição mais adequada do queMath.random() e é recomendada em vez desta. Esta função não utiliza o Quantum Roll utilizado pelo mecanismo de dados, mas utiliza o mesmo algoritmo pseudoaleatório que o mecanismo de dados utilizará caso o Quantum Roll não esteja disponível.

Exemplos

Como esta função retorna um número inteiro de 1 amax, ela é ideal para gerar rapidamente o resultado de um lançamento de dados, caso não seja necessário utilizar toda a capacidade do mecanismo de dados do Roll20. ..

var d20Result = randomInteger(20); // aproximadamente equivalente a lançar um dado de 20 faces

enviarChat Assíncrono

Parâmetros

SPEAKINGAS(String) O nome a ser anexado à mensagem que está a ser enviada. Se speakingAs estiver no formato jogador|jogador_id ou personagem|personagem_id, a mensagem será enviada como esse jogador ou personagem. Caso contrário, a mensagem utilizará o nome fornecido como se um GM tivesse utilizado o comando /as. MESSAGE(String) A mensagem a ser enviada para o chat. CALLBACK(Função, opcional) Se callback for especificado, o resultado da mensagem do chat será passado para ele em vez de aparecer no chat. O parâmetro do método de retorno de chamada é uma matriz de objetos de mensagem. OPTIONS (Objeto, opcional) Se options.noarchive for verdadeiro, a mensagem não será adicionada ao arquivo do chat. Se options.use3d for verdadeiro, os lançamentos de dados na mensagem utilizarão o recurso de dados 3D. As opções não são aplicáveis se for especificada uma chamada de retorno.

Devoluções

(Nulo)

Exemplos

enviarChat('Exemplo', 'Este é um exemplo simples.');

É possível escrever facilmente um código para enviar uma mensagem como o mesmo jogador ou personagem que desencadeou um eventochat:message.

on('chat:message', function(msg) {
    var character = findObjs({ type: 'character', name: msg.who }) [0],
        player = getObj('player', msg.playerid),
        message = 'disse algo';

    if (personagem) sendChat('personagem|'+personagem.id, personagem.get('nome')+mensagem);
    else sendChat('jogador|'+jogador.id, jogador.get('nome de exibição')+mensagem);
});

O parâmetrode retorno de chamadaé útil se você precisar utilizar o mecanismo de dados do Roll20. mecanismo de dados. Não há necessidade específica de um valorspeakingAsao utilizar ocallback, uma vez que a mensagem não aparecerá no chat de qualquer forma.

sendChat('', '/r 2d20k1+'+strengthMod, function(ops) {
    var msg = ops[0];
    // ...
});

options.noarchivefoi concebido principalmente para enviar aos jogadores menus criados a partir de botões de comando API sem sobrecarregar o histórico de chat.

sendChat('Sistema', '[Limpar alterações](!clear)\n[Adicionar mosaico](!add)\n[Ver amostra](!view)\n[Guardar layout](!save)', null, { noarchive: true });

enviarPing

Parâmetros

LEFT(Número) A coordenada x para posicionar o ping. TOP(Número) A coordenada y para posicionar o ping. PAGE_ID(String) O ID do objeto Roll20 da página onde o ping será posicionado. PLAYER_ID(String, opcional) O ping utilizará a cor do jogador especificado. Se player_id for omitido, o ping será amarelo. MOVEALL(Boolean, opcional) Se moveAll for verdadeiro, todos os jogadores na página apropriada terão as suas visualizações centradas no ping.

Observação:neste momento, apenas os GMs terão as suas visualizações centralizadas semoveAllforverdadeiro. Este comportamento está documentado aqui

Devoluções

(Nulo)

Exemplos

on('chat:message', function(msg) {
    var obj;
    if (msg.type === 'api' && msg.content.indexOf('!ping') === 0) {
        if (!msg.selected) return;
        obj = getObj(msg.selected[0]._type, msg.selected[0]._id);
        sendPing(obj.get('left'), obj.get('top'), obj.get('pageid'), msg.playerid, true); // centralizar todos no token selecionado
    }
});

spawnFx

Parâmetros

ESQUERDA(Número) A coordenada x para posicionar o emissor de partículas. TOPO(Número) A coordenada y para posicionar o emissor de partículas. TIPO(String) O tipo de emissor de partículas a ser posicionado. Para efeitos incorporados, isto deve ser "tipo-cor", onde tipo é um dos seguintes: bomba, borbulhante, queimadura, explosão, brilho, míssil ou nova, e cor é um dos seguintes: ácido, sangue, encanto, morte, fogo, gelo, sagrado, magia, lodo, fumo ou água. ou água. Para efeitos personalizados, este deve ser o ID do objeto FX Roll20. Observação: os tipos beam, breath e splatter não podem ser utilizados com spawnFx. Consulte spawnFxBetweenPoints em vez disso. PAGE_ID(String, opcional) A identificação do objeto Roll20 da página onde o emissor de partículas deve ser colocado. Caso seja omitido, Campaign().get('playerpageid') será utilizado em seu lugar.

Devoluções

(Nulo)

Exemplos

spawnFx(1400, 1400, 'ácido borbulhante');

gerar efeito entre pontos

Parâmetros

START(Objeto) O ponto inicial para o emissor de partículas. O ponto deve estar no formato { x: número, y: número }.END(Object) O ponto final para o emissor de partículas. O ponto deve estar no formato { x: número, y: número }. TIPO(String) O tipo de emissor de partículas a ser colocado. Para efeitos incorporados, isto deve ser "tipo-cor", onde o tipo é um dos seguintes: feixe, bomba, sopro, borbulhante, queimadura, explosão, brilho, míssil, nova, ou salpico e cor é um dos seguintes: ácido, sangue, feitiço, morte, fogo, gelo, sagrado, magia, lodo, fumo ou água. Para efeitos personalizados, este deve ser o id do objeto FX Roll20. PAGE_ID(String, opcional) O id do objeto Roll20 da página onde o emissor de partículas deve ser colocado. Caso seja omitido, Campaign().get('playerpageid') será utilizado em seu lugar.

Devoluções

(Nulo)

Exemplos

spawnFxBetweenPoints({ x: 1400, y: 1400 }, { x: 2100, y: 2100 }, 'beam-acid');

gerarEfeitoComDefinição

Parâmetros

ESQUERDA(Número) A coordenada x para posicionar o emissor de partículas.TOPO(Número) A coordenada y para posicionar o emissor de partículas.DEFINIÇÃO(Objeto) As características do emissor de partículas a ser posicionado. Consulte Efeitos personalizados para obter uma lista das propriedades possíveis e as propriedades dos tipos e cores padrão do emissor de partículas. Consulte a Biblioteca FX para alguns efeitos personalizados criados pelos utilizadores do Roll20. PAGE_ID(String, opcional) O ID do objeto Roll20 da página onde o emissor de partículas será colocado. Caso seja omitido, Campaign().get('playerpageid') será utilizado em seu lugar.

Devoluções

(Nulo)

Exemplos

// estes dois são equivalentes
spawnFx(1400, 1400, 'bubbling-acid');
spawnFxWithDefinition(1400, 1400, {
    maxParticles: 200,
    size: 15,
    sizeRandom: 3,
    lifeSpan: 20,
    lifeSpanRandom: 5,
    speed: 7,
    speedRandom: 2,
    gravity: { x: 0.01, y: 0.65 },
    ângulo: 270,
    ângulo aleatório: 35,
    taxa de emissão: 1,
    cor inicial:       [0, 35, 10, 1],
    cor inicial aleatória: [0, 10, 10, 0.25],
    endColour:         [0, 75, 30, 0],
    endColourRandom:   [0, 20, 20, 0]
});

Parar a lista de reprodução da Jukebox

Parâmetros

Sem parâmetros

Devoluções

(Nulo)

Exemplos

interromper a reprodução da lista de reprodução da Jukebox;

Voltar

Parâmetros

OBJ(Objeto Roll20) O objeto Roll20 a ser enviado para o fundo da sua camada.

Devoluções

(Nulo)

Exemplos

on('chat:message', function(msg) {
    if (msg.type === 'api' && msg.content === '!toback' && msg.selected) {
        _.each(msg.selected, (s) => {
            toBack(getObj(s._type, s._id));
        });
    }
});

para a frente

Parâmetros

OBJ(Objeto Roll20) O objeto Roll20 a ser trazido para a frente da sua camada.

Devoluções

(Nulo)

Exemplos

on('ready', função() {
    on('add:graphic', função(obj) {
        toFront(obj);
    });
});
 
Este artigo foi útil?
7 de 13 acharam isto útil