Eventos de chat
chat:mensaje
Se activa cada vez que se recibe un nuevo mensaje de chat. Tenga en cuenta que si el mensaje es de tipo «rollresult» o «gmrollresult», deberá llamar aJSON.parse() en el contenido del mensaje para obtener un objeto que contenga información sobre los resultados de la tirada.
Nota: Si un jugador introduce un mensaje de chat que comienza con un signo de exclamación (!), ese mensaje tendrá el tipo «api» y no se mostrará a nadie. Se pretende que esta funcionalidad se pueda utilizar para proporcionar comandos a los que respondan los scripts Mod (API). Por lo tanto, si el mensaje es de tipo «api», significa que no se ha mostrado a nadie, y es probable que el jugador que envió el mensaje de chat esté esperando que un script Mod (API) haga algo como resultado del mensaje.
Parámetro de devolución de llamada:
| Propiedad | Valor predeterminado | Notas |
|---|---|---|
| quién | "" | El nombre que aparece en pantalla del jugador o personaje que envió el mensaje. |
| identificador de jugador | El ID del jugador que envió el mensaje. | |
| tipo | «general» | Uno de «general», «rollresult», «gmrollresult», «emote», «whisper», «desc» o «api». |
| contenido | "" | El contenido del mensaje de chat. Siel tipoes «rollresult», será una cadena JSON con datos sobre la tirada. |
| origRoll |
(escriba solo «rollresult» o «gmrollresult»)El texto original de la tirada, por ejemplo: «2d10+5 de daño por fuego» cuando el jugador escribe «/r 2d10+5 de daño por fuego». Esto equivale al uso decontenidoen mensajes con tipos distintos de «rollresult» o «gmrollresult». |
|
| rodillos de línea | (el contenido contiene uno o más rollos en línea únicamente)Una matriz de objetos que contiene información sobre todos los rollos en línea del mensaje. | |
| plantilla de rollo | (el contenido contiene solo una o varias plantillas de rollo)El nombre de la plantilla especificada. | |
| objetivo | (solo tipo «whisper»)El ID de jugador de la persona a la que se envía el susurro. Si el susurro se envió al GM sin utilizar su nombre de usuario (es decir, «/w gm texto» en lugar de «/w Riley texto» cuando Riley es el GM), o si el susurro se envió a un personaje sin ningún jugador que lo controle, el valor será «gm». | |
| nombre_del_destino | (solo tipo «susurro»)El nombre que aparece en pantalla del jugador o personaje al que se envió el susurro. | |
| seleccionado | (solo tipo «api»)Una matriz de objetos que el usuario había seleccionado cuando se introdujo el comando. |
Nota: Probablemente no necesite toda esta información. En la mayoría de los casos, solo le interesará el resultado global de la tirada (véase la parte inferior del primer ejemplo). Sin embargo, todo esto se proporciona si realmente desea profundizar en los resultados de una tirada.
Estructura del resultado del lanzamiento Ej. 1
Después de llamar a JSON.parse en el propiedad content de un mensaje «rollresult» o «gmrollresult», obtendrá un objeto con el siguiente formato (este es el resultado del comando /roll {2d6}+5+1t[weather] ¡Ataque!)
Estructura del resultado del lanzamiento Ej. 2
Una estructura comentada para el resultado de /roll {1d6!!>5}>6 (mostrando modificaciones explosivas y éxitos en el objetivo):
Ejemplo de evento de chat (implementación de tipo de rollo personalizado)
on("chat:message", function(msg) {
//Esto permite a los jugadores introducir !sr <number> para tirar varios dados d6 con un objetivo de 4.
if(msg.type == "api" && msg.content.indexOf("!sr ") !== -1) {
var numdice = msg.content.replace("!sr ", "");
sendChat(msg.who, "/roll " + numdice + "d6>4");
}
});
sendChat(hablandoComo, entrada [,callback [, opciones]] )
Puede utilizar esta función para enviar un mensaje de chat.
hablarComo puede ser uno de los siguientes:
- Cualquier cadena, en cuyo caso se utilizará como nombre de la persona que envió el mensaje. Por ejemplo.
«Riley» - El ID de un jugador, con el formato
«jugador|-Abc123»,donde «-Abc123» es el ID del jugador. Si hace esto, se utilizará automáticamente el avatar y el nombre del jugador. - El ID de un personaje, con el formato
«personaje|-Abc123». Si hace esto, se utilizará automáticamente el avatar y el nombre del personaje.
entrada debe ser cualquier expresión válida, igual que las que se utilizan en la aplicación Roll20. Introduce texto para enviar un mensaje básico o utiliza comandos de barra inclinada como «/roll», «/em», «/w», etc. Además:
- Puede utilizar los atributos de carácter con el formato
@{CharacterName|AttributeName}. - Puede utilizar las habilidades de los personajes con el formato:
%{CharacterName|AbilityName}. - Nopuede utilizar macros.
- Puede utilizar el comando «/direct <msg>» para enviar un mensaje sin ningún tipo de procesamiento (por ejemplo, enlaces automáticos de URL) y puede utilizar las siguientes etiquetas HTML en el mensaje:
<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 es un tercer parámetro opcional que consiste en una función de devolución de llamada a la que se le pasarán los resultados de la llamadaa sendChat()en lugar de enviar los comandos al juego. El uso desendChat()de esta manera es asíncrono. El resultado del comandosendChat()será una MATRIZ de operaciones, y cada objeto individual será igual que un objeto que recibe durante un eventochat:message(véase más arriba).
Puede utilizar esto, por ejemplo, para realizar una tirada con el motor de tiradas Roll20 y obtener los resultados de la tirada inmediatamente. A continuación, podría realizar modificaciones adicionales al rollo antes de enviarlo a los jugadores en el juego.
sendChat("Riley", "/roll 1d20+4", function(ops) {
// ops será una MATRIZ con los resultados del comando.
var rollresult = ops[0];
//Ahora haga algo con rollresult, tal y como haría durante un evento chat:message...
});
options es un cuarto parámetro opcional que permite configurar opciones sobre cómo se gestiona el mensaje. Las opciones se especifican como un objeto javascript cuyas propiedades son los nombres de las opciones que se van a configurar y cuyos valores son los ajustes para ellas, generalmenteverdaderos, ya que por defecto son falsos.
Opciones disponibles:
-
noarchive: establezca este valor en verdadero para evitar que el mensaje se almacene en el registro del chat. Esto resulta especialmente útil para salidas que no forman parte de la historia, como los menús del botón Mod (API) y la información de estado.
-
use3d: ahora puede generar tiradas de dados en 3D utilizando la función sendChat(). La sintaxis es muy sencilla:sendChat("Nombre", "Tirando [[3d6]]", null, {use3d: true});Si pasa un ID de jugador al parámetro «nombre», comosendChat("jugador|-ABC123",...), se utilizará el color del jugador para los dados. De lo contrario, se utilizará el color blanco predeterminado.Nota: Los clientes solo pueden mostrar el resultado de una tirada 3D a la vez, por lo que no sirve de nada realizar varias tiradas 3D seguidas. Tenga en cuenta también que el uso de tiradas 3D supone una mayor carga para el servidor de QuantumRoll, por lo que le recomendamos que utilice su criterio y no realice 100 tiradas 3D en un segundo. Utilice tiradas 3D cuando la tirada sea «importante» para el jugador y tenga un impacto en el juego.
Si desea ajustar estas opciones pero no quiere utilizar un parámetro
de devolución de llamada(tercer parámetro, véase más arriba), simplemente puede pasarnullen su lugar:
sendChat("Estado", "Todos los jugadores están conectados.", null, {noarchive:true});
Botones de comando Mod (API)
Ahora, con la actualización de Holding, puede aprovechar el nuevo formato de chat de texto (tanto en los mensajes generados por la API como en los generados por macros y habilidades) para crear «botones de comando Mod (API)» en el chat.
Para hacerlo utilizando el formato Markdown:
[Tirada de ataque] (!attackroll)
El texto entre corchetes aparecerá en el botón, y la parte entre paréntesis es el comando que se ejecutará. Puede incluir cualquier cosa en un rollo normal (macros, habilidades, consultas, etc.), pero tenga en cuenta que el comando en sí será ejecutado por el jugador que haga clic en él. Por ejemplo, no incluya @{Character|AC} si todas las personas que pueden ver el mensaje no pueden acceder a ese carácter. En su lugar, incluya el valor real tal y como existía cuando envió el comando, rellenándolo usted mismo antes de enviar el mensaje de chat. Estos botones funcionarán en todos los tipos de mensajes, mensajes generales, susurros, susurros al administrador, etc.
Tenga en cuenta que si utiliza /direct para enviar un mensaje, no realizaremos ningún análisis Markdown en él, por lo que deberá incluir sus propias etiquetas <a> . Aquí tiene un ejemplo:
<a href="!attackroll">Tirada de ataque</a>
Introducción de botones Mod (API) en el chat
También puede escribir botones Mod (API) con sintaxis Markdown en el chat para que otros los utilicen. Dado que serán interpretados por el analizador del chat, si usted desea que los atributos, consultas y tiradas se expandan al hacer clic en el botón, debe introducir partes del comando con una sintaxis especial (entidades HTML):
| Personaje | Sustitución |
|---|---|
| % | &N.º 37; |
| ) | &N.º 41; |
| ? | &N.º 63; |
| @ | &N.º 64; |
| [ | &N.º 91; o [ |
| ] | &n.º 93; o ] |
Este botón de muestra utiliza algunos de ellos:
[Tirada de ataque](!attackroll @{target|token_id} [[1d6+?{Bonus|0}]])
En realidad, puede utilizar los botones Mod (API) para activar macros o habilidades.
| Personaje | Sustitución |
|---|---|
| <retorno de carro> | &N.º 13; |
Para ello, simplemente comience la parte del comando con el código especial! y luego añada la llamada a la macro con#o la llamada a la habilidad con %(%):
[Macro](! #MacroName)
[Habilidad] (! %{CharName|AbilityName})
Nota: En este momento, al volver a abrir una macro guardada en la pestaña Colecciones de la barra lateral, las entidades HTML que contiene se revierten; si luego se guarda la macro, también se guardan esas reversiones. Este comportamiento no está presente en las habilidades ni en los botones de comando de habilidad.
Para botones de comando de habilidad, si la habilidad que crea el botón y la habilidad a la que hace referencia se encuentran en la misma hoja, la sintaxis es muy sencilla:
[Habilidad] (~AbilityName)