obj.get("proprietà")
e impostare nuovi valori utilizzando obj.set("proprietà", nuovovalore)
o obj.set({property: newvalue, property2: newvalue2})
.Nota: La proprietà id
di un oggetto è un ID univoco a livello globale: nessun oggetto dovrebbe averne uno uguale, nemmeno tra diversi tipi di oggetti. Inoltre, dato che l'id di un oggetto viene spesso richiamato e non cambia mai, è disponibile una scorciatoia in cui puoi accedervi utilizzando obj.id
invece di obj.get("_id")
se lo desideri (entrambi funzionano).
Pathv2 (Jumpgate Tabletop)
Proprietà | Valore predefinito | Note |
---|---|---|
_id |
Un ID unico per questo oggetto. Globalmente unico per tutti gli oggetti |
|
_type | "pathv2" | Può essere usato per identificare il tipo di oggetto o cercare l'oggetto . Sola lettura. |
_pageid | ID della pagina in cui si trova l'oggetto. Sola lettura. | |
shape | "" | "pol", "free", "eli", or "rec" Determines if the path is displayed as a polyline, freehand, ellipse, or rectangle. |
points | A JSON string containing and array of x,y points used to create the path. | |
riempimento | "trasparente" | Colore di riempimento. Utilizzare la stringa "trasparente" o un colore esadecimale come una stringa, ad esempio "#000000" |
contorno | "#000000" | Colore del contorno (bordo). |
rotazione | 0 | Rotazione (in gradi). |
strato | "" | Strato corrente, uno tra "gmlayer", "oggetti", "mappa", o "muri". Lo strato dei muri viene utilizzato per l'illuminazione dinamica e i percorsi nello strato dei muri bloccano la luce. |
spessore_tratto | 5 | |
y | 0 | Coordinate Y per il centro del percorso |
x | 0 | Coordinata X per il centro del percorso |
controllato da | "" |
Elenco delimitato da virgole degli ID dei giocatori che possono controllare il percorso. I giocatori controllanti possono eliminare il percorso. Se il percorso è stato creato da un giocatore, questo viene automaticamente incluso nell'elenco. Tutti i giocatoriè rappresentato dall'avere 'tutti' nell'elenco. |
barrieraTipo | "wall" |
Dynamic Lighting Barrier type options include "wall", "oneWay", and "transparent" |
oneWayReversed | false |
boolean |
The shape property has the following values:
- "pol" - Polyline. A straight line is drawn between each consecutive point. If the starting point and ending point are the same, it creates a closed shape.
- "free" - Freehand. A curve is drawn using the points as guides. If the starting point and ending point are the same, it creates a closed shape.
- "eli" - Ellipse. An ellipse is draw using the points to set a bounding box. Only the first two points are used.
- "rec" - Rectangle. A rectangle is draw using the points to set a bounding box. Only the first two points are used.
The points property is a JSON string containing an array of points. Points are represented as a two position array of an x and y location. A triangle from (0,0) to (0,70) to (70,0), and back to (0,0) would be represented as "[[0,0],[0,70],[70,0],[0,0]]".
The x and y properties position the PathV2 object on the page. They specify where the center of the drawing should be. For some shapes (ellipses and rectangles), that is pretty easy to figure out. For more complex shapes (polylines and freehands), you will need to find the minimum and maximum values from the points property and use the point equidistant between them.
Path (Classic Tabletop)
Proprietà | Valore predefinito | Note |
---|---|---|
_id |
Un ID univoco per questo oggetto. Globally unique across all |
|
_type | "path" | Can be used to identify the object type or search for the object. Solo lettura. |
_pageid | ID della pagina in cui si trova l'oggetto. Sola lettura. | |
_percorso | Una stringa JSON che descrive le linee nel percorso. Solo in lettura, tranne quando si crea un nuovo percorso. Vedere la sezione sui Percorsi per ulteriori informazioni. | |
fill | "trasparente" | Fill color. Use the string "transparent" or a hex color as a string, for example "#000000" |
stroke | "#000000" | Stroke (border) color. |
rotazione | 0 | Rotation (in degrees). |
livello | "" | Current layer, one of "gmlayer", "objects", "map", or "walls". The walls layer is used for dynamic lighting, and paths on the walls layer will block light. |
stroke_width | 5 | |
larghezza | 0 | |
altezza | 0 | |
in alto | 0 | Y-coordinate for the center of the path |
sinistra | 0 | X-coordinate for the center of the path |
scalaX | 1 | |
scalaY | 1 | |
controllato da | "" |
Comma-delimited list of player IDs who can control the path. Controlling players may delete the path. If the path was created by a player, that player is automatically included in the list. Tutti i giocatori è rappresentato avendo 'all' nell'elenco. |
barrierType | "wall" |
Dynamic Lighting Barrier type options include "wall", "oneWay", and "transparent" |
oneWayReversed | falso |
boolean |
Per ulteriori informazioni sul formato dei dati _path
, vedere la sezione sui percorsi.
Finestra
Nota: Finestra e Porta utilizzano un asse invertito rispetto agli altri tipi di oggetti. Ad esempio, una variabile top che sarebbe 100 per un altro oggetto è y -100 per finestra o porta.
Proprietà | Valore predefinito | Note |
---|---|---|
_id | Un ID univoco per questo oggetto. Univoco globalmente tra tutti gli oggetti di questo gioco. Sola lettura. | |
_type | "finestra" | Solo lettura. |
colore | Un colore esadecimale del percorso. | |
x | 0 | Coordina centrale della porta sull'asse x. |
y | 0 | Coordina centrale della porta sull'asse y. |
Aperto | falso | Determina se un giocatore può attraversare questa finestra. |
Chiuso a chiave | false | Impedisce ai giocatori di poter interagire con la finestra. |
Percorso | Rappresentato da due manici (manico0 e manico1) ciascuno con coordinate x e y. |
Esempio
on('chat:message', function(msg) { if (msg.type === 'api' && msg.content === '!cw') { const currentPageID = Campaign().get('playerpageid'); const win = createObj('window', { x: 70, y: -70, pageid: currentPageID, path: { handle0: { x: -70, y: 0, }, handle1: { x: 35, y: 0, }, }, color: '#000000' }); } if (msg.type === 'api' && msg.content === '!mw') { const win = getObj('window', '-NG38yUgghBBoV8YR0y1'); win.set({ x: 240, y: -139 }); } if (msg.type === 'api' && msg.content === '!dw') { const win = getObj('window', '-NG38yUgghBBoV8YR0y1'); win.remove(); } });
Porta
Nota: La finestra e la porta utilizzano un asse invertito rispetto ad altri tipi di oggetti. Ad esempio, una variabile top che sarebbe 100 per un altro oggetto è y -100 per finestra o porta.
Proprietà |
Valore predefinito |
Note |
_id |
Un ID univoco per questo oggetto. Globalmente unico tra tutti gli oggetti in questo gioco. Solo lettura. |
|
_type |
“door” |
Solo lettura. |
colore |
Un colore esadecimale del percorso. |
|
x |
0 |
Coordinate al centro della porta sull'asse x. |
y |
0 |
Coordinate al centro della porta sull'asse y. |
isOpen |
false |
Determina se un giocatore può attraversare questa porta. |
isLocked |
false |
Impedisce ai giocatori di interagire con la porta. |
isSecret |
falso |
Rimuove un'icona della porta dalla vista del giocatore e funziona come una barriera. |
path |
Rappresentata come due maniglie (handle0 e handle1), ognuna con coordinate x e y. |
Testo
Proprietà | Valore predefinito | Note |
---|---|---|
_id | Un ID univoco per questo oggetto. Unico in tutto il gioco tra tutti gli oggetti. In sola lettura. | |
Tipo | "text" | Può essere utilizzato per identificare il tipo di oggetto o cercare l'oggetto. In sola lettura. |
_paginaid | ID della pagina in cui si trova l'oggetto. In sola lettura. | |
top | 0 | |
left | 0 | |
larghezza | 0 | |
altezza | 0 | |
testo | "" | |
dimensione del carattere | 16 | Per ottenere risultati migliori, si attenga alle dimensioni preimpostate nel menu di editing: 8, 10, 12, 14, 16, 18, 20, 22, 26, 32, 40, 56, 72, 100, 200, 300. |
rotazione | 0 | |
colore | "rgb(0, 0, 0)" | |
stroke | "transparent" | |
font_family | "Arial" | Se questo non è impostato, quando in seguito modificherà il valore della proprietà "text", il font_size si ridurrà a 8. Valori possibili (non importa la maiuscola): "Arial", "Patrick Hand", "Contrail One", "Shadows Into Light" e "Candal". Specificando un nome non valido viene utilizzato un font senza nome, con spaziature fisse. |
strato | "" | "gmlayer", "oggetti", "mappa" o "muri". |
controllato da | "" | Elenco separato da virgole di ID dei giocatori che possono controllare il testo. I giocatori che controllano possono eliminare il testo. Se il testo è stato creato da un giocatore, quel giocatore è automaticamente incluso nell'elenco.
Tutti i giocatoriè rappresentato dall'avere 'tutti' nell'elenco. |
Grafica (gettone/mappa/scheda/ecc.)
Proprietà | Valore predefinito | Note |
---|---|---|
_id | Un ID univoco per questo oggetto. Unico a livello globale per tutti gli oggetti di questo gioco. In sola lettura. | |
_type | "grafico" | Può essere utilizzato per identificare il tipo di oggetto o per cercare l'oggetto. In sola lettura. |
_sottotipo | "token" | Può essere "token" (per i token e le mappe) o "card" (per le carte). Sola lettura. |
_cardid | Imposta un ID se il grafico è una carta. Solo lettura. | |
_pageid | ID of the page the object is in. Solo lettura. | |
imgsrc | L'URL dell'immagine del grafico. Veda la nota sulle restrizioni di imgsrc e avatar qui sotto. | |
bar1_link | Set to an ID if Bar 1 is linked to a character. | |
bar2_link | ||
bar3_link | ||
represents | ID of the character this token represents. | |
left | 0 | Number of pixels from the left edge of the map to the center of the graphic. |
top | 0 | Number of pixels from the top edge of the map to the center of the graphic. |
larghezza | 0 | Larghezza del grafico, in pixel. |
altezza | 0 | Altezza del grafico, in pixel. |
rotation | 0 | L'orientamento del token in gradi. |
layer | "" | "gmlayer", "oggetti", "mappa" o "muri". |
isdrawing | false | Questa proprietà è cambiata dal menu contestuale Avanzate. |
flipv | false | Ribaltamento verticale. |
fliph | false | Ribaltamento orizzontale. |
nome | "" | Il nome del token. |
gmnotes | "" | Note sul token visibili solo al GM. |
controlledby | "" | Elenco delimitato da virgole degli ID dei giocatori che possono controllare il grafico. I giocatori che controllano possono eliminare la grafica. Se il grafico è stato creato da un giocatore, questo viene automaticamente incluso nell'elenco.
Tutti i giocatorisono rappresentati avendo 'all' nell'elenco. |
bar1_valore | "" | Valore corrente di Bar 1. Potrebbe essere un numero o del testo. |
bar2_value | "" | |
bar3_value | "" | |
bar1_max | "" | Valore massimo di Bar 1. Se value e max sono entrambi impostati, una barra può essere visualizzata sopra il token mostrando la percentuale di Bar 1. |
bar2_max | "" | |
bar3_max | "" | |
raggio_aura1 | "" | Raggio dell'aura, utilizzando le unità impostate nelle impostazioni della pagina. Può essere un numero intero o un numero decimale. Impostato come stringa vuota per cancellare l'aura. |
raggio_aura2 | "" | |
colore_aura1 | "#FFFF99" | Un colore esadecimale o l'aura. |
colore_aura2 | "#59E594" | |
quadrato_aura1 | falso | È l'aura un cerchio o un quadrato? |
aura2_square | false | |
tint_color | "transparent" | Colore esadecimale o "trasparente". Colorerà il colore della grafica. |
statusmarkers | "" | Elenco separato da virgola dei segnalini di stato attivi al momento. Consulta le note sottostanti per ulteriori informazioni. |
token_markers | "" | Un array JSON rappresentante una stringa con un oggetto per ogni indicatore di token attualmente nel gioco:. Puoi trovare un esempio qui sotto. |
mostranome | falso | Se viene mostrata la targhetta del nome del token. |
mostraplayers_nome | falso | Mostra la targhetta a tutti i giocatori. |
mostraplayers_barra1 | falso | Mostra la Barra 1 a tutti i giocatori. |
showplayers_bar2 | false | |
barra_dei_giocatori3 | falso | |
showplayers_aura1 | falso | Mostri l'Aura 1 a tutti i giocatori. |
showplayers_aura2 | falso | |
nome_del_giocatore | vero | Consenti ai giocatori controllanti di modificare il nome del token. Mostra anche il nome del giocatore controllante, anche se showplayers_name è falso. |
playersedit_bar1 | true | Consenti ai giocatori controllanti di modificare la Barra 1 del token. Mostra anche la Barra 1 ai giocatori controllanti, anche se showplayers_bar1 è falso. |
playersedit_bar2 | true | |
playersedit_bar3 | true | |
playersedit_aura1 | true | Consenti ai giocatori che controllano di modificare l'Aura 1 del token. Mostra anche l'Aura 1 ai giocatori che controllano, anche se showplayers_aura1 è falso. |
playersedit_aura2 | true | |
light_radius | "" | Raggio di illuminazione dinamica. |
light_dimradius | "" | Inizio raggio di luce fioca. Se light_dimradius è una stringa vuota, il token emetterà luce brillante fino alla distanza light_radius. Se light_dimradius ha un valore, il token emetterà luce brillante fino al valore light_dimradius, e luce attenuata da lì fino al valore light_radius. |
light_otherplayers | falso | Mostra la luce del token a tutti i giocatori. |
light_hassight | falso | La luce ha "vista" per i giocatori che la controllano ai fini dell'impostazione "Enforce Line of Sight". |
light_angle | "360" | Angolo (in gradi) dell'angolo della luce. Ad esempio, "180" significa che la luce si mostrerà solo per la "metà" anteriore del "campo visivo". |
luce_losangolo | "360" | Angolo (in gradi) del campo visivo del grafico (supponendo che light_hassight sia impostato su true) |
lastmove | "" | L'ultima mossa del gettone. Si tratta di un elenco di coordinate delimitato da virgole. Per esempio, "300,400" significa che il token ha iniziato la sua ultima mossa a sinistra=300, in alto=400. Si presume sempre che i valori attuali superiore + sinistro del token siano il "punto finale" dell'ultima mossa. I punti di passaggio sono indicati da più set di coordinate. Ad esempio, "300,400,350,450,400,500" indicherebbe che il token è partito con left=300, top=400, quindi ha impostato un punto di passaggio con left=350, top=450, un altro punto di passaggio con left=400, top=500 e poi ha concluso il movimento alle sue coordinate attuali (top + left). |
light_multiplier | "1" | Moltiplicatore sull'efficacia delle fonti di luce. Un moltiplicatore di due permetterebbe al token di vedere il doppio rispetto a un token con un moltiplicatore di uno, con la stessa fonte di luce. |
adv_fow_view_distance | "" | Il raggio attorno a una pedina in cui viene rivelata la Nebbia di Guerra Avanzata. |
moltiplicatore_di_sensibilità_alla_luce | 100 | Moltiplicatore dell'efficacia delle sorgenti luminose. Un moltiplicatore di 200 permetterebbe al token di vedere due volte più lontano di un token con un moltiplicatore di 100, con la stessa fonte di luce. |
effetto_visione_notturna |
Modifica l'effetto di visione notturna. Altre opzioni includono "Oscurante" e "Notturno". | |
posizione_bar | Regola la posizione delle barre dei token. Le opzioni includono ’sovrapposizione_superiore’, ‘sovrapposizione_inferiore’, ‘inferiore’ | |
barra_compatta |
Regola se la barra è compatta o no. Un'altra opzione è compatta. | |
blocco_spostamento | falso | Un'opzione per bloccare una grafica in posizione. Valore booleano vero o falso |
Indicatori per segnalini Esempio
{
"id":59, // l'id del database per il
"name":"Bane", // il nome (non univoco) del marcatore
"tag":"Bane::59", // come il token è effettivamente indicato
// questo includerà l'id per i marcatore personalizzati, ma non
// per i marcatore predefiniti.
"url":"https://s3.amazonaws.com/files.d20.io/images/59/yFnKXmhLTtbMtaq-Did1Yg/icon.png?1575153187"
// ^l'URL dell'immagine del segnalino del token
}
Note Importanti su Personaggi e Token Collegati
Nota che per i token collegati ai Personaggi, il campocontrolledby
del token viene sovrascritto dal campocontrolledby
del Personaggio.
Per le barre di token (ad esempiobar1_value
ebar1_max
) in cui il token è collegato ad un Attributo (ad esempio è impostatobar1_link
), l'impostazione di un valore alla barra aggiornerà automaticamente anche i valoriattuali
e/omax
dell'Attributo sottostante, in modo da non doverli impostare entrambi manualmente.
Inoltre, quando l'Attributo (o la barra dei token) viene modificato nel gioco, sentirà un eventochange:attribute
(e specifico per le proprietà, ad esempiochange:attribute:current
), seguito da un eventochange:graphic
(echange:graphic:bar1_value
). Puoi scegliere di rispondere a uno qualsiasi degli eventi, ma i valori della barra sottostante non saranno ancora aggiornati quando l'evento dell'attributo viene attivato, poiché viene innescato per primo.
Note importanti sugli indicatori di stato
A partire dal 6 agosto 2013, il modo in cui vengono gestiti gli indicatori di stato sui token è cambiato. La proprietà "statusmarkers" dell'oggetto Grafico è ora un elenco separato da virgole di tutti i colori/icone degli indicatori di stato che devono essere attivi sul token. Il formato è il seguente:
//Separato da virgole (usa join per creare o split per convertire in array).
//Se un'icona o un colore di stato è seguito da un simbolo "@", il numero dopo
//"@" verrà visualizzato come badge sull'icona
statusmarkers = "rosso,blu,cranio,morto,marrone@2,verde@6"
Sebbene sia possibile accedere direttamente alla proprietàstatusmarkers
, per mantenere la retrocompatibilità con gli script esistenti e per fornire un modo semplice per lavorare con i marcatori di stato senza dover scrivere codice per gestire la suddivisione e l'analisi della stringa, forniamo una serie di proprietà "virtuali" sull'oggetto che può impostare/ottenere per lavorare con i marcatori di stato. Ogni indicatore di stato ha una proprietà "status_<markername>". Ad esempio:
obj.get("status_red"); //restituirà false se il marcatore non è attivo, true se lo è, e una stringa (ad esempio "2" o "5") se c'è attualmente un badge impostato sul marcatore
obj.get('status_bluemarker'); //è ancora supportato per la compatibilità all'indietro ed è equivalente a fare obj.get("status_blue");
obj.set("status_red", false); //rimuoverebbe il marcatore
obj.set("status_skull", "2"); //imposterebbe un badge di "2" sull'icona del teschio, e lo aggiungerebbe al token se non è già attivo.
Si noti che queste proprietà virtuali non hanno eventi, quindi deve utilizzarechange:graphic:statusmarkers
per ascoltare le modifiche ai marcatori di stato di un token, e per esempiochange:graphic:status_red
NON è un evento valido e non si attiverà mai.
L'elenco completo dei segnalini di stato disponibili (nello stesso ordine in cui appaiono nel pannello dei segnalini):
"rosso", "blu", "verde", "marrone", "viola", "rosa", "giallo", "morto", "teschio", "asleep", "semicompleto", "nebbia", "interdizione", "lumaca", "fulmine-elica", "chiave-inglese", "cuore-incatenato", "fulmine-chimico", "zona-morte", "bevimi", "conto-fisso", "ninjamask", "orologio", "rete-da-pesca", "overdrive", "forte", "pugno", "candado", "tre-foglie", "ala-soffice", "picchiato", "pneumatico", "frecce", "aura", "mal-di-schiena", "bandiera-nera", "occhio-sanguinante", "scudo-mitragliatore", "cuore-rotto", "ragnatela", "scudo-rotto", "bandiera-volante", "radioattivo", "trofeo", "teschio-rotto", "sfera-gelata", "bomba-rotolante", "torre-bianca", "prende", "urla", "granata", "mitragliatore", "tutto-per-uno", "vestitto-angelo", "bersaglio-di-tiro-con-larco"
Pagina
Proprietà | Valore predefinito | Note |
---|---|---|
_id | Un ID univoco per questo oggetto. Univoco a livello globale per tutti gli oggetti in questo gioco. In sola lettura. | |
_type | "pagina" | Può essere utilizzato per identificare il tipo di oggetto o cercare l'oggetto. Sola lettura. |
_zorder | "" | Elenco delimitato da virgola di ID che specifica l'ordinamento degli oggetti sulla pagina. toFront e toBack (e i relativi elementi di menu contestuale) possono riordinare questa lista. Read-only. |
name | "" | Titolo della pagina. |
showgrid | true | Mostra la griglia sulla mappa. |
mostra l'oscurità | falso | Mostra la nebbia di guerra sulla mappa. |
showlighting | false | Utilizzi un'illuminazione dinamica. |
larghezza | 25 | Larghezza in unità. |
altezza | 25 | Altezza in unità. |
incremento di scatto | 1 | Dimensione di uno spazio griglia in unità. |
opacità_griglia | 0.5 | Opacità delle linee di griglia. |
opacità_nebbia | 0.35 | Opacità della nebbia per il GM. |
colore_sfondo | "#FFFFFF" | Colore esadecimale dello sfondo della mappa. |
colore_griglia | "#C0C0C0" | Colore esadecimale delle linee della griglia. |
grid_type | "square" | Uno tra "square", "hex" o "hexr". (hex corrisponde a Hex(V) e hexr corrisponde a Hex(H)) |
scale_number | 5 | La distanza di un'unità. |
scale_units | "piedi" | Il tipo di unità da utilizzare per la scala. |
gridlabels | false | Mostra le etichette della griglia per la griglia esagonale. |
diagonaltype | "foure" | Uno tra "foure", "pitagorico" (euclideo), "threefive" o "manhattan". |
archiviato | falso | Se la pagina è stata archiviata. |
goccia illuminata | false | Aggiorna l'Illuminazione dinamica solo quando un oggetto viene lasciato cadere. |
lightenforcelos | false | Rispetta il campo visivo per gli oggetti. |
lightrestrictmove | false | Non consentire agli oggetti che hanno visibilità di attraversare pareti dinamiche dell'Illuminazione Dinamica. |
lightglobalillum | falso | Se vero, ovunque un token può "vederlo", si assume che ci sia luce intensa presente. |
jukeboxtrigger | Controlla la riproduzione della pagina durante il caricamento. Opzioni includono ‘nonestopall’ o l'id-della-traccia | |
dynamic_lighting_enabled | falso | |
daylight_mode_enabled | falso | |
daylightModeOpacity | 1 | |
explorer_mode | "off" | Options: "off", "basic" |
darknessEffect | "nessuna" | Options: "none", "darkfog", "lightfog" |
Campagna
Proprietà | Valore predefinito | Note |
---|---|---|
_id | "radice" | A unique ID for this object. Globalmente unico tra tutti gli oggetti in questo gioco. Sola lettura. |
_type | "campagna" | Può essere utilizzato per identificare il tipo di oggetto o cercare l'oggetto — tuttavia, nota che c'è solo un oggetto Campagna, e può essere accessato tramite Campaign() . Read-only. |
ordine di rotazione | "" | Una stringa JSON dell'ordine di turno. Vedi sotto. |
pagina dell'iniziativa | falso | ID della pagina utilizzata per il tracker quando la finestra dell'ordine dei turni è aperta. Quando è impostato sufalse , la finestra dell'ordine di turno si chiude. |
playerpageid | falso | ID della pagina a cui è impostato il segnalibro del giocatore. I giocatori vedono questa pagina per impostazione predefinita, a meno che non sia sovrascritta da pagine specifiche dei giocatori. |
paginespecifichegiocatori | false | Un oggetto (NON UNA STRINGA JSON) nel formato: {"player1_id": "id_pagina", "player2_id": "id_pagina" ... } Qualsiasi giocatore impostato su una pagina in questo oggetto sovrascriverà playerpageid. |
_cartellodelgiornale | "" | Una stringa JSON che contiene i dati sulla struttura della cartella del gioco. Sola lettura. |
_cartellone | "" | Una stringa JSON che contiene i dati sulla struttura della playlist del jukebox del gioco. Sola lettura. |
Ordine di Turno
L'ordine di turno è una stringa JSON che rappresenta l'elenco dell'ordine di turno corrente. È un array di oggetti. Attualmente, l'ordine di turno può contenere solo oggetti da una pagina alla volta -- l'ID della pagina corrente per l'ordine di turno è l'attributo "initiativepage". Assicurati di tenerli sincronizzati entrambi o potresti ottenere risultati strani.
Per lavorare con l'ordine di turno, vorrai usareJSON.parse()
per ottenere un oggetto che rappresenta lo stato corrente dell'ordine di turno (NOTA: Controlla che non sia una stringa vuota""
prima...se lo è, inizializzalo tu stesso con un array vuoto). Ecco un esempio di oggetto ordine di turno:
[
{
"id":"36CA8D77-CF43-48D1-8682-FA2F5DFD495F", //L'ID dell'oggetto Grafico. Se impostato, l'elenco dell'ordine di turno estrarrà automaticamente il nome e l'icona dell'elenco in base alla grafica sul tavolo da gioco.
"pr":"0", //Il valore corrente dell'oggetto nell'elenco. Può essere un numero o un testo.
"custom":"" //Titolo personalizzato per l'oggetto. Verrà ignorato se l'ID è impostato su un valore diverso da "-1".
},
{
"id":"-1", //Per gli oggetti personalizzati, l'ID DEVE essere impostato su "-1" (nota che è una STRINGA non un NUMERO.
"pr":"12",
"custom":"Test Custom" //Il nome da visualizzare per gli oggetti personalizzati.
}
]
Per modificare l'ordine di turno, modifica l'oggetto di ordine di turno corrente e poi utilizzaJSON.stringify()
per cambiare l'attributo sulla Campagna. Nota che l'ordinamento dell'ordine di turno nell'elenco è lo stesso dell'ordine dell'array, quindi ad esempiopush()
aggiunge un elemento alla fine dell'elenco,unshift()
aggiunge all'inizio, ecc.
var turnorder;
if(Campaign().get("turnorder") == "") turnorder = []; //NOTE: We check to make sure that the turnorder isn't just an empty string first. If it is treat it like an empty array.
else turnorder = JSON.parse(Campaign().get("turnorder"));
//Add a new custom entry to the end of the turn order.
turnorder.push({
id: "-1",
pr: "15",
custom: "Turn Counter"
});
Campaign().set("turnorder", JSON.stringify(turnorder));
Player
Proprietà | Valore predefinito | Note |
---|---|---|
_id | Un ID unico per questo oggetto. Globally unique across all objects in this game. Sola lettura. | |
_type | Player | Può essere utilizzato per identificare il tipo di oggetto o cercare l'oggetto. Sola lettura. |
_d20userid | ID utente - su tutto il sito. Ad esempio, la pagina utente del giocatore nel wiki è /Utente:ID, dove ID è lo stesso valore memorizzato in _d20userid. Sola lettura. | |
_displayname | "" | Il nome visualizzato corrente del giocatore. Può essere modificato dalla pagina impostazioni dell'utente. Sola lettura. |
_online | falso | Sola lettura. |
_lastpage | "" | L'ID della pagina dell'ultima pagina visualizzata dal giocatore come GM. Questa funzione non viene aggiornata per i giocatori o i GM che si sono uniti come giocatori. Sola lettura. |
_macrobar | "" | Elenco di macro separate da virgola nella barra delle macro del giocatore. Sola lettura. |
parlando come | "" | L'ID del giocatore o del personaggio che il giocatore ha selezionato dal menu a tendina "Come". Quando è impostato sulla stringa vuota, il giocatore parla come se stesso. Quando è impostato su un carattere, il valore è "carattere|ID", dove ID è l'ID del carattere. Quando il GM parla come un altro giocatore, il valore è "player|ID", dove ID è l'ID del giocatore. |
colore | "#13B9F0" | Il colore del quadrato accanto al nome del giocatore, così come il colore delle sue misure sulla mappa, i suoi cerchi di ping, ecc. |
mostramacrobar | falso | Se viene visualizzata la barra delle macro del giocatore. |
Macro
Proprietà | Valore predefinito | Note |
---|---|---|
_id | Un ID univoco per questo oggetto. Univoco globalmente per tutti gli oggetti in questo gioco. In sola lettura. | |
Tipo | "macro" | Può essere utilizzato per identificare il tipo di oggetto o cercare l'oggetto. In sola lettura. |
_playerid | L'ID del giocatore che ha creato questa macro. Read-only. | |
nome | "" | Il nome della macro. |
azione | "" | Il testo della macro. |
visibleto | "" | Elenco di ID giocatori separati da virgola che possono visualizzare la macro oltre al giocatore che l'ha creata.
Tutti i giocatori sono rappresentati avendo 'tutti' nell'elenco. |
istokenaction | falso | Questa macro è un'azione token che dovrebbe apparire quando i token sono selezionati? |
Tavolo arrotolabile
Proprietà | Valore predefinito | Note |
---|---|---|
_id | A unique ID for this object. Unico a livello globale per tutti gli oggetti di questo gioco. In sola lettura. | |
_type | "rollabile" | Può essere utilizzato per identificare il tipo di oggetto o per cercare l'oggetto. In sola lettura. |
nome | "new-table" | |
showplayers | true |
Table Item
Proprietà | Valore predefinito | Note |
---|---|---|
_id | Un ID unico per questo oggetto. Globally unique across all objects in this game. Sola lettura. | |
_type | "tableitem" | Can be used to identify the object type or search for the object. Sola lettura. |
_rollabletableid | "" | ID della tabella a cui appartiene questo articolo. Sola lettura. |
avatar | "" | URL di un'immagine utilizzata per l'elemento della tabella. Veda la nota sulle limitazioni di avatar e imgsrc qui sotto. |
nome | "" | |
peso | 1 | Peso dell'articolo della tabella rispetto agli altri articoli della stessa tabella. Semplicemente, un oggetto con peso 3 è tre volte più probabile che venga selezionato quando si lancia il dado sul tavolo rispetto a un oggetto con peso 1. |
Personaggio
Proprietà | Valore predefinito | Note |
---|---|---|
_id | Un ID unico per questo oggetto. Unico a livello globale tra tutti gli oggetti in questo gioco. Sola lettura. | |
_type | "character" | Può essere utilizzato per identificare il tipo di oggetto o cercare l'oggetto. Sola lettura. |
avatar | "" | URL di un'immagine utilizzata per il personaggio. Vedi la nota sulle restrizioni relative all'avatar e all'imgsrc qui sotto. |
nome | "" | |
biografia | "" | Biografia del personaggio. Vedi la nota qui sotto su come accedere ai campi Note, GMNotes e alla biografia. |
noteGM | "" | Note sul personaggio visibili solo dal GM. Vedi la nota qui sotto su come accedere ai campi Note, GMNotes e alla biografia. |
archivio | falso | |
nellepaginegiocatore | "" | Elenco separato da virgola degli ID dei giocatori che possono visualizzare questo personaggio. Usa "tutti" per dare a tutti i giocatori la possibilità di visualizzare.
Tutti i giocatori sono rappresentati avendo 'tutti' nell'elenco. |
controlledby | "" | Elenco separato da virgola degli ID dei giocatori che possono controllare e modificare questo personaggio. Usa "tutti" per dare a tutti i giocatori la possibilità di modificare.
Tutti i Giocatori è rappresentato avendo 'tutti' nella lista. |
_defaulttoken | "" | Una stringa JSON che contiene i dati del token predefinito del personaggio, se impostato. Nota che questo è un "blob" simile a "bio" e "note", quindi devi passare una funzione di callback per ottenere(). Sola lettura. |
Attributi
Proprietà | Valore predefinito | Note |
---|---|---|
_id | Un ID unico per questo oggetto. Univoco a livello globale tra tutti gli oggetti in questo gioco. Sola lettura. | |
_type | "attributo" | Può essere usato per identificare il tipo di oggetto o cercare l'oggetto. Sola lettura. |
_characterid | "" | ID del personaggio a cui appartiene questo attributo. Sola lettura. Obbligatorio quando si utilizzacreateObj . |
nome | "Senza titolo" | |
corrente | "" | Il valore attuale dell'attributo è accessibile nella chat e nelle macro con la sintassi@{Character Name|Attribute Name} o nelle abilità con la sintassi@{Attribute Name} . |
massimo | "" | Il valore massimo dell'attributo è accessibile nella chat e nelle macro con la sintassi@{Character Name|Attribute Name|max} o nelle abilità con la sintassi@{Attribute Name|max} . |
Importante: per informazioni su come i valori predefiniti del foglio caratteri influiscono sull'uso degli Attributi, consulti la nota sottostante relativa al lavoro con i fogli caratteri.
Capacità
Proprietà | Valore predefinito | Note |
---|---|---|
_id | Un ID unico per questo oggetto. Unico globalmente tra tutti gli oggetti di questo gioco. Sola lettura. | |
_type | "caratteristica" | Può essere usato per identificare il tipo di oggetto o cercare l'oggetto. Sola lettura. |
_characterid | "" | Il personaggio a cui appartiene questa caratteristica. Sola lettura. Obbligatorio quando si utilizzacreateObj . |
nome | "Untitled_Ability" | |
descrizione | "" | La descrizione non appare nell'interfaccia del foglio personaggio. |
azione | "" | Il testo dell'abilità. |
istokenaction | falso | È questa abilità un'azione da token che dovrebbe apparire quando vengono selezionati i token collegati al personaggio genitore? |
Materiale di gioco
Proprietà | Valore predefinito | Note |
---|---|---|
_id | Un ID univoco per questo oggetto. Unico a livello globale tra tutti gli oggetti in questo gioco. Sola lettura. | |
_type | "handout" | Può essere utilizzato per identificare il tipo di oggetto o cercare l'oggetto. Sola lettura. |
avatar | "" | URL di un'immagine utilizzata per il documento. Vedere la nota sulle restrizioni avatar e imgsrc di seguito. |
nome | "Nota Misteriosa" | |
annotazioni | "" | Contiene il testo nel documento. Vedi la nota qui sotto sull'uso delle Note e delle GMNotes. |
gmnotes | "" | Contiene il testo nel documento che solo il GM vede. Vedi la nota qui sotto sull'uso delle Note e delle GMNotes. |
inplayerjournals | "" | Elenco delimitato da virgole di ID dei giocatori che possono vedere questo documento. Utilizza "all" per mostrare a tutti i giocatori.
Tutti i Giocatori è rappresentato avendo 'tutti' nella lista. |
archiviato | falso | |
controlledby | "" | Elenco di ID dei giocatori separati da virgole che possono controllare e modificare questo handout.
All Players is represented by having 'all' in the list. |
Nota: L'API non ha accesso alla gerarchia delle cartelle. Gli handout creati dall'API verranno posizionati al livello di base.
Mazzo
Nota che ci sono metodi di assistenza all'API per "draw", "deal" o "shuffle" carte dal Mazzo. VediAggiornamenti API nel post del forum di marzo 2018.
Proprietà | Valore predefinito | Note |
---|---|---|
_id | "" | id del mazzo |
_type | "mazzo" | |
nome | "" | nome del mazzo |
_currentDeck | "" | una lista di carte separate da virgola che sono attualmente nel mazzo (inclusi quelli che sono stati giocati sul tavolo/mano). Cambia quando il mazzo viene mescolato. |
_currentIndex | -1 | the current index of our place in the deck, 'what card will be drawn next?' |
_currentCardShown | true | show the current card on top of the deck |
showplayers | true | show the deck to the players |
playerscandraw | true | i giocatori possono pescare carte? |
avatar | "" | il 'retro' delle carte per questo mazzo |
mostrato | false | mostra il mazzo sulla plancia di gioco (il mazzo è attualmente visibile?) |
i_giocatori_vedonocarte | vero | i giocatori possono vedere il numero di carte nella mano degli altri giocatori? |
i_giocatori_vedonofrontedellecarte | falso | i giocatori possono vedere i fronti delle carte quando guardano nelle mani degli altri giocatori? |
gm_seenumcards | vero | il GM può vedere il numero delle carte nella mano di ogni giocatore? |
gm_seefrontofcards | falso | il GM può vedere i fronti delle carte quando guarda nella mano di ogni giocatore? |
infinitecards | falso | ci sono un numero 'infinito' di carte in questo mazzo? |
_cardSequencer | -1 | usato internamente per avanzare il mazzo quando si prendono carte. |
cartegiocate | "scoperte" | come si giocano le carte da questo mazzo sul tavolo da gioco? 'scoperte' o 'coperte'. |
altezzadefault | "" | qual è l'altezza predefinita per le carte giocate sul tavolo? |
larghezza predefinita | "" | |
modalità scarto | "none" | che tipo di mazzo scarto possiede questo mazzo? 'nessuna' = nessun mazzo scarto, 'scegliretro' = permetti ai giocatori di vedere il retro delle carte e sceglierne una, 'sceglifronte' = vedi il fronte e scegli, 'pescaalto' = pesca la carta scartata più recentemente, 'pescabasso' = pesca la carta scartata più vecchia. |
_mazzoScarti | "" | quale è il mazzo scarto corrente per questo mazzo? lista di carte separate da virgola. Queste sono carte che sono state rimosse dal gioco e non saranno reinserite nel mazzo durante una mescolata fino a quando non viene eseguita una richiamo. |
Carta
Property | Default Value | Notes |
---|---|---|
nome | "" | Nome della carta |
avatar | "" | Fronte della carta |
card_back | "" | Override card back image |
_deckid | "" | ID del mazzo |
Tipo | "carta" | |
_id | "" |
Mano
Si noti che ogni giocatore dovrebbe avere SOLO una mano.
Proprietà | Valore predefinito | Note |
---|---|---|
mano corrente | "" | elenco delimitato da virgole di carte attualmente in mano. Si noti che questo non è più di sola lettura. Idealmente, dovrebbe essere regolato solo con le funzioni del mazzo di carte. |
_type | "mano" | |
_parentid | "" | ID del giocatore a cui appartiene la mano |
_id | "" | |
Vista attuale | "bydeck" | quando il giocatore apre la mano, la visualizzazione è 'bydeck' o 'bycard'? |
Traccia jukebox
Proprietà | Valore predefinito | Note |
---|---|---|
_id | Un ID univoco per questo oggetto. Univoco a livello globale tra tutti gli oggetti in questo gioco. Sola lettura. | |
_type | "jukeboxtrack" | Può essere usato per identificare il tipo di oggetto o cercare l'oggetto. Read-only. |
sta giocando | false | Valore booleano utilizzato per determinare se la traccia è in riproduzione o meno. Impostando questo valore su "true" e softstop su "false" si riproduce una traccia. |
softstop | false | Valore booleano utilizzato per determinare se una traccia non in loop è stata riprodotta almeno una volta. Questo deve essere impostato su "false" per garantire la riproduzione di una traccia. |
titolo | "" | L'etichetta visibile per la traccia nella scheda jukebox. |
volume | 30 | Il livello del volume della traccia. Nota che questo deve essere impostato come un numero intero (non una stringa), altrimenti potresti interrompere la funzionalità. Valori da 0-100 (percentuale). |
ciclo | false | La traccia deve essere ripetuta? Imposta su vero se lo desideri. |
Set personalizzato
Property | Default Value | Notes |
---|---|---|
_id | A unique ID for this object. Globalmente unico tra tutti gli oggetti di questo gioco. Read-only. | |
_type | "custfx" | Può essere utilizzato per identificare il tipo di oggetto o cercare l'oggetto. Read-only. |
nome | "" | Il nome visibile per l'FX nell'elenco FX. |
definizione | {} | Oggetto JavaScript che descrive l'FX. |
imgsrc e restrizioni proprietà avatar
Mentre ora puoi modificare le proprietà imgsrc
e avatar
, al fine di garantire la sicurezza di tutti gli utenti di Roll20, abbiamo posto le seguenti restrizioni su tali proprietà:
- Deve utilizzare un file immagine che è stato caricato nella sua Libreria Roll20-- non un sito esterno (come Imgur), e non il Marketplace Roll20. Inizierà con ' https://s3.amazonaws.com/files.d20.io/images/' per le immagini caricate sul server principale o ' https://s3.amazonaws.com/files.staging.d20.io/images/' per le immagini caricate sul server di sviluppo. Puoi visualizzare l'URL sorgente di un'immagine utilizzando gli strumenti per sviluppatori del tuo browser.
- Devi includere la stringa di query nell'URL, ad esempio ' https://s3.amazonaws.com/files.staging.d20.io/images/123456/med.png?12345678 ', non solo ' https://s3.amazonaws.com/files.staging.d20.io/images/123456/med.png'
- Per gli oggetti grafici (token), devi utilizzare la dimensione "thumb" dell'immagine. Dovrebbe apparire come 'https://s3.amazonaws.com/files.staging.d20.io/images/123456/thumb.png?12345678'.
In futuro potremmo aggiungere uno strumento in modo che le immagini possano essere caricate specificamente per l'uso con Mod (API) script, ma per ora usa semplicemente le immagini caricate nella tua libreria. Nota che se elimini un'immagine dalla tua libreria, verrà rimossa da tutti i giochi che utilizzano quell'immagine, compresi i giochi che utilizzano i tuoi script Mod (API).
Utilizzando i campi Note, GMNotes e Bio asincronamente
Per accedere ai campi "notes", "gmnotes" o "bio" sui personaggi e sugli appunti, devi passare una funzione di callback come secondo argomento alla funzione get(). Ecco un esempio:
var character = getObj("character", "-JMGkBaMgMWiQdNDwjjS");
character.get("bio", function(bio) {
log(bio); //fai qualcosa con il bio del personaggio qui.
});
Puoi impostare il valore di questi campi come al solito. Tieni presente che attualmente (al 2016/05/09) c'è un bug con questi campi asincroni, in cui impostarli passando valori a createObj non funziona silenziosamente, lasciando l'oggetto in uno stato strano. Dovresti impostare questi valori usando .set fino a quando questo problema non viene risolto. Dettagli sul Forum. C'è anche un bug (dal 2016/11/05) per cui il tentativo di impostare entrambe le proprietà notes e gmnotes nella stessa chiamata set() comporta l'impostazione errata della seconda proprietà nella chiamata. Dettagli sul Forum.
Lavorare con le schede dei personaggi
La funzione Fogli di caratteri influisce sull'utilizzo del tipo di oggetto Attributi, perché i fogli hanno la possibilità di specificare un valore predefinito per ogni attributo del foglio. Tuttavia, se l'attributo è impostato sul valore predefinito, non esiste ancora un oggetto Attributo effettivo creato nel gioco per quel Personaggio. Forniamo una funzione di convenienza che le nasconde questa complessità. Dovrebbe utilizzare questa funzione per ottenere il valore di un attributo in futuro, soprattutto se sa che un gioco utilizza una Scheda Personaggio.
getAttrByName(character_id, attributo_nome, valore_tipo)
È sufficiente specificare l'ID del personaggio, il nome(non l'ID) dell'attributo (ad esempio "HP" o "Str"), e poi se desidera "current" o "max" per value_type. Ecco un esempio:
var character = getObj("character", "-JMGkBaMgMWiQdNDwjjS");
getAttrByName(character.id, "str"); //il valore attuale di str, ad esempio "12"
getAttrByName(character.id, "str", "max"); //il valore massimo di str, ad esempio "[[floor(@{STR}/2-5)]]".
Si noti che i campi che hanno valori auto-calcolati restituiranno la formula piuttosto che il risultato del valore. Può quindi passare questa formula a sendChat() per utilizzare il motore dei dadi per calcolare automaticamente il risultato.
Assicurati di prendere in considerazione anche il Scheda Personaggio per ulteriori informazioni su come le Schede Personaggio interagiscono con l'API.
getAttrByName
otterrà soloil valore dell'attributo, non l'oggetto attributo stesso. Se desidera fare riferimento a proprietà dell'attributo diverse da "current" o "max", o se desidera modificare le proprietà dell'attributo, deve utilizzare una delle altre funzioni precedenti, comefindObjs
.
Nel caso in cui l'attributo richiesto non esista,getAttrByName()
restituiràundefined
.
Creare oggetti
createObj(tipo, attributi)
Nota: attualmente può creare oggetti 'grafico', 'testo', 'percorso', 'carattere', 'abilità', 'attributo', 'handout', 'rollableable', 'tableitem' e 'macro'.
Può creare un nuovo oggetto nel gioco utilizzando la funzionecreateObj
. Deve inserire il tipo dell'oggetto (una delle proprietà_type
valide dell'elenco di oggetti precedente), nonché un oggettoattributes
contenente un elenco di proprietà dell'oggetto. Si noti che se l'oggetto ha un oggetto genitore (ad esempio, gli attributi e le abilità appartengono ai caratteri, la grafica, i testi e i percorsi appartengono alle pagine, ecc.), deve inserire l'ID del genitore nell'elenco delle proprietà (ad esempio, deve includere la proprietàcharacterid
quando crea un attributo). Tenga presente che anche quando crea nuovi oggetti, non può impostare proprietà di sola lettura, che verranno automaticamente impostate al loro valore predefinito. L'unica eccezione è rappresentata dalla creazione di un percorso: deve includere la proprietà 'percorso', ma non può essere modificata una volta che il percorso è stato inizialmente creato.
createObj
restituirà il nuovo oggetto, in modo da poter continuare a lavorare con esso.
//Crea un nuovo attributo Forza su tutti i Personaggi che vengono aggiunti al gioco.
on("add:character", function(obj) {
createObj("attribute", {
name: "Strength",
current: 0,
max: 30,
characterid: obj.id
});
});
Eliminazione di oggetti
oggetto.remove()
Nota: attualmente è possibile eliminare gli oggetti 'grafica', 'testo', 'percorso', 'carattere', 'abilità', 'attributo', 'handout', 'rollableable', 'tableitem' e 'macro'.
Può eliminare gli oggetti di gioco esistenti utilizzando la funzione.remove()
. La funzione .remove() funziona su tutti gli oggetti che può creare con la funzione createObj. Si chiama la funzione direttamente sull'oggetto. Ad esempio,mycharacter.remove();
.
Oggetti globali
Ci sono diversi oggetti che sono globalmente disponibili in qualsiasi punto del suo script.
Campagna() (funzione)
Una funzione che restituisce l'oggettoCampaign
. Poiché esiste una sola campagna, questo globale punta sempre all'unica campagna del gioco. Utile per fare cose come controllare se un oggetto si trova nella pagina attiva usandoCampaign().get("playerpageid")
.
state
La variabilestate
è un oggetto nell'ambito globale, accessibile a tutti gli script in esecuzione nel gioco. Può accedere all'oggettostate
da qualsiasi funzione o callback in qualsiasi momento, semplicemente utilizzando la variabile globale denominatastate
. Inoltre, lo stato dell'oggetto viene preservato tra le esecuzioni di Sandbox, quindi puoi usarlo per memorizzare le informazioni che desideri avere nelle esecuzioni future del tuo script.
Nota:Dovrebbe utilizzare l'oggetto State per memorizzare le informazioni necessarie solo all'API, in quanto non vengono inviate ai computer dei giocatori e non ingrandiscono il file di gioco. Memorizzi i valori che sono necessari nel gioco nelle proprietà degli oggetti Roll20.
Tipi memorizzabili
L'oggettostate
è in grado di persistere solo tipi di dati semplici, come supportato dallo standardJSON.
Tipo | Esempi | Descrizione |
---|---|---|
Boolean |
vero falso
|
Il valorevero ofalso . |
Numero |
123,5 10 1,23e20
|
Qualsiasi formato di numero supportato da Javascript. In virgola mobile o intero. |
Stringa |
Hello Fantasy' "oh, and World"
|
Una stringa di testo standard. |
Array |
[ 1, 2, 3, 4 ] [ 'A','B','C'] [1, 2, ['bob', 3], 10, 2.5]
|
Una collezione ordinata di qualsiasi tipo, compresi altri array. |
Oggetto | { key: 1, value: 'roll20' } |
Un semplice oggetto chiave/valore con chiavi stringa e uno qualsiasi dei tipi come valore, compresi altri oggetti. |
Attenzione:Mentre le funzioni sembreranno funzionare quando sono memorizzate nello stato inizialmente, scompariranno la prima volta che lo statoviene ripristinato dalla persistenza, come ad esempio al riavvio di una sandbox.
-
Nota:Questo include gli oggetti Roll20 che lei ottiene dagli eventi o dalle funzioni
findObjs()
,getObj()
,filterObjs()
,createObj()
, ecc.
Promemoria importanti
L'oggettostate
è condiviso da tutti gli script in una sandbox. Per evitare di rompere altri script, è importante seguire alcune semplici linee guida:
-
Nonmai assegnare direttamente all'oggetto
stato principale
.
stato = { break: 'all the things' }; // NON FACCIA MAI QUESTO!!!
-
Evitidi utilizzare variabili locali denominate
state
nei suoi script. Anche se questo funziona, sarà fonte di confusione per gli utenti successivi dei suoi script e potrebbe causare problemi se il codice viene modificato in modo incauto.
function turn(){
var state = Campaign().get('turnorder'); // Pessima pratica, evitarla!
// ...
}
-
Semprecollochi le sue proprietà al di sotto di almeno una proprietà dello spazio dei nomi. Si assicuri di utilizzare una proprietà dello spazio dei nomi sufficientemente descrittiva. Eviti nomi come
script
oimpostazioni
. È meglio utilizzare il nome del suo modulo oppure il suo nome o il suo handle.
if( ! state.MyModuleNamespace ) {
state.MyModuleNamespace = { module: 'il mio modulo', ok: 'questo va bene!', count: 0 };
}
state.MyModuleNamespace.count++;
Esempio di utilizzo
Questo è un esempio funzionante che utilizza l'oggettostate
in modo appropriato.
on('ready',function() {
"use strict";
// Controlla se la proprietà namespaced esiste, creandola se non esiste
if( ! state.MyModuleNS ) {
state.MyModuleNS = {
version: 1.0,
config: {
color1: '#ff0000',
color2: '#0000ff'
},
count: 0
};
}
// Utilizzo delle proprietà dello stato per configurare un messaggio alla chat.
sendChat(
'Modulo di prova',
'<span style="color: '+state.MyModuleNS.config.color1+';">'+
'Stato di prova'+
'</span> '+
'<span style="color: '+state.MyModuleNS.config.color2+';">'+
'Script v'+state.MyModuleNS.version+' iniziato '+(++state.MyModuleNS.count)+' volte!'+
'</span>'
);
});
Trovare/Filtrare gli oggetti
L'API fornisce diverse funzioni di aiuto che possono essere utilizzate per trovare gli oggetti.
getObj(tipo, id)
Questa funzione ottiene un singolo oggetto se si passano il _tipo dell'oggetto e l'_id. È meglio utilizzare questa funzione rispetto alle altre funzioni di ricerca, quando possibile, perché è l'unica che non deve iterare l'intera collezione di oggetti.
on("change:graphic:represents", function(obj) {
if(obj.get("represents") != "") {
var character = getObj("character", obj.get("represents"));
} } }).
});
findObjs(attrs)
Passa a questa funzione un elenco di attributi e restituirà tutti gli oggetti che corrispondono come un array. Si noti che questo funziona su tutti gli oggetti di tutti i tipi in tutte le pagine -- quindi probabilmente vorrà includere almeno un filtro per _type e _pageid se sta lavorando con oggetti da tavolo.
var currentPageGraphics = findObjs({
_pageid: Campaign().get("playerpageid"),
_type: "graphic",
});
_.each(currentPageGraphics, function(obj) {
//Fare qualcosa con l'obj, che si trova nella pagina corrente ed è un grafico.
});
Può anche inserire un secondo argomento opzionale che contiene un oggetto con un elenco di opzioni, tra cui:
- caseInsensitive(vero/falso): Se vero, le proprietà delle stringhe saranno confrontate senza tenere conto del caso della stringa
var targetTokens = findObjs({
nome: "target"
}, {caseInsensitive: true});
//Ritrova tutti i token con nome 'target', 'Target', 'TARGET', ecc.
filterObjs(callback)
Eseguirà la funzione di callback fornita su ogni oggetto e, se la callback restituisce true, l'oggetto sarà incluso nell'array dei risultati. Attualmente è sconsigliabile utilizzare filterObjs() per la maggior parte degli scopi - a causa del fatto che findObjs() ha un'indicizzazione integrata per una migliore velocità di esecuzione, è quasi sempre meglio utilizzare findObjs() per ottenere prima gli oggetti del tipo desiderato, quindi filtrarli utilizzando il metodo nativo .filter() per gli array.
var results = filterObjs(function(obj) {
if(obj.get("left") < 200 && obj.get("top") < 200) return true;
else return false;
});
//Results è un array di tutti gli oggetti che si trovano nell'angolo superiore sinistro del piano del tavolo.
getAllObjs()
Restituisce un array di tutti gli oggetti nel Gioco (tutti i tipi). Equivalente alla chiamata a filterObjs e restituisce semplicementetrue
per ogni oggetto.
getAttrByName(character_id, attribute_name, value_type)
Ottiene il valore di un attributo, utilizzando il valore predefinito del foglio del personaggio se l'attributo non è presente. value_type
è un parametro opzionale, che puoi utilizzare per specificare "corrente" o "massimo".
getAttrByName
otterrà soloil valore dell'attributo, non l'oggetto attributo stesso. Se desideri fare riferimento alle proprietà dell'attributo diversi da "corrente" o "massimo", o se desideri modificare le proprietà dell'attributo, devi utilizzare una delle altre funzioni sopra, comefindObjs
.
Per le sezioni ripetute, può utilizzare il formatosezione_ ripetuta$n_attribute
, doven
è il numero della riga ripetuta (a partire da zero). Ad esempio,repeating_spells_$2_name
restituirà il valore diname
dalla terza riga direpeating_spells
.
Può ottenere un comportamento equivalente agetAttrByName
con quanto segue:
// current and max sono completamente dipendenti dall'attributo e dal sistema di gioco
// in questione; non esiste una funzione disponibile per determinarli automaticamente
function mieGetAttrByName(character_id,
attribute_name,
attribute_default_current,
attribute_default_max,
value_type) {
attribute_default_current = attribute_default_current || '';
attribute_default_max = attribute_default_max || '';
value_type = value_type || 'current';
var attribute = findObjs({
type: 'attribute',
characterid: character_id,
name: attribute_name
}, {caseInsensitive: true})[0];
if (!attribute) {
attribute = createObj('attribute', {
characterid: character_id,
name: attribute_name,
current: attribute_default_current,
max: attribute_default_max
});
}
if (value_type == 'max') {
return attribute.get('max');
} else {
return attribute.get('current');
}
}