Eventos de Chat
chat:message
Acionado sempre que uma nova mensagem de chat é recebida. Observe que se a mensagem for do tipo "rollresult" ou "gmrollresult", você precisará chamarJSON.parse()
no conteúdo da mensagem para obter um objeto que contenha informações sobre os resultados do lançamento.
Observação: Se um jogador digitar uma mensagem de chat começando com um ponto de exclamação (!), essa mensagem terá o tipo "api" e não será mostrada para ninguém. Está previsto que esta funcionalidade possa ser utilizada para fornecer comandos a que os scripts Mod (API) respondem. Assim, se a mensagem for do tipo "api", então não foi mostrada a ninguém, e o jogador que enviou a mensagem de chat provavelmente espera que um script Mod (API) faça algo como resultado da mensagem.
Parâmetro de retorno de chamada:
Propriedade | Valor Padrão | Notas |
---|---|---|
que | "" | O nome de apresentação do jogador ou personagem que enviou a mensagem. |
jogador | O ID do jogador que enviou a mensagem. | |
tipo | "geral" | Uma de "general", "rollresult", "gmrollresult", "emote", "whisper", "desc" ou "api". |
conteúdo | "" | O conteúdo da mensagem do chat. Se tipo for "rollresult", isto será uma string JSON com dados sobre o resultado do lançamento. |
origRoll |
(tipo "rollresult" ou "gmrollresult" apenas) O texto original do lançamento, por exemplo: "2d10+5 de dano de fogo" quando o jogador digita "/r 2d10+5 de dano de fogo". Isto é equivalente ao uso de conteúdo em mensagens com tipos diferentes de "rollresult" ou "gmrollresult". |
|
inlinerolls | (o conteúdo contém um ou mais lançamentos internos) Um array de objetos contendo informações sobre todos os lançamentos internos na mensagem. | |
modelo de rolagem | (o conteúdo contém apenas um ou mais modelos de rolagem) O nome do modelo especificado. | |
alvo | (apenas tipo "sussurro") O ID do jogador para quem o sussurro é enviado. Se o sussurro foi enviado para o Mestre sem usar o nome de exibição dele ou dela (ou seja, "/w gm texto" em vez de "/w Riley texto" quando Riley é o Mestre), ou se o sussurro foi enviado para um personagem sem nenhum jogador controlando, o valor será "gm". | |
nome_do_alvo | (apenas tipo "sussurro") O nome de exibição do jogador ou personagem para quem o sussurro foi enviado. | |
selecionado | (tipo "api" apenas) Uma matriz de objetos que o usuário selecionou quando o comando foi inserido. |
Nota: Provavelmente você não precisa de todas essas informações. Na maioria dos casos, você estará interessado apenas no resultado geral do lançamento (veja no final do primeiro exemplo). No entanto, tudo isso é fornecido se você quiser realmente se aprofundar nos resultados de um lançamento.
Estrutura do Resultado do Lançamento Ex. 1
Depois de chamarJSON.parse
na propriedadecontent
de uma mensagem "rollresult" ou "gmrollresult", obterá um objeto com o seguinte formato (este é o resultado do comando/roll {2d6}+5+1t[weather] Attack!
)
Estrutura do Resultado do Rolamento Ex. 2
Uma estrutura anotada para o resultado do /rolar {1d6!!>5}>6
(mostrando modificações explosivas e sucessos alvo):
Exemplo de Evento de Bate-Papo (Implementando um Tipo de Rolagem Personalizado)
on("chat:message", function(msg) { //Isso permite que os jogadores digitem !sr <number> para rolar um número de dados d6 com um alvo de 4. se (msg.type == "api" && msg.content.indexOf("!sr ") !== -1) { var numdice = msg.content.replace("!sr ", ""); sendChat(msg.who, "/roll " + numdice + "d6>4"); } });
sendChat(speakingAs, input [,callback [, options]] )
Você pode usar essa função para enviar uma mensagem de chat.
speakingAs
pode ser um dos:
- Qualquer string, nesse caso será usado como o nome da pessoa que enviou a mensagem. Por exemplo,
"Riley"
- O ID de um jogador, formatado como
"player|-Abc123"
onde "-Abc123" é o ID do jogador. Se você fizer isso, ele usará automaticamente o avatar e o nome do jogador. - O ID de um personagem, formatado como
"personagem|-Abc123"
. Se você fizer isso, ele usará automaticamente o avatar e o nome do Personagem.
entrada
deve ser qualquer expressão válida, assim como as usadas no aplicativo Roll20. Você insere texto para enviar uma mensagem básica ou usa comandos de barra, como "/roll", "/em", "/w", etc. Além disso:
- Você pode usar Atributos de Personagem com o formato
@{CharacterName|AttributeName}
. - Você pode usar Habilidades de Personagem com o formato:
%{CharacterName|AbilityName}
. - Vocênãopode usar macros.
- Você pode usar o comando "/direct <msg>" para enviar uma mensagem sem nenhum processamento (por exemplo, autolink de URLs), e você pode usar as seguintes tags HTML na mensagem:
<code><span><div><label><a><br><br /><p><b><i><del><strike><u><img> <blockquote><mark><cite><small><ul><ol><li><hr><dl><dt><dd><sup> <sub><big><pre><figure><figcaption><strong><em><table><tr><td><th> <tbody><thead><tfoot><h1><h2><h3><h4><h5><h6>
callback
é um terceiro parâmetro opcional que consiste numa função de retorno de chamada que receberá os resultados da chamadasendChat()
em vez de enviar os comandos para o jogo. UsarsendChat()
desta forma é assíncrono. Os resultados do comandosendChat()
serão uma ARRAY de operações, e cada objeto individual será exatamente como um objeto que recebe durante um eventochat:message
(ver acima).
Você pode usar isso, por exemplo, para realizar um lançamento usando o mecanismo de lançamento do Roll20 e, em seguida, obter imediatamente os resultados do lançamento. Você poderia então fazer modificações adicionais no lançamento antes de enviá-lo para os jogadores no jogo.
sendChat("Riley", "/roll 1d20+4", function(ops) { // ops será um ARRAY de resultados de comandos. var rollresult = ops[0]; //Agora faça algo com rollresult, assim como você faria durante um evento chat:message... });
opções
é um quarto parâmetro opcional para definir opções sobre como a mensagem é tratada. As opções são especificadas como um objeto JavaScript cujas propriedades são os nomes das opções a serem definidas e cujos valores são as configurações para elas, geralmente verdadeiro
pois elas têm o valor padrão falso.
Opções disponíveis:
-
noarchive
-- defina isso como verdadeiro para impedir que a mensagem seja armazenada no registo de chat. Isto é particularmente útil para a saída que não faz parte da história, como Menus de Botões Mod (API) e informações de estado.
-
use3d
- Agora você pode gerar rolagens de dados em 3D usando a função sendChat(). A sintaxe é simplesmente:sendChat("Nome", "Rolando [[3d6]]", null, {use3d: true});
Se você passar um ID de jogador para o parâmetro de nome, comosendChat("jogador|-ABC123",...)
a cor do jogador será usada para os dados. Caso contrário, será usada uma cor branca padrão.Nota: Os clientes só podem mostrar o resultado de um único lançamento 3D de cada vez, portanto, fazer vários lançamentos 3D separados seguidos não é útil. Também observe que o uso de lançamentos 3D coloca um pouco mais de pressão no servidor QuantumRoll, portanto, use seu julgamento e não faça 100 lançamentos 3D em um segundo. Use lançamentos 3D quando o lançamento "importar" para o jogador e tiver um impacto no jogo.
Se quiser ajustar estas opções mas não quiser utilizar um parâmetro
callback
(terceiro parâmetro - ver acima), pode simplesmente passarnull
no seu lugar:
sendChat("Status", "Todos os jogadores estão conectados.", null, {noarchive:true} );
Botões de Comando Mod (API)
Agora disponível com a Atualização de Holding, você pode aproveitar a nova formatação de chat de texto (tanto em suas mensagens geradas por API quanto naquelas geradas por macros e habilidades) para criar "botões de comando Mod (API)" no chat.
Para fazer isso usando a formatação Markdown:
[Ataque](!attackroll)
O texto entre os colchetes aparecerá no botão, e a parte entre parênteses é o comando a ser executado. Você pode incluir qualquer coisa em um rolagem normal (macros, habilidades, consultas, etc.), mas lembre-se de que o próprio comando será executado pelo jogador que clicar nele. Por exemplo, não inclua @{Character|AC} se todos que puderem ver a mensagem não tiverem acesso a esse personagem. Em vez disso, inclua o valor real conforme existia quando você enviou o comando, preenchendo-o antes de enviar a mensagem de chat. Esses botões funcionarão em todos os tipos de mensagens, mensagens gerais, sussurros, gmwhispers, etc.
Observe que se você usar /direct para enviar uma mensagem, não faremos nenhuma análise de Markdown nela, então você precisa incluir suas próprias tags <a> . Aqui está um exemplo disso:
<a href="!attackroll">Rolagem de Ataque</a>
Introduzindo Botões Mod (API) no Chat
Você também pode digitar a sintaxe Markdown de botões Mod (API) no chat para que outros utilizem. Porque eles serão interpretados pelo analisador de chat, se você quiser que os atributos, consultas e rolagens sejam expandidos quando o botão for clicado, você deve inserir partes do comando com uma sintaxe especial (HTML Entities):
Personagem | Substituição |
---|---|
% | % |
) | ) |
? | ? |
@ | @ |
[ | [ or [ |
] | ] or ] |
Este botão de exemplo usa alguns deles:
[Rolagem de Ataque](!attackroll @{target|token_id} [[1d6+?{Bonus|0}]])
Na verdade, você pode usar os Botões Mod (API) para chamar Macros ou Habilidades.
Personagem | Substituição |
---|---|
<carriage return> | |
Para fazer isso, basta começar a parte do comando com o código especial !
e adicionar a chamada de macro com #
ou a chamada de habilidade com %
(%
):
[Macro](! #MacroName)
[Habilidade](! %{CharName|AbilityName})
Observação: Neste momento, reabrir uma Macro salva na guia Coleções da Barra Lateral faz com que as entidades HTML dentro dela sejam revertidas; se a Macro for então salva, essas reversões também serão. Este comportamento não está presente nas Habilidades ou Botões de Comando de Habilidade.
Para Botões de Comando de Habilidade, se a Habilidade que cria o botão e a Habilidade que ela referencia estão na mesma ficha, a sintaxe é muito simples:
[Habilidade](~NomeHabilidade)