Eventos de chat
conversa:mensagem
Ativado sempre que uma nova mensagem de chat é recebida. Observe que, se a mensagem for do tipo «rollresult» ou «gmrollresult», será necessário 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 inserir uma mensagem de chat começando com um ponto de exclamação (!), essa mensagem terá o tipo "api" e não será exibida para ninguém. Esta funcionalidade destina-se a fornecer comandos aos quais os scripts Mod (API) respondem. Portanto, se a mensagem for do tipo "api", ela não foi exibida para ninguém, e o jogador que enviou a mensagem de chat provavelmente está à espera que um script Mod (API) execute alguma ação como resultado da mensagem.
Parâmetro de retorno de chamada:
| Propriedade | Valor padrão | Notas |
|---|---|---|
| quem | "" | O nome de exibição do jogador ou personagem que enviou a mensagem. |
| identificador do jogador | A identificação do utilizador que enviou a mensagem. | |
| tipo | "geral" | Um dos seguintes: "general", "rollresult", "gmrollresult", "emote", "whisper", "desc" ou "api". |
| conteúdo | "" | O conteúdo da mensagem de chat. Seo tipofor "rollresult", será uma string JSON com dados sobre o lançamento. |
| origRoll |
(digite apenas "rollresult" ou "gmrollresult")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". Isso é equivalente ao uso deconteúdoem mensagens com tipos diferentes de "rollresult" ou "gmrollresult". |
|
| rolos internos | (o conteúdo contém apenas um ou mais rolos embutidos)Uma matriz de objetos contendo informações sobre todos os rolos embutidos na mensagem. | |
| modelo de rolo | (o conteúdo contém apenas um ou mais modelos de rolo)O nome do modelo especificado. | |
| alvo | (digite apenas «whisper»)O ID do jogador para quem o whisper é enviado. Se a mensagem privada foi enviada ao GM sem utilizar o seu nome de exibição (ou seja, "/w gm texto" em vez de "/w Riley texto" quando Riley é o GM), ou se a mensagem privada foi enviada a um personagem sem jogadores controladores, o valor será "gm". | |
| nome_do_alvo | (digite apenas «whisper»)O nome de exibição do jogador ou personagem para quem o sussurro foi enviado. | |
| selecionado | (digite apenas "api")Uma matriz de objetos que o utilizador selecionou quando o comando foi inserido. |
Nota: Provavelmente não necessita de todas estas informações. Na maioria dos casos, o resultado geral do lançamento será o único de interesse (consulte a parte inferior do primeiro exemplo). No entanto, tudo isso é fornecido caso deseje realmente aprofundar-se nos resultados de um lançamento.
Estrutura do resultado do lançamento Ex. 1
Após chamar JSON.parse no content de uma mensagem "rollresult" ou "gmrollresult", obterá um objeto com o seguinte formato (este é o resultado do comando /roll {2d6}+5+1t[weather] Ataque!)
Estrutura do resultado do lançamento Ex. 2
Uma estrutura anotada para o resultado de /roll {1d6!!>5}>6 (mostrando modificações explosivas e acertos no alvo):
Exemplo de evento de chat (implementação de tipo de rolo personalizado)
on("chat:message", function(msg) {
//Isto permite que os jogadores insiram !sr <number> para lançar um número de dados d6 com um alvo de 4.
if(msg.type == "api" && msg.content.indexOf("!sr ") !== -1) {
var numdice = msg.content.replace("!sr ", "");
sendChat(msg.who, "/roll " + numdice + "d6>4");
}
});
enviarChat(falandoComo, entrada [,retorno de chamada [, opções]] )
É possível utilizar esta função para enviar uma mensagem de chat.
falando pode ser um dos seguintes:
- Qualquer sequência de caracteres, que será utilizada como o nome da pessoa que enviou a mensagem. Por exemplo.
"Riley" - A identificação de um jogador, formatada como
"player|-Abc123", em que "-Abc123" representa a identificação do jogador. Se proceder desta forma, o avatar e o nome do jogador serão utilizados automaticamente. - A identificação de um personagem, formatada como
"personagem|-Abc123". Se proceder desta forma, o avatar e o nome da personagem serão utilizados automaticamente.
entrada deve ser qualquer expressão válida, semelhante às utilizadas na aplicação Roll20. Você insere texto para enviar uma mensagem básica ou utiliza comandos de barra, como "/roll", "/em", "/w", etc. Além disso:
- É possível utilizar atributos de personagem com o formato
@{CharacterName|AttributeName}. - É possível utilizar as Habilidades de Personagem com o seguinte formato:
%{CharacterName|AbilityName}. - Não é possívelutilizar macros.
- É possível utilizar o comando "/direct <msg>" para enviar uma mensagem sem qualquer processamento (por exemplo, ligação automática de URLs), e pode utilizar as seguintes tags HTML na mensagem:
<código><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. UtilizarsendChat()desta forma é assíncrono. Os resultados do comandosendChat()serão uma ARRAY de operações, e cada objeto individual será semelhante a um objeto recebido durante um eventochat:message(consulte acima).
Pode utilizar isto, por exemplo, para realizar um lançamento utilizando o mecanismo de lançamento Roll20 e, em seguida, obter os resultados do lançamento imediatamente. Você poderia então realizar modificações adicionais na jogada antes de enviá-la aos jogadores no jogo.
enviarChat("Riley", "/roll 1d20+4", função(ops) {
// ops será uma ARRAY de resultados de comando.
var rollresult = ops[0];
//Agora, execute uma ação com rollresult, tal como 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, geralmenteverdadeiras, pois o padrão é falso.
Opções disponíveis:
-
noarchive-- defina como verdadeiro para impedir que a mensagem seja armazenada no registo do chat. Isso é particularmente útil para saídas que não fazem parte da história, como menus de botões Mod (API) e informações de estado.
-
use3d-- Agora é possível gerar lançamentos de dados 3D utilizando a função sendChat(). A sintaxe é simples:sendChat("Nome", "Lançando [[3d6]]", null, {use3d: true});Se passar um ID de jogador para o parâmetro nome, comosendChat("player|-ABC123",...), a cor do jogador será utilizada para os dados. Caso contrário, será utilizada a cor branca padrão.Observação:Os clientes dopodem exibir apenas o resultado de um lançamento 3D por vez, portanto, realizar vários lançamentos 3D separados consecutivamente não é recomendável. Observe também que o uso de rolos 3D coloca um pouco mais de pressão no servidor QuantumRoll, portanto, use o seu bom senso e não execute 100 rolos 3D em um segundo. Utilize os dados 3D quando o lançamento for relevante para o jogador e tiver impacto no jogo.
Caso deseje ajustar essas opções, mas não queira utilizar um parâmetro
de retorno de chamada(terceiro parâmetro — consulte acima), basta passarnullem seu lugar:
enviarChat("Status", "Todos os jogadores estão conectados.", null, {noarchive:true});
Botões de comando Mod (API)
Agora disponível com a atualização do Holding, é possível aproveitar a nova formatação do chat de texto (tanto nas mensagens geradas pela API quanto nas geradas por macros e habilidades) para criar "botões de comando Mod (API)" no chat.
Para realizar isso utilizando a formatação Markdown:
[Rolagem de Ataque](!attackroll)
O texto entre colchetes será exibido no botão, e a parte entre parênteses é o comando a ser executado. É possível incluir qualquer elemento num comando normal (macros, habilidades, consultas, etc.), mas tenha em consideração que o comando em si será executado pelo jogador que clicar nele. Por exemplo, não inclua @{Character|AC} se todos que podem ver a mensagem não têm acesso a esse caractere. Em vez disso, inclua o valor real tal como existia quando enviou o comando, preenchendo-o você mesmo antes de enviar a mensagem de chat. Estes botões funcionarão em todos os tipos de mensagens, mensagens gerais, sussurros, sussurros do GM, etc.
Observe que, se utilizar /direct para enviar uma mensagem, não faremos qualquer análise Markdown nela, portanto, é necessário incluir as suas próprias tags <e> . Aqui está um exemplo disso:
<a href="!attackroll">Rolagem de Ataque</a>
Inserindo botões Mod (API) no chat
Também é possível digitar botões Mod (API) de sintaxe Markdown no chat para que outras pessoas possam utilizar. Como serão interpretados pelo analisador de chat, se desejar que os atributos, consultas e rolagens sejam expandidos quando o botão for clicado, é necessário inserir partes do comando com uma sintaxe especial (entidades HTML):
| Personagem | Substituição |
|---|---|
| % | &N.º 37; |
| ) | &N.º 41; |
| ? | &N.º 63; |
| @ | &N.º 64; |
| [ | &N.º 91; ou [ |
| ] | ] ou ] |
Este botão de amostra utiliza alguns deles:
[Rolagem de Ataque](!attackroll @{target|token_id} [[1d6+?{Bonus|0}]])
É possível utilizar os botões Mod (API) para acionar macros ou habilidades.
| Personagem | Substituição |
|---|---|
| <retorno de carro> | &N.º 13; |
Para tal, basta iniciar a parte do comando com o código especial! em seguida, adicione a chamada de macro com#ou a chamada de habilidade com%(%):
[Macro](! #MacroName)
[Habilidade] (! %{CharName|AbilityName})
Observação: No momento, reabrir uma macro guardada no separador Coleções da barra lateral faz com que as entidades HTML dentro dela sejam revertidas; se a macro for guardada, essas reversões também serão guardadas. Este comportamento não está presente no Abilidades ou nos botões de comando de habilidade.
Para Botões de Comando de Habilidade, se a habilidade que cria o botão e a habilidade à qual ele se refere estiverem na mesma folha, a sintaxe é muito simples:
[Habilidade] (~AbilityName)