Da
Ghost Rider
Salve a tutti,
E' un po' che non faccio un tutorial, e siccome sto lavoricchiando un po' con VXA al momento ho deciso di scrivere qualcosina anche per questo tool.
Tutorial: Creare Eventi Globali utilizzando lo script Call Event di Yanfly
Tool: RPG Maker VX Ace
Livello: Principianti.
Premessa:
Chi mi conosce sa che la mia opinione di rmvxa non è altissima, soprattutto perchè il tool, nonostante sulla carta sia superiore ai suoi predecessori per quanto riguarda il comparto grafico, in realtà, quando si passa "alla sostanza", il tool è pesantemente mutilato non solo dai grossi limiti in fatto di entry nel database e numero massimo di mappe (999 sembrano tante all'inizio, ma vi assicuro - per esperienza personale - che non bastano per un rpg come il mio Dragonheart che è gia a quota 800 mappe nonostante sia forse al 10% del suo sviluppo, e altri rpg epocali come Everlong che superano le 3500 mappe...), ma anche perchè molte funzioni degli eventi, dai precedenti tool, sono state depotenziate se non addirittura rimosse del tutto, e in questo tutorial ci occupiamo di una queste funzioni.
Altra premessa:
Il termine "Eventi Globali" l'ho inventato di sana pianta al solo scopo di questo tutorial, lo dico solo nel caso spunti qualche furbacchione che dica "ma non esiste niente che si chiami eventi globali nel programma... xDDD
Uso questo termine per differenziarli dagli Eventi Comuni (Common Events) configurabili normalmente nel database.
Lo scopo di questo tutorial, in effetti, è proprio di sopperire alla limitata quantità di eventi comuni; volendo potremmo chiamarli "Eventi Comuni Aggiuntivi" ma ho deciso di usare il termine eventi globali perchè fa più figo.
Requisiti:
Per questo tutorial servono due cose:
1) RPG Maker VX Ace (no, ma davvero...!? °A°)
2) Lo script Call Event di Yanfly o script analoghi (se ce ne sono, non ne conosco) che potete trovare qui.
Parliamo un attimo dello script:
Quale che sia la vostra posizione sull'uso degli script (non interessa nè a me nè allo scopo del tutorial), personalmente ritengo che questo script faccia parte di un "pacchetto" di script che tutti dovrebbero avere, in quanto non è solo un agiunta di qualche feature "cosmetica", ma inserisce una vera e propria funzione che è assente nella versione base del tool. E' uno script "per programmatori", non per giocatori.
Premesso che - anche se su VXA la funzione "Chiama Evento" fa capo solo agli eventi comuni (a differenza della serie 2k dove potevi richiamare sia un evento comune che uno della mappa corrente) - è ancora possibile chiamare un evento della mappa attuale utilizzando questo call script:
$gameMap.event(x).start()
dove x è l' ID dell'evento, e farà partire quell'evento alla pagina attualmente attiva (in base alle condizioni di ogni pagina di quell'evento, insomme come se il giocatore ci avesse normalmente interagito).
Chiarimento: questa è una funzione gia presente nel tool di base, utilizza un call script ma NON è uno script esterno, quindi, anti-scriptisti, potete usarla anche voi
Lo script di Yanfly, però, espande ulteriormente questo concetto, permettendoci di scegliere non solo la pagina che vogliamo eseguire, ma anche la MAPPA in cui vogliamo andare a recuperare l'evento. Sì, avete capito bene, è possibile chiamare qualsiasi evento da qualsiasi mappa!
Preparazione:
Scaricate lo script e incollatelo sotto Materials ma sopra a Main (come praticamente qualsiasi altro script). Lo script è plug&play, e non necessita di alcuna configurazione, in oltre può essere inserito durante qualsiasi momento nello sviluppo del vostro gioco.
Non obbligatorio, ma caldamente consigliato, create una mappa vuota in cui conserverete i vari "Eventi Globali". Sarebbe anche meglio se il giocatore non avesse mai accesso a quella mappa, durante il gioco vero e proprio.
Creare un Evento Globale:
Create un evento, in questa nuova mappa (per il tutorial ipotizziamo che sia la mappa n°4), ignorate la grafica dell'evento (se volete potete metterla come segnaposto, ma non è essenziale) e e le condizion di avvio e programmate l'evento come volete; in questo esempio utilizzeremo delle scorte di munizioni che il giocatore potrebbe raccogliere in giro in un gioco stile survival horror.
l'ID dell'evento , mostrato in alto a destra, servirà quando lo richiameremo, per ora tenetelo a mente.
Abbastanza semplice da capire, appare un messaggio (la switch 18 fa riferimento ad un altro script, quindi ignoratela) e poi vengono aggiunte le munizoni all'iventario. Alla fine si attiva la Self Switch A (o quella che vi pare). Questo passaggio è fondamentale anche se l'evento in questione ha una sola pagina.
Per mia preferenza personale, preferisco che ogni Evento Globale sia un evento a se stante, con una sola pagina, ma se per voi è più comodo potete creare un evento solo con più pagine... potreste anche raggrupparli per tipo, ad esempio potreste decidere che l'evento globale 7 venga usato per quegli eventi in cui il giocatore raccoglie munizioni, e potete usare la pagina 1 per i colpi della pistola, la 2 per i colpi del fucile, e così via...
Abbiamo così creato il nostro Evento Globale, il quale ora si trova in questa "mappa fantasma" in attesa di essere usato.
Richiamare un Evento Globale:
Per richiamare questo evento, create un nuovo evento in una delle mappa di gioco dove volete che questo evento venga richiamato. Questa volta la grafica dovete selezionarla (se ne ha una, ovvaimente) e dovete aggiungere una seconda pagina che sia attiva quando lo Switch Locale/Auto Switch (Self Switch) A (o quello che avete programmato nell'evento globale), sia attivo. Nota che questo passaggio non è per forza obbligatorio, infatti potreste usare gli Eventi Globali anche per quei "dialoghi" ricorrenti... come ad esempio quando, in un gioco del tipo investigativo/survival horror/quello che è, il giocatore può esaminare diversi oggetti dello scenario, e appare il messaggio "Niente di Interessante..." o cose simili... in quel caso non è necessario che l'evento si disattivi.
In questo evento, comunque, tutto ciò che dovete fare è inserire il seguente script call:
call_event(x, y, z)
dove x è uguale all' ID dell' Evento Globale (nel nostro caso 7); y è la pagina che volete eseguire (nel nostro caso ipotizziamo 1) e z è l'ID della mappa in cui conservate gli eventi globali (nel nostro caso 4).
*Il comando Call Script (o a volte soltanto Script)lo trovate a pagina 3 dei vari comandi evento:
Ed ecco come appare il nostro evento:
Il trucco è che, anche se noi stiamo eseguendo l'evento 7 della mappa 4, il comando "Control Self Switch" farà riferimento all'evento da cui è partito il "call script", quidi attiverà la pagina 2 dell'evento attuale, senza che noi dobbiamo fare altro!
Così facendo è possibile quindi programmare un evento una sola volta e inserirlo in più istanze senza il minimo sforzo.
Possibil Utilizzi:
Fondamentalmente gli stessi degli eventi comuni, ma con il vantaggio che non consumiamo eventi comuni, che ad esempio possono essere utili per gli eventi in battaglia, visto che questo sistema molto probabilmente (non ho testato) non è utilizzabile con gli eventi in battaglia (se usate il BS standard o coumunque uno modificato da script, se invece il vostro BS è 100% ad eventi, potete usarli anche in quel caso).
Sebbene ad un maker più novizio, o comunque meno attento, possa sembrare che non ci sia chissà quale reale beneficio (in fondo basta copia/incollare lo stesso evento quando e dove si vuole), in realtà questo sistema torna infinitamente comodo nel caso dobbiate modificare quell'evento in futuro... immaginate di accorgervi di un bug, di un errore di grammatica o di battitura dovuto a distrazione, dopo che avete inserito questo evento 250 volte in 90 mappe diverse... e poi è comodissimo anche se volete tradurre il gioco in un altra lingua!
Vi basterà modificarlo UNA volta e sarà subito fixato in tutte le altre istanze in cui l'avete inserito!
Altri possibili utilizzi includono (ma non sono limitati a): tutorials, collectibles, messaggi di stato, dialoghi ricorrenti, e qualunque altra cosa vi venga in mente...
Conclusione:
Spero che questo semplice tutorial torni utile a qualcuno. Per quanto riguarda la "comunità anti scripting", purtroppo non conosco un metodo per farlo senza usare lo script di Yanfly, quindi se proprio non potete farne a meno di macchiare il vostro onore e inquinare il vostro progetto con script di terze parti, agganciatevi xDDD
Lasciate pure un commento o un "Mi Piace" se il tutorial è stato di vostro gradimento, e se volte dire che il tutorial fa cagare e che sono uno scrabbo perchè uso script di terze parti, sentitevi liberi di togliere il culo dal mio divano e andarvi a scrivere il vostro tutorial a riguardo, brutti fraccomodi figli di... ehm come non detto, segnalate pure se conoscete qualche altro modo e provvederò ad aggiornare il tutorial
Pace!