350 likes | 478 Views
Corso Multiplayer Applicazioni Multimediali Multiplayer su Web. 2 – Scripting. Eventi Elementi sul linguaggio Costrutti di controllo flusso Parametri impliciti Eventi di movimento Orientarsi nella documentazione Array e SET. EVENTO. A ogni cosa che succede corrisponde un EVENTO
E N D
Corso MultiplayerApplicazioni Multimediali Multiplayer su Web 2 – Scripting Eventi Elementi sul linguaggio Costrutti di controllo flusso Parametri impliciti Eventi di movimento Orientarsi nella documentazione Array e SET
EVENTO • A ogni cosa che succede corrisponde un EVENTO • A ogni EVENTO viene generata una chiamata • A ogni chiamata, se gli corrisponde del codice, questo viene ESEGUITO
EVENTO esempi • All’inizio del gioco • Evento onStart • Se esiste onStart, viene eseguito
EVENT • EVENT id_evento • Istruzione • Istruzione .. • End_EVENT verificare Developers Ref.
EVENT Esempio • EVENT onStart • Call PopMonster() ‘Mia funzione che fa apparire un ‘mostro in una stanza a caso • End_EVENT
EVENTO esempi • Un personaggio viene guardato (cliccato) • Scatta l’evento persona.onLook • Se esiste, l’evento viene eseguito e stop. • Scatta l’evento onLook (generico) • Se esiste, l’evento viene eseguito.
Parametri impliciti • $OWNER – chi possiede l’evento equivale a this in Java • $AGENT – chi ha iniziato l’azione • $TARGET – terzo attore (a volte si usa, a volte no)
EVENT Model: persona.onLook $AGENT $OWNER
EVENTO onLook Esempio SCRIPTS EVENT tizio.onLook Speak $OWNER,$AGENT,“Ehi cos’hai da guardare?" END_SCRIPTS
Speak • Speak [da,][dest,] frase [, frase…] • “da” Default è $OWNER • “dest” Default è $AGENT • Se ci sono più frasi vengono stampate in ciclo
Speak da così… SCRIPTS EVENT tizio.onLook Speak $OWNER,$AGENT,“Ehi cos’hai da guardare?", “Lasciami in pace!“ END_SCRIPTS
…a così SCRIPTS EVENT tizio.onLook Speak“Ehi cos’hai da guardare?", “Lasciami in pace!“ END_SCRIPTS
Valori predefiniti SYS (Voce di sistema) • Usare in “da” $WORLD (Tutti i giocatori connessi al gioco) • Usare in “dest”
EVENTO onLook Esempio SCRIPTS EVENT tizio.onLook Speak SYS,$WORLD,“Il giocatore “ + $AGENT + “ guarda “ + $OWNER END_SCRIPTS
Object Model di CHARACTERS • Usare il punto . per fare riferimento a una proprietà Persona.name Nome della persona Persona.container Dove si trova la persona (oggetto) Persona.container.id (id della stanza) Persona.container.name (nome della stanza)
Print • Print [dest,] Che cosa [, che cosa…] • Print “In questa stanza c’è poca luce” • Print “OWNER=“ + $OWNER + “ AGENT= “ + $AGENT + “ TARGET=“ + $TARGET
Assegnazione – ricordare un valore • Compleanno = “26 Luglio” • Print Compleanno 26 Luglio
If .. Else • If (condizione) • Istruzioni • Else • Istruzioni • End_If • Niente THEN • End_If e non End If
RndInt(N) • Estrae un numero a caso da 1 a N e lo restituisce
If .. Else IfRndInt(2) = 1 Print “PARI!” Else Print “DISPARI!” End_If
EVENT Model: persona.onHear $TARGET $AGENT $OWNER
Stampare i parametri impliciti • Print “OWNER=“ + $OWNER + “ AGENT= “ + $AGENT + “ TARGET=“ + $TARGET
Vedere il log • Cartella system • File debug#.log • # = numero dello slot usato • NB.: Se non funziona rivedere impostazione debugTo= nel file worldnav#.properties
Eco di quanto detto • EVENT persona.onHear • Speak $OWNER,$AGENT,”Mi hai detto: “ + $TARGET + “, ma che significa?” • END_EVENT
EVENT Model: stanza.onLoose $AGENT $TARGET $OWNER
EVENT Model: persona.onExit $OWNER $AGENT $TARGET
EVENT Model: persona.onEnter $OWNER $AGENT $TARGET
EVENT Model: stanza.onReceive $AGENT (?) $TARGET $OWNER
Consultare la Developers Reference • Come funziona DimensioneX • Configurazione • Parte Design-time (DXW) • Parte Run-Time (SmallBasic) • Object Model degli oggetti • Eventi del sistema • Funzioni disponibili • Istruzioni disponibili
Array arrSaluti 1 2 3 4 “ciao” “hola” “hi” “hello”
Array + RndInt(N) • arrSaluti = NewSet(“ciao,hola,hello”) • Speak arrSaluti(RndInt(3)) • Ciao • Hello • Ciao • Hola
SET setOggetti book crown scroll sword
For Each Next • For Each var In set • Istruzioni • Next • Attenzione a set e array
For Each Next + SET Print “personaggi presenti:” For Eachx In getCharactersIn(spiaggia) Printx.name Next
Riassunto • Eventi • Elementi sul linguaggio • Costrutti di controllo flusso • Parametri impliciti • Eventi di movimento • Orientarsi nella documentazione • Array e SET