Rpg˛S Forum uses cookies. Read the Privacy Policy for more info. To remove this message, please click the button to the right:    I accept the use of cookies

Vai al contenuto

Rpg˛S Forum uses cookies. Read the Privacy Policy for more info. To remove this message, please click the button to the right:    I accept the use of cookies

Screen Contest #90

Kamikun






  • Si prega di effettuare il log in prima di rispondere
[ACE] Creare un menu ad eventi

    Morshudiego
  • Alex (Rm2k)

  • Utenti
  • Rens: 48
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 838 messaggi
  • Sesso:Maschio
  • Abilitā:Esperto

#1 Inviato 14 October 2014 - 18:24 PM

Creare un Menu ad Eventi

Informazioni
Tool usato: RPG Maker Ace (in inglese)
Autore: Morshudiego

Premessa
Anni orsono c'erano gli alexiani (Così chiamo chi usa RPG Maker 2000/2003) che criticavano di brutto i ralphiani (chi usa il VX) per il fatto che utilizzavano script invece di farsi il mazzo con gli eventi, cosa che ha portato a pensare che i ralphiani fossero dei nabbi completi.
Se da un lato penso che gli script siano una manna dal cielo che permette di gestire ogni singolo aspetto del gioco, da un lato sono daccordo con gli alexiani: gli script hanno favorito di molto la scarsità di impegno degli utenti, promuovendo il copia-incolla di script e limitando così la varietà dei progetti.
Ho deciso di scrivere questa guida principalmente per dimostrare che l'eventing su Ace non è morto ed è tuttora valido per realizzare progetti molto personali e originali. Secondariamente può essere utile a qualcuno che vuole realizzare il proprio menù ma non sa da che parte girarsi (e non ha dimestichezza con gli script).
Ci tengo a specificare che in questo menu si useranno comunque gli script call per poter semplificare notevolmente il lavoro soprattutto con l'uso delle immagini. È vero che sarà un menu ad eventi, ma è anche vero che se esiste un modo più efficiente e veloce di realizzare una cosa, è giusto impararla. L'idea è stata rimandata a quando completerò il menu.
 
Indice
Parte 1: Le grandi basi
Parte 1bis: Costruisciti da solo il tuo Input trigger!
Parte 2: Toh, un menu!
Parte 3: La borsa infinita (COMING SOON)
Parte 4: Questioni di abilità (COMING SOON)
Parte 5: Cosa mi metto oggi? (COMING SOON)
Parte 6: Curriculum Vitae (COMING SOON)
<altre parti verranno aggiunte in futuro>



Parte 1: Le grandi basi

Partiamo subito col puntualizzare una cosa.
2XbTa6M.png
Questo NON E' un menu. Questo è un mostra scelta che si spaccia per menu. Brutto da vedere, estremamente limitato, scarsamente personalizzabile. E' l'ultima cosa che voi vorreste avere sul vostro progetto.

Per realizzare un buon menu bisogna utilizzare queste componenti:
- Variabili
- Switch
- Eventi Comuni
- Cicli
- Condizioni SE (Conditional Branches in inglese)
- Immagini
Non starò a spiegare cosa sono tutti questi, ci sono altri ottimi tutorial al riguardo. Per le immagini vi assicuro che non bisogna essere un artista per realizzare qualcosa di decente. Un buon programma che vi consiglio per realizzare le immagini è GraphicsGale: Gratuito, semplice e con funzioni molto utili.

Punto 1: Lo scheletro del menu
Quando creano un menu ad eventi, molti principianti tendono a mettere tutto il codice in un solo evento comune. E funziona eh, per carità. Ma poi quando devono apportare delle modifiche a distanza di tempo... E chi ci capisce più?
Ecco perché è molto meglio dividere il menu in vari eventi comuni, ognuno con il suo codice da gestire. Sarà più semplice da capire e da fare delle modifiche.

Creiamo quindi 4 eventi comuni: Uno per chiamare il menù, uno per aprire il menu, uno per quando siamo dentro il menu e uno per chiudere il menu.

[001: Pulsante Menu] [Trigger: Parallel Process] [Condition Switch: 0001:Pulsante Menu Premuto]
[002: Apri Menu] [Trigger: None]
[003: Dentro Menu] [Trigger: None]
[004: Chiudi Menu] [Trigger: None]


Concentriamoci sul primo evento: Il richiamo del menu, che sarà l'unico evento parallelo del nostro menu.
*: "Ma come!? Vuoi dire che non devo utilizzare 400 eventi in parallelo per far funzionare tutto alla perfezione!?!?"
Utilizzando i cicli al posto degli eventi paralleli possiamo ottimizzare grandemente il nostro menu, facendo risparmiare cpu al giocatore e permettendo di usare i processi paralleli per altre cose.
Tornando al nostro evento, settiamo il trigger in "Parallel Process" e come switch scegliamo la switch numero 1, chiamandola "Pulsante Menu Premuto". il codice al suo interno sarà molto semplice: Se il tasto B (Esc sulla tastiera) viene premuto, il secondo evento comune (Apri Menu) verrà attivato.

[001: Pulsante Menu] [Trigger: Parallel Process] [Condition Switch: 0001:Pulsante Menu Premuto]
@>
Conditional Branch: The B Button is Being Pressed

@>Call Common Event: [Apri Menu]
@>

: Branch End
@>


Ora che il nostro evento di richiamo è bello che pronto, possiamo concentrarci sugli altri eventi comuni (che d'ora in avanti chiamerò CE)
Il secondo ed il quarto CE (Apri menu e Chiudi menu) per il momento sono abbastanza semplici. Apri menu attiverà una switch (la numero 2, che chiameremo "Menu aperto") e chiamerà l'evento comune Dentro Menu. Chiudi Menu invece spegnerà la switch per informare il gioco che il menu è stato chiuso.
 
[002: Apri Menu] [Trigger: None]
@>Control Switches: [0002: Menu Aperto] = ON
@>Call Common Event: [Dentro Menu]
@>
 
[004: Chiudi Menu] [Trigger: None]
@>Control Switches: [0002: Menu Aperto] = OFF
@>
 
Ora manca solo l'evento comune Dentro Menu. Qui dentro ci sarà tutto il fulcro del nostro menu.
Dato che non sarà un processo parallelo dobbiamo "bloccare" il gioco dentro il CE. Per fare questo utilizziamo un ciclo, così che il codice contenuto all'interno continuerà a ripetersi finché non verrà fermato in qualche modo.
Dentro questo ciclo bloccheremo il personaggio del giocatore col comando "Set Move Route" senza nessun tic e come movimenti "wait 1 frame". Dopodiché anche qui useremo una condizione SE "se il tasto B è premuto" per poter rompere il ciclo infinito e poter uscire dal menu. Per non far buggare il ciclo è necessario inserire, dopo tutti i vari comandi del ciclo, un "wait 1 frame" così che il gioco non si blocchi. Infine, al di fuori del ciclo richiameremo il CE Chiudi Menu per poter finalmente chiudere il menu e tornare alla mappa.
 
[003: Dentro Menu] [Trigger: None]
@>Loop


@>Set Move Route: Player

: $>Wait: 1 frame(s)

@>Conditional Branch: The B Button is Being Pressed

@>Break Loop

@>

Branch End

@> Wait 1 frame(s)

@>

Repeat Above
@>Call Common Event: [Chiudi Menu]
@>
 
Ora lo scheletro del menu è completato! Non dimenticate di attivare la switch 1 per poter utilizzare il nuovo menu!

Punto 2: "Cambio della guard... ehm... del menu!"
Usando un menu alternativo al menu principale, questi due andranno in conflitto quando si premerà il pulsante Esc. Per risolvere il problema bisogna disabilitare il menu di base con il comando "Change Menu Access".

Nella prossima parte
purtroppo in questa parte di menu c'è veramente nulla, essendo solo la parte introduttiva. Nella prossima parte vedremo come gestire le immagini in modo da dare una parte grafica al menu.

Alla prossima!


Modificato da Morshudiego, 30 October 2014 - 15:51 PM.

Succodipera: Il blog di Morshudiego su RPG Maker (Leggetelo, lì ci sono più aggiornamenti che sulla firma!)
 
<AGGIORNAMENTI> (Ultima modifica: Oct 30 2014)
Myth of First Star - Facendo il punto della situazione
Project Sudoku - Il multitasking non è il mio forte. XD (Spero comunque di risolvere il bug per rilasciare la 0.3 :P)
Tutorial Menu Eventi - Uscita parte 2 (però è malformattata, non so se riuscirò ad editare tutto in un giorno. Abbiate pasiensa :P)

<PROGETTI>
Myth of First Star - Project Sudoku (*trollface*)

<SCRIPTS>
Zelda Map Scrolling - Switch Post Caricamento - Messaggi Istantanei - Picture Manager - Minimalist Menu

<TUTORIAL>
Uso corretto acqua RTP - Creare un menu ad eventi


    Guardian of Irael
  • Coniglietto Rosso

  • Rpg˛S Admin
  • Rens: 195
  • 19
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 58413 messaggi
  • Sesso:Maschio
  • Provenienza:Bagnaia (Viterbo)
  • Abilitā:Apprendista


#2 Inviato 14 October 2014 - 18:33 PM

Sìììì, finalmente un buon tutorial ad eventi per menù che non sia dall'XP in giù! XD

 

Questo NON E' un menu. Questo è un mostra scelta che si spaccia per menu. Brutto da vedere, estremamente limitato, scarsamente personalizzabile. E' l'ultima cosa che voi vorreste

Ah ok, mi stavo preoccupando! XD

 

 

Utilizzando i cicli al posto degli eventi paralleli possiamo ottimizzare grandemente il nostro menu, facendo risparmiare cpu al giocatore e permettendo di usare i processi

Consiglio l'uso delle label a mo' di ciclo, sono molto meno laggose dei cicli non so per quale implementazione nascosta, ma è dal 2k che son così > <

 

L'hai scritto su un txt e poi incollato? Ti ha messo tanti spazi a caso! XD

 

Aspetto la seconda parte!  ^ ^


(\_/)
(^ ^) <----coniglietto rosso, me!     
(> <)

 
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
 
KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^
 
FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^  
 
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

Spoiler


    Morshudiego
  • Alex (Rm2k)

  • Utenti
  • Rens: 48
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 838 messaggi
  • Sesso:Maschio
  • Abilitā:Esperto

#3 Inviato 14 October 2014 - 18:52 PM

Consiglio l'uso delle label a mo' di ciclo, sono molto meno laggose dei cicli non so per quale implementazione nascosta, ma è dal 2k che son così > <

Anche io uso i label perché con quelli posso andare anche avanti nel codice e muovermi come mi pare, ma ho pensato che per un principiante sia meglio capire come funziona il ciclo vero e proprio.

L'hai scritto su un txt e poi incollato? Ti ha messo tanti spazi a caso! XD

Sì. Credo di averli corretti tutti perché da me ora si vede a posto.

Succodipera: Il blog di Morshudiego su RPG Maker (Leggetelo, lì ci sono più aggiornamenti che sulla firma!)
 
<AGGIORNAMENTI> (Ultima modifica: Oct 30 2014)
Myth of First Star - Facendo il punto della situazione
Project Sudoku - Il multitasking non è il mio forte. XD (Spero comunque di risolvere il bug per rilasciare la 0.3 :P)
Tutorial Menu Eventi - Uscita parte 2 (però è malformattata, non so se riuscirò ad editare tutto in un giorno. Abbiate pasiensa :P)

<PROGETTI>
Myth of First Star - Project Sudoku (*trollface*)

<SCRIPTS>
Zelda Map Scrolling - Switch Post Caricamento - Messaggi Istantanei - Picture Manager - Minimalist Menu

<TUTORIAL>
Uso corretto acqua RTP - Creare un menu ad eventi


    Morshudiego
  • Alex (Rm2k)

  • Utenti
  • Rens: 48
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 838 messaggi
  • Sesso:Maschio
  • Abilitā:Esperto

#4 Inviato 15 October 2014 - 18:48 PM

Scusate il doppio post, volevo solo comunicare un aggiornamento importante del topic principale.
- Inserito l'elenco delle parti del tutorial con tanto di data di rilascio (che aggiornerò ad ogni uscita di una nuova parte). Le nuove parti saranno scritte in questo topic (senza crearne di altri) e linkati nel primo post.
- Eliminate le immagini che comprendono solo programmazione e sostituite con scritte colorate in stile RPG Maker (così posso inserire i codici gradualmente senza dover caricare 123 immagini). Pensate possa essere lo stesso comprensibile?

Ho ritenuto opportuno far uscire le parti a cadenza settimanale, così da avere abbastanza tempo per scriverle in maniera dettagliata (infatti mentre la guida è alla parte 1, su un "progetto copia" della guida sto già programmando (anzi, ottimizzando) la parte 3.)


Modificato da Morshudiego, 16 October 2014 - 10:25 AM.

Succodipera: Il blog di Morshudiego su RPG Maker (Leggetelo, lì ci sono più aggiornamenti che sulla firma!)
 
<AGGIORNAMENTI> (Ultima modifica: Oct 30 2014)
Myth of First Star - Facendo il punto della situazione
Project Sudoku - Il multitasking non è il mio forte. XD (Spero comunque di risolvere il bug per rilasciare la 0.3 :P)
Tutorial Menu Eventi - Uscita parte 2 (però è malformattata, non so se riuscirò ad editare tutto in un giorno. Abbiate pasiensa :P)

<PROGETTI>
Myth of First Star - Project Sudoku (*trollface*)

<SCRIPTS>
Zelda Map Scrolling - Switch Post Caricamento - Messaggi Istantanei - Picture Manager - Minimalist Menu

<TUTORIAL>
Uso corretto acqua RTP - Creare un menu ad eventi


    -Akm-
  • Utente avanzato

  • Utenti
  • Rens: 7
  • 0
  • StellettaStellettaStelletta
  • 420 messaggi
  • Sesso:Maschio
  • Provenienza:Genova
  • Abilitā:Esperto

#5 Inviato 17 October 2014 - 16:30 PM

Guardian, purtroppo in molti casi il ciclo è un obbligo, permette di aggirare il bug dell'input trigger, almeno, a me con le label non funziona ma con il ciclo si.

    Guardian of Irael
  • Coniglietto Rosso

  • Rpg˛S Admin
  • Rens: 195
  • 19
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 58413 messaggi
  • Sesso:Maschio
  • Provenienza:Bagnaia (Viterbo)
  • Abilitā:Apprendista


#6 Inviato 17 October 2014 - 17:31 PM

Bug dell'input trigger? ^ ^


(\_/)
(^ ^) <----coniglietto rosso, me!     
(> <)

 
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
 
KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^
 
FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^  
 
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

Spoiler


    Morshudiego
  • Alex (Rm2k)

  • Utenti
  • Rens: 48
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 838 messaggi
  • Sesso:Maschio
  • Abilitā:Esperto

#7 Inviato 18 October 2014 - 10:51 AM

Bug dell'input trigger? ^ ^

In poche parole:
- la normale condizione SE "TASTO è premuto" di RPG Maker equivale al codice "Input.press?(:TASTO)"
- "Input.press?(:TASTO)" ritorna valore true anche se il tasto continua a rimanere premuto.
- Esiste un altro codice "Input.trigger?(:TASTO)" Che ritorna true quando il tasto è premuto ma NON quando il tasto rimane premuto.
- Se il codice "Input.trigger?(:TASTO)" viene messo in un processo parallelo, stranamente non riconoscerà sempre la pressione del tasto (bisognerà premere il pulsante 4-5 volte e sperare che lo pigli).
- Il bug sembra attenuarsi con il metodo di -Akm- (ovvero: condizione dentro un loop con "aspetta 1 frame")

Succodipera: Il blog di Morshudiego su RPG Maker (Leggetelo, lì ci sono più aggiornamenti che sulla firma!)
 
<AGGIORNAMENTI> (Ultima modifica: Oct 30 2014)
Myth of First Star - Facendo il punto della situazione
Project Sudoku - Il multitasking non è il mio forte. XD (Spero comunque di risolvere il bug per rilasciare la 0.3 :P)
Tutorial Menu Eventi - Uscita parte 2 (però è malformattata, non so se riuscirò ad editare tutto in un giorno. Abbiate pasiensa :P)

<PROGETTI>
Myth of First Star - Project Sudoku (*trollface*)

<SCRIPTS>
Zelda Map Scrolling - Switch Post Caricamento - Messaggi Istantanei - Picture Manager - Minimalist Menu

<TUTORIAL>
Uso corretto acqua RTP - Creare un menu ad eventi


    Guardian of Irael
  • Coniglietto Rosso

  • Rpg˛S Admin
  • Rens: 195
  • 19
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 58413 messaggi
  • Sesso:Maschio
  • Provenienza:Bagnaia (Viterbo)
  • Abilitā:Apprendista


#8 Inviato 18 October 2014 - 11:37 AM

Ah capisco... ma non c'era un'altro oltre al trigger di codice che diceva quando effettivamente rimaneva premuto? E perché deve rimanere premuto per un menù? ° °


(\_/)
(^ ^) <----coniglietto rosso, me!     
(> <)

 
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
 
KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^
 
FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^  
 
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

Spoiler


    Morshudiego
  • Alex (Rm2k)

  • Utenti
  • Rens: 48
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 838 messaggi
  • Sesso:Maschio
  • Abilitā:Esperto

#9 Inviato 18 October 2014 - 11:49 AM

C'è anche Input.repeat?(:TASTO), che è un po' un miscuglio.

E perché deve rimanere premuto per un menù? ° °

Appunto, per un menu non voglio che mi legga anche quando il tasto rimane premuto, se no il cursore mi diventa Sonic. XD
Per questo si usa l'input trigger per i comandi del menu.

Succodipera: Il blog di Morshudiego su RPG Maker (Leggetelo, lì ci sono più aggiornamenti che sulla firma!)
 
<AGGIORNAMENTI> (Ultima modifica: Oct 30 2014)
Myth of First Star - Facendo il punto della situazione
Project Sudoku - Il multitasking non è il mio forte. XD (Spero comunque di risolvere il bug per rilasciare la 0.3 :P)
Tutorial Menu Eventi - Uscita parte 2 (però è malformattata, non so se riuscirò ad editare tutto in un giorno. Abbiate pasiensa :P)

<PROGETTI>
Myth of First Star - Project Sudoku (*trollface*)

<SCRIPTS>
Zelda Map Scrolling - Switch Post Caricamento - Messaggi Istantanei - Picture Manager - Minimalist Menu

<TUTORIAL>
Uso corretto acqua RTP - Creare un menu ad eventi


    Guardian of Irael
  • Coniglietto Rosso

  • Rpg˛S Admin
  • Rens: 195
  • 19
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 58413 messaggi
  • Sesso:Maschio
  • Provenienza:Bagnaia (Viterbo)
  • Abilitā:Apprendista


#10 Inviato 18 October 2014 - 12:32 PM

Dovrebbe attenuarsi anche con un aspetta fuori dal loop, cioè senza loop.

^ ^


(\_/)
(^ ^) <----coniglietto rosso, me!     
(> <)

 
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
 
KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^
 
FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^  
 
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

Spoiler


    Kingartur2
  • Arshes (RmXP)

  • Vincitore Lotteria
  • Rens: 154
  • 0
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 1597 messaggi
  • Sesso:Maschio
  • Provenienza:Nave Madre Aliena
  • Abilitā:Maestro

#11 Inviato 19 October 2014 - 00:02 AM

Sul progetto che facevo per lo short contest(in questi giorni lo adatto e lo pubblico, avevo fatto un bel po di lavoro, magari può servire a qualcuno), visto che non potevo usare script e per far si che venisse letto l'input una sola volta usavo uno switch. Quando premevi il tasto faceva quello che doveva fare e poi lo attivava, l'evento non ripartiva se lo switch era attivo e lo switch si disattivava quando il tasto non era premuto, un pò rude ma funzionale xD.

 

Poi solo una cosa, sarò anch'io che in queste cose ho un complesso, ma l'evento "Pulsante Menu" e "Apri Menu" non avrebbe più senso farli tutto in uno? Alla fine il primo l'unica che fa è richiamare il secondo xD


Per qualsiasi motivo non aprite questo spoiler.
Spoiler

Immagine inserita

 

Immagine inserita


    Morshudiego
  • Alex (Rm2k)

  • Utenti
  • Rens: 48
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 838 messaggi
  • Sesso:Maschio
  • Abilitā:Esperto

#12 Inviato 19 October 2014 - 08:32 AM

Sul progetto che facevo per lo short contest(in questi giorni lo adatto e lo pubblico, avevo fatto un bel po di lavoro, magari può servire a qualcuno), visto che non potevo usare script e per far si che venisse letto l'input una sola volta usavo uno switch. Quando premevi il tasto faceva quello che doveva fare e poi lo attivava, l'evento non ripartiva se lo switch era attivo e lo switch si disattivava quando il tasto non era premuto, un pò rude ma funzionale xD.

Esatto, nella parte 1bis spiegherò appunto come usare gli switch per creare questo effetto qui, che a mio parere funziona anche meglio perché gli input vengono registrati subito e sono gestiti bene. :)

Poi solo una cosa, sarò anch'io che in queste cose ho un complesso, ma l'evento "Pulsante Menu" e "Apri Menu" non avrebbe più senso farli tutto in uno? Alla fine il primo l'unica che fa è richiamare il secondo xD

In effetti si possono unire, ma ho deciso apposta di separarli. Nella guida ci saranno tante cose non ottimizzate che gli utenti esperti mi tireranno addosso pomodori, però il mio obiettivo è quello di far comprendere al lettore la meccanica del menu (Cosa succede quando apro il menu, quando uso un oggetto, quando diminuiscono gli hp, ecc.) e per farlo ho deciso di spezzare in tanti CE tutte le varie cose, così che se voglio modificare qualcosa non devono stare a cercare in millemila righe di evento. :P

Succodipera: Il blog di Morshudiego su RPG Maker (Leggetelo, lì ci sono più aggiornamenti che sulla firma!)
 
<AGGIORNAMENTI> (Ultima modifica: Oct 30 2014)
Myth of First Star - Facendo il punto della situazione
Project Sudoku - Il multitasking non è il mio forte. XD (Spero comunque di risolvere il bug per rilasciare la 0.3 :P)
Tutorial Menu Eventi - Uscita parte 2 (però è malformattata, non so se riuscirò ad editare tutto in un giorno. Abbiate pasiensa :P)

<PROGETTI>
Myth of First Star - Project Sudoku (*trollface*)

<SCRIPTS>
Zelda Map Scrolling - Switch Post Caricamento - Messaggi Istantanei - Picture Manager - Minimalist Menu

<TUTORIAL>
Uso corretto acqua RTP - Creare un menu ad eventi


    Morshudiego
  • Alex (Rm2k)

  • Utenti
  • Rens: 48
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 838 messaggi
  • Sesso:Maschio
  • Abilitā:Esperto

#13 Inviato 20 October 2014 - 17:09 PM

Parte 1bis: Costruisciti da solo il tuo Input Trigger!


Era già tutto pronto per creare la parte 2 del tutorial, ma come al solito spuntano determinati bug che ti costringono a fare il giro lungo per ottenere quello che vuoi. E quindi... Cominciamo!
 
Punto 1 - Input che!?
Per i meno esperti questo termine potrebbe portare confusione. Forse sanno cos'è un input, ovvero la pressione di un tasto (come ad esempio le frecce) per compiere determinate cose. Però quello che molto spesso non sanno è che vi sono tipi differenti di Input.
Parlando nel caso specifico di RPG Maker, il programma può riconoscere 3 tipi di input:
Press: Il più semplice, nonché il predefinito della condizione SE "Tasto è premuto". Se il tasto è premuto, l'input si rivela vero. Se il tasto non è premuto, l'input si rivela falso.
Trigger: Un pochino più complesso. L'input si rivelerà vero solo nel MOMENTO in cui noi premiamo il tasto, rivelandosi quindi falso se il pulsante rimanesse premuto ulteriormente. Questo è il tipo di input che ci serve.
Repeat: Non verrà implementato in questa parte, ma è giusto che sappiate che esiste. In poche parole il tipo di l'input cambierà da Trigger a Press dopo che il pulsante rimane premuto per qualche decimo di secondo.
 
Parte 2: La realizzazione
Prima cosa da fare è definire gli switch. Ce ne serviranno due per ogni pulsante di gioco. I pulsanti sono 12 (SU, GIU, DESTRA, SINISTRA, A, B, C, X, Y, Z, L, R), per cui avremmo bisogno di 24 switch differenti.
 
[Switch: Pagina 1]
[0003:SU_PRESS]
[0004:SU_TRIGGER]
[0005:GIU_PRESS]
[0006:GIU_TRIGGER]
[0007:SINISTRA_PRESS]
[0008:SINISTRA_TRIGGER]
[0009:DESTRA_PRESS]
[0010:DESTRA_TRIGGER]
[0011:A_PRESS]
[0012:A_TRIGGER]
[0013:B_PRESS]
[0014:B_TRIGGER]
[0015:C_PRESS] 
(come l'albero)
[0016:C_TRIGGER]
[0017:X_PRESS] 
(come il caffè)
[0018:X_TRIGGER]
[0019:Y_PRESS]
[0020:Y_TRIGGER]

 
[Switch: Pagina 2]
[0021:Z_PRESS]
[0022:Z_TRIGGER]
[0023:L_PRESS]
[0024:L_TRIGGER]
[0025:R_PRESS] 
(come la rabbia... Ok la smetto)
[0026:R_TRIGGER]
 
Forse vi chiederete se tutti questi pulsanti sono necessari. Beh forse non subito, ma è meglio levarsi questo lavoraccio adesso così da non farlo dopo giusto?
Ora creiamo l'evento comune 5, lo chiamiamo "Lettura Input" e incominciamo a smanettarci dentro!

Cominciamo col primo tasto: Il tasto SU. La prima cosa da fare è creare una normale condizione SE:

 

[005: Lettura Input] [Trigger: none]

@>Conditional Branch: The Up Button is Being Pressed

@>

Else

@>

Branch End

@>

 

Nel ramo relativo ad Else, spegnamo le due switch relative al pulsante.

 

[005: Lettura Input] [Trigger: none]

@>Conditional Branch: The Up Button is Being Pressed

@>

Else

@>Control Switches: [0003:SU_PRESS] = OFF

@>Control Switches: [0004:SU_TRIGGER] = OFF

@>

: Branch End

@>

 

Dentro la condizione, invece, andremo a mettere un'altra condizione: "Se la switch 3 è ON" (Che equivale a chiedere: Il pusante SU è rimasto premuto?)

 

[005: Lettura Input] [Trigger: none]

@>Conditional Branch: The Up Button is Being Pressed

@>Conditional Branch: Switch [0003:SU_PRESS] == ON

@>

Else

@>

Branch End

@>

: Else

@>Control Switches: [0003:SU_PRESS] = OFF

@>Control Switches: [0004:SU_TRIGGER] = OFF

@>

: Branch End

@>

 

Se la condizione è vera, il trigger non deve attivarsi. Per cui porteremo la switch 4 OFF. Mentre se la condizione è falsa (ovvero il pulsante viene premuto la prima volta) si devono attivare sia il trigger che il press.
 

[005: Lettura Input] [Trigger: none]

@>Conditional Branch: The Up Button is Being Pressed

@>Conditional Branch: Switch [0003:SU_PRESS] == ON

@>Control Switches: [0004:SU_TRIGGER] = OFF

@>

Else

@>Control Switches: [0003:SU_PRESS] = ON

@>Control Switches: [0004:SU_TRIGGER] = ON

@>

Branch End

@>

: Else

@>Control Switches: [0003:SU_PRESS] = OFF

@>Control Switches: [0004:SU_TRIGGER] = OFF

@>

: Branch End

@>

 

Ecco qua, il pulsante SU è finito! Ora ripetiamo il lavoro con tutti i 12 pulsanti (e i loro relativi switch) ed abbiamo ottenuto il nostro input trigger perfettamente funzionante!

 

Punto 3 - L'implementazione

Ora che abbiamo ottenuto il nostro Input trigger vogliamo implementarlo nel nostro menu, giusto? Per implementarlo dobbiamo andare nel CE Dentro Menu e chiamare il CE Lettura Menu, dopodiché bisogna cambiare la condizione SE "Tasto B e premuto" con la condizione SE "Switch B_TRIGGER ON"

 

[003: Dentro Menu] [Trigger: None]

@>Loop

@>Set Move Route: Player

: $>Wait: 1 frame(s)

@>Call Common Event: [Lettura Input]

@>Conditional Branch: Switch [0014:B_TRIGGER] == ON

@>Break Loop

@>

Branch End

@> Wait 1 frame(s)

@>

: Repeat Above

@>Call Common Event: [Chiudi Menu]

@>

 

Ed ecco fatto! Ora è implementato e perfettamente funzionante.

 

Punto 4 - Risoluzione Bug

1) Nel Set Move Route presente in Dentro Menu impostate il numero di frames su 999. Questo farà stare il giocatore fermo anche quando il menu dovrà far girare codici più lunghi.
2) Nel CE Chiudi Menu, dopo lo spegnimento dello switch del menu, inserite un Set Move Route sempre per il player, ma completamente vuoto e senza tic. Questo permetterà di sbloccare il giocatore una volta chiuso il menu.

NELLA PROSSIMA PARTE:

Finalmente incominceremo a dare una parte grafica del menu! Incominceremo ad aprirlo, chiuderlo e a muoverci il cursore.
 

Grazie della lettura e alla prossima puntata!

 

PS: Scusate se le parti escono a periodi così lunghi, ma purtroppo sono un essere umano anche io e ho le mie cosucce da fare. :P

Vi chiedo di avere pazienza, soprattutto se la data della prossima parte non fosse ancora stata segnalata. Posso garantirvi che comunque verranno segnalate con largo anticipo e solo quando le avrò completate offline (senza paure quindi di arrivare alla data segnalata per poi sentirsi dire che devo rimandare. v.v)


Modificato da Morshudiego, 20 October 2014 - 17:11 PM.

Succodipera: Il blog di Morshudiego su RPG Maker (Leggetelo, lì ci sono più aggiornamenti che sulla firma!)
 
<AGGIORNAMENTI> (Ultima modifica: Oct 30 2014)
Myth of First Star - Facendo il punto della situazione
Project Sudoku - Il multitasking non è il mio forte. XD (Spero comunque di risolvere il bug per rilasciare la 0.3 :P)
Tutorial Menu Eventi - Uscita parte 2 (però è malformattata, non so se riuscirò ad editare tutto in un giorno. Abbiate pasiensa :P)

<PROGETTI>
Myth of First Star - Project Sudoku (*trollface*)

<SCRIPTS>
Zelda Map Scrolling - Switch Post Caricamento - Messaggi Istantanei - Picture Manager - Minimalist Menu

<TUTORIAL>
Uso corretto acqua RTP - Creare un menu ad eventi


    Morshudiego
  • Alex (Rm2k)

  • Utenti
  • Rens: 48
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 838 messaggi
  • Sesso:Maschio
  • Abilitā:Esperto

#14 Inviato 30 October 2014 - 15:25 PM

DISCLAIMER: Sto ancora editando per aggiustare i disastri che il copia-incolla causa. Il tutorial sarà pronto quando questa parte iniziale verrà eliminata. :)


Parte 2: Toh un menu!

- "Morshu, sveglia!"
- "...uh? Che c'è?"
- "È giovedì!"
- "...E quindi?"
- "E quindi!? La parte due!"
- "... la parte due di che? Di cosa stai parl-ODDIO È VERO."
 
...Evviva la mia memoria. XD

Punto 1: Oh no... grafica. ç_ç
Questa parte da alcuni viene considerata un piacere, da altri una tortura. E io faccio parte del secondo gruppo. Ma qui non si insegna come creare un menu con grafica bella, si insegna come creare un menu che funziona.
Quindi in questo tutorial useremo una grafica molto banale ma che permetterà comunque di ottenere l'effetto desiderato. Ve la metto in spoiler così potete scaricarla. Vi ricordo che queste immagini vanno messe nella cartella Graphics/Pictures del vostro progetto.

Spoiler

 

Punto 2: Realizzazione
Per la parte grafica avremo bisogno di 3 eventi comuni: uno che crea la grafica, uno che la cancella e uno che la aggiorna. Per differenziarli dagli altri "principali", li chiameremo con un > iniziale e con le parole tutte minuscole.
 
[006: > crea grafica] [Trigger: none]
[007: > cancella grafica] [Trigger: none]
[008: > aggiorna grafica] [Trigger: none]

 
Iniziamo con > crea grafica. Quello che vogliamo fare è creare l'immagine del menu e l'immagine del cursore, quindi useremo i comandi Show Picture.
 
[006: > crea grafica] [Trigger: none]
@>
Show Picture: 1, 'mainmenu_base', Upper Left (0,0), (100%,100%), 255, Normal
@>Show Picture: 2, 'mainmenu_cursor', Upper Left (8,8), (100%,100%), 255, Normal
@>
 
Ora passiamo al > cancella grafica. Qui è molto semplice: c'è solo da cancellare le picture utilizzate in > crea grafica.
 
[007: > cancella grafica] [Trigger: none]
@>Erase Picture: 1
@>Erase Picture: 2
@>

 
Infine passiamo a > aggiorna grafica. Ci sono due modi per realizzarlo: a coordinate fisse (più semplice ma più lungo) o a cordinate variabili (più complicato ma più breve). Per amor dei neofiti facciamo quello più semplice (così vi fate anche le ossa su cosa vuol dire programmare gli eventi lunghi >:D)
Prima di tutto abbiamo bisogno di una variabile, che chiameremo "MENU_cursore"
 
[Variabili: Pagina 1]
[0001:MENU_cursore]

 
Poi dobbiamo creare tante condizioni SE quante sono le opzioni del menu (in questo caso, 6)
 
[008: > aggiorna grafica] [Trigger: none]
@>Conditional Branch: Variable [0001:MENU_cursore] == 1

@>

: Branch End
@>Conditional Branch: Variable [0001:MENU_cursore] == 2

@>

: Branch End
@>Conditional Branch: Variable [0001:MENU_cursore] == 3

@>

: Branch End
@>Conditional Branch: Variable [0001:MENU_cursore] == 4

@>

: Branch End
@>Conditional Branch: Variable [0001:MENU_cursore] == 5

@>

: Branch End
@>Conditional Branch: Variable [0001:MENU_cursore] == 6

@>

: Branch End
@>

 
Infine dentro ogni condizione SE metteremo le nuove coordinate del cursore. La sua Y di partenza è 8, e i comandi sono alti 16, per cui dobbiamo aumentare la Y di 16 per ogni comando che abbiamo.
 
[008: > aggiorna grafica] [Trigger: none]
@>Conditional Branch: Variable [0001:MENU_cursore] == 1
@>Show Picture: 2, 'mainmenu_cursor', Upper Left (8,8), (100%,100%), 255, Normal
@>
: Branch End
@>Conditional Branch: Variable [0001:MENU_cursore] == 2
@>Show Picture: 2, 'mainmenu_cursor', Upper Left (8,24), (100%,100%), 255, Normal
@>
: Branch End
@>Conditional Branch: Variable [0001:MENU_cursore] == 3
@>Show Picture: 2, 'mainmenu_cursor', Upper Left (8,40), (100%,100%), 255, Normal
@>
: Branch End
@>Conditional Branch: Variable [0001:MENU_cursore] == 4
@>Show Picture: 2, 'mainmenu_cursor', Upper Left (8,56), (100%,100%), 255, Normal
@>
: Branch End
@>Conditional Branch: Variable [0001:MENU_cursore] == 5
@>Show Picture: 2, 'mainmenu_cursor', Upper Left (8,72), (100%,100%), 255, Normal
@>
: Branch End
@>Conditional Branch: Variable [0001:MENU_cursore] == 6
@>Show Picture: 2, 'mainmenu_cursor', Upper Left (8,88), (100%,100%), 255, Normal
@>
: Branch End
@>

 
Punto 3: Implementazione
 
La prima cosa da fare per implementare la grafica è chiamare gli eventi > crea grafica e > cancella grafica rispettivamente in Apri Menu e Chiudi Menu.
 
[002: Apri Menu] [Trigger: none]
@>Control Switches: [0002:Menu Aperto] = ON
@>Call Common Event: [> crea grafica]
@>Call Common Event: [Dentro Menu]
@>
 
[004: Apri Menu] [Trigger: none]
@>Call Common Event: [> crea grafica]
@>Control Switches: [0002:Menu Aperto] = OFF
@>Set Move Route: Player
@>

 
Dopodiché dobbiamo creare un altro evento comune "> esegui azione", che eseguirà ogni input che il giocatore premerà. Al momento ci serve comandare i tasti SU e GIU.
 
[009: > esegui azione] [Trigger: none]
@>Conditional Branch: Switch [0004:SU_TRIGGER] == ON
@>
: Branch End
@>Conditional Branch: Switch [0006:GIU_TRIGGER] == ON
@>
: Branch End
@>

 
Con GIU aumenteremo la variabile MENU_cursore di 1, mentre con SU la diminuiremo di 1. Per impedire di andare oltre il numero di comandi che abbiamo, mettiamo delle condizioni SE che impediscano di muovere il cursore se la variabile ha un certo valore (più specificatamente, il valore minimo (1) per SU e il valore massimo (6) per giù.
Dopodiché aumentiamo la variabile e aggiorniamo la grafica.
 
[009: > esegui azione] [Trigger: none]
@>Conditional Branch: Switch [0004:SU_TRIGGER] == ON
@>Conditional Branch: Variable [0001:MENU_cursore] > 1
@>Control Variables: [0001:MENU_cursore] -= 1
@>Call Common Event: [> aggiorna grafica]
@>
: Branch End
@>
: Branch End
@>Conditional Branch: Switch [0006:GIU_TRIGGER] == ON
@>Conditional Branch: Variable [0001:MENU_cursore] < 6
@>Control Variables: [0001:MENU_cursore] += 1
@>Call Common Event: [> aggiorna grafica]
@>
: Branch End
@>
: Branch End
@>

 
Ora l'ultima cosa da fare è chiamare questo evento comune in Dentro Menu, così da rendere attivi i pulsanti.
 
[003: Dentro Menu] [Trigger: none]
@>Loop
@>Set Move Route: Player
: :$>Wait: 999 frame(s)
@>Call Common Event: [Lettura Input]
@>Call Common Event: [> esegui azione]
@>Conditional Branch: Switch [0014:B_TRIGGER] == ON
@>Break Loop
@>
: Branch End
@>Wait 1 frame(s)
@>
: Repeat Above
@>Call Common Event: [Chiudi Menu]
@>

 
Perfetto! Ora il menu è funzionante e pronto per essere espanso nelle varie categorie!
 
NELLA PROSSIMA PARTE
Nella prossima parte vedremo come realizzare un menù oggetti molto semplice ma efficace!
 
Grazie della lettura e alla prossima puntata!


Modificato da Morshudiego, 30 October 2014 - 15:47 PM.

Succodipera: Il blog di Morshudiego su RPG Maker (Leggetelo, lì ci sono più aggiornamenti che sulla firma!)
 
<AGGIORNAMENTI> (Ultima modifica: Oct 30 2014)
Myth of First Star - Facendo il punto della situazione
Project Sudoku - Il multitasking non è il mio forte. XD (Spero comunque di risolvere il bug per rilasciare la 0.3 :P)
Tutorial Menu Eventi - Uscita parte 2 (però è malformattata, non so se riuscirò ad editare tutto in un giorno. Abbiate pasiensa :P)

<PROGETTI>
Myth of First Star - Project Sudoku (*trollface*)

<SCRIPTS>
Zelda Map Scrolling - Switch Post Caricamento - Messaggi Istantanei - Picture Manager - Minimalist Menu

<TUTORIAL>
Uso corretto acqua RTP - Creare un menu ad eventi


    Bowl95
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 32 messaggi
  • Sesso:Maschio
  • Provenienza:Manfredonia, FG
  • Abilitā:Novizio

#15 Inviato 14 March 2015 - 11:40 AM

Ma questo progetto è stato abbandonato? io nn l'ho seguito piu perche mi sono distaccato per un periodo sia da rpg maker che dal forum... troppe cose da fare tra esami e roba varia.... e poi creare un gioco da solo dopo un po scoccia(fare mappe, eventi, storia, dialoghi e voler fare tante altre cose da solo è troppo... ma purtroppo questo è xD)

era carina come cosa, e avrei voluto davvero vederne gli sviluppi...



    Retrolexip
  • Nuovo Arrivato

  • Utenti
  • Rens: 6
  • 0
  • Stelletta
  • 57 messaggi
  • Sesso:Maschio
  • Abilitā:Novizio

#16 Inviato 14 March 2015 - 16:43 PM

Potresti provare a inviargli un MP, anche se guardando il suo ultimo accesso mi sembra non logghi da mesi.


~ Lex, l'amichevole omino pixelloso di quartiere!


    arkady18
  • Alex (Rm2k)

  • Utenti
  • Rens: 119
  • 4
  • StellettaStellettaStellettaStellettaStelletta
  • 1309 messaggi
  • Sesso:Maschio
  • Abilitā:Iniziato

#17 Inviato 14 March 2015 - 20:54 PM

Psst: non ho seguito il progetto, né mi sono letto tutta la spiegazione, ma non mi convince questo passaggio:

 

[003: Dentro Menu] [Trigger: None]
@>Loop

@>Set Move Route: Player

: $>Wait: 1 frame(s)

@>Conditional Branch: The B Button is Being Pressed

@>Break Loop

@>

Branch End

@> Wait 1 frame(s)

@>

Repeat Above
@>Call Common Event: [Chiudi Menu]
@>

A parte che mi pare di capire che qui si stiano per usare anche troppi eventi comuni solo per aprire il menu, ma magari mi sbaglio (come ho già detto, non ho letto tutto), trovo improprio lo stratagemma del dare il comando wait/aspetta all'eroe per bloccarne il movimento mentre il menu è aperto. La scelta in sé già non mi convince, ma soprattutto se si mette in pausa SOLO l'eroe tutto il resto continua a muoversi. Avevo fatto esperimenti con il 2000 e ho notato che basta mettere l'evento comune per l'apertura del menu come evedo ad Inizio Automatico (richiamabile da una switch alla pressione di Esc) e mettere tutti gli altri eventi comuni del menu in processi paralleli; così facendo saranno attivi solo gli eventi del menu e tutto il mondo di gioco si congela fino al termine dell'evento a Inizio Automatico.

Per intenderci, avevo abbozzato 'sta roba qua (si può aprirla con rpgmaker2000 o 2003 volendo): http://www.mediafire.../Prove Menu.rar

Come si può vedere, il personaggio che ti insegue si blocca quando si apre il menu.

 

E ho aggiunto i miei due centesimiXD


A me piace moltissimo il pesciolino rosso del banner del 1 Aprile!

 

r2s_regali3s.png


    Ste
  • SpaccaUova

  • Rpg˛S Mod
  • Rens: 200
  • 4
  • StellettaStellettaStellettaStellettaStelletta
  • 1351 messaggi
  • Sesso:Maschio
  • Provenienza:Italy
  • Abilitā:Maestro


#18 Inviato 15 March 2015 - 14:12 PM

Yep, si può fare anche così!
Il punto è che non esiste solo un modo per creare un menu ad eventi, ce ne sono mille xD
Poi quale sia il migliore però, non saprei :0

    Super015
  • Utente avanzato

  • Utenti
  • Rens: 22
  • 0
  • StellettaStellettaStelletta
  • 258 messaggi
  • Sesso:Maschio
  • Provenienza:Reggio Emilia
  • Abilitā:Adepto

#19 Inviato 15 March 2015 - 17:03 PM

Io ho creato un menù ad eventi, solo che il metodo che ho utilizzato è completamente diverso e mooolto più corto!

 

L'unica cosa è che sfrutta lo script delle scelte multiple, multiple xD


Modificato da Super015, 15 March 2015 - 17:04 PM.





  • Feed RSS