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


  • Si prega di effettuare il log in prima di rispondere
Gestione scena con cambio mappa - - - - -

    ickh
  • Alex (Rm2k)

  • Utenti
  • Rens: 54
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 917 messaggi
  • Sesso:Maschio
  • Abilitā:Adepto

#1 Inviato 26 June 2020 - 19:42 PM

Salvia,

chiedo il vostro aiuto per questo problema.

 

Immaginate una classica scena in cui il personaggio principale (Player) parla con un altro personaggio (NPC).

Alla fine del dialogo l'NPC si allontana dal Player e va per la sua strada a fare altro.

Quando l'NPC si allontana, il Player può muoversi liberamente.

 

Fin qui niente di strano, alla fine del dialogo attivo uno (self)switch e creo una pagina in processo parallelo per l'NPC che si allontana. Quando l'NPC è arrivato dove deve arrivare, attivo un altro (self)switch a fondo pagina per farlo stare in posizione.

 

Il problema nasce quando l'NPC deve fare parecchia strada per andare a posizionarsi e nel frattempo il Player esce dalla mappa.

Siccome l'NPC non ha completato il suo cammino, non si sarà attivato lo switch a fondo pagina che quindi al rientro del Player verrà eseguita di nuovo.

 

Ora, la cosa si potrebbe risolvere facilmente attivando uno switch (o impostando una variabile) all'inizio del processo parallelo, cioè appena l'NPC comincia ad allontanarsi. Quando il Player esce dalla mappa, controllo se lo switch è attivo e agisco di conseguenza.

 

A questo punto però il vero problema è che questa soluzione è una gran p...izza, perché dovrei fare questo controllo in ogni evento di uscita della mappa.

 

Siccome quando vedo codice duplicato mi sanguinano gli occhi, avrei anche trovato un modo per centralizzare la cosa con un evento comune, ma a parte questo volevo chiedere a voi se questa è l'unica soluzione o se ci sono altri metodi che non mi vengono in mente...

 


Giochi completi

----------------------------------------------------------------------------------------------------------------------------------------

rha2Trr.png

[SHORT] ELYON 5 --> http://www.rpg2s.net...15full-elyon-5/

 

Progetti in corso

----------------------------------------------------------------------------------------------------------------------------------------

5KdJ3fW.png

White Crow --> http://www.rpg2s.net...845-white-crow/


    Testament
  • Maestro del Bosco delle Uova

  • Utenti Speciali
  • Rens: 1063
  • 36
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 11655 messaggi
  • Sesso:Maschio
  • Provenienza:Firenze
  • Abilitā:Esperto


#2 Inviato 26 June 2020 - 21:07 PM

Mah, onestamente, farei 

- O un'attesa finché il PNG non è nella sua posizione finale, rendendo solo in quel momento il controllo al giocatore.

- O, nel  caso la scena sia lunga, come in questo caso, la taglierei, farei un fade to black e poi pam il png è in posizione a farsi i cavoli suoi e posso muovermi.

- Oppure sì, attivo lo switch nell'evento di trasporto fuori dalla mappa, in modo che se esco dalla stessa, il png viene automaticamente piazzato al suo posto, o meglio l'evento fino ad allora invisibile in posizione finale si attiva e quello che camminava sparisce nell'oblio della dimenticanza.

 

Poi copia incolla su tutti gli evento di uscita.


183.png
donatePQ.gif bYridanSiBEi27EwrQBOKvYB04IgpCwL27xIfmrh FBnono.gif


    Killveran89
  • Utente avanzato

  • Rpg˛S Staff
  • Rens: 78
  • 0
  • StellettaStellettaStelletta
  • 362 messaggi
  • Sesso:Maschio
  • Abilitā:Adepto

#3 Inviato 27 June 2020 - 16:12 PM

Potresti usare un doppio switch per verificare se quando rientri nella mappa il primo dialogo è gia accaduto, e quindi posizioni il personaggio alla posizione desiderata.

Considerando che se leghi la cosa solo ad un self switch dovrai sempre attivare il teletrasporto per posizionare l'evento alla pagina giusta, farei:

Codice pagina post dialogo: (in parallelo)
If sw-Abbiamo parlato = on
Sw-in posizione = on
Else
Sw-Abbiamo parlato = on
...
//percorso
...
Sw-in posizione = on


Confizione su pagina evento: sw-in posizione

Se in posizione = on:
pagina vuota nell'evento del dialogo,
pagina attiva evento in nuova posizione.
Immagine inseritaImmagine inserita
__________________________________________________________________________________________________________

Immagine inserita

Spoiler

    ickh
  • Alex (Rm2k)

  • Utenti
  • Rens: 54
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 917 messaggi
  • Sesso:Maschio
  • Abilitā:Adepto

#4 Inviato 27 June 2020 - 19:23 PM

Mah, onestamente, farei 

- O un'attesa finché il PNG non è nella sua posizione finale, rendendo solo in quel momento il controllo al giocatore.

- O, nel  caso la scena sia lunga, come in questo caso, la taglierei, farei un fade to black e poi pam il png è in posizione a farsi i cavoli suoi e posso muovermi.

 

Questa è la via facile che però non mi piace. Va benissimo in una scena di intermezzo, dove il giocatore non ha il controllo, ma in questo caso vorrei che il giocatore potesse muoversi liberamente.

 

 

 

- Oppure sì, attivo lo switch nell'evento di trasporto fuori dalla mappa, in modo che se esco dalla stessa, il png viene automaticamente piazzato al suo posto, o meglio l'evento fino ad allora invisibile in posizione finale si attiva e quello che camminava sparisce nell'oblio della dimenticanza.

 

Poi copia incolla su tutti gli evento di uscita.

 

Esatto, è quello che ho pensato io. È quel "copia incolla su tutti gli eventi di uscita" che vorrei evitare...

 

 

Potresti usare un doppio switch per verificare se quando rientri nella mappa il primo dialogo è gia accaduto, e quindi posizioni il personaggio alla posizione desiderata.

Considerando che se leghi la cosa solo ad un self switch dovrai sempre attivare il teletrasporto per posizionare l'evento alla pagina giusta, farei:

Codice pagina post dialogo: (in parallelo)
If sw-Abbiamo parlato = on
Sw-in posizione = on
Else
Sw-Abbiamo parlato = on
...
//percorso
...
Sw-in posizione = on


Confizione su pagina evento: sw-in posizione

Se in posizione = on:
pagina vuota nell'evento del dialogo,
pagina attiva evento in nuova posizione.

 

L'idea è quella giusta. Purtroppo però al primo rientro nella mappa "sw-in posizione" sarà ancora off e quindi per un attimo vedrò ancora l'evento nella posizione iniziale...


Modificato da ickh, 27 June 2020 - 19:23 PM.

Giochi completi

----------------------------------------------------------------------------------------------------------------------------------------

rha2Trr.png

[SHORT] ELYON 5 --> http://www.rpg2s.net...15full-elyon-5/

 

Progetti in corso

----------------------------------------------------------------------------------------------------------------------------------------

5KdJ3fW.png

White Crow --> http://www.rpg2s.net...845-white-crow/


    Killveran89
  • Utente avanzato

  • Rpg˛S Staff
  • Rens: 78
  • 0
  • StellettaStellettaStelletta
  • 362 messaggi
  • Sesso:Maschio
  • Abilitā:Adepto

#5 Inviato 27 June 2020 - 21:44 PM

L'idea è quella giusta. Purtroppo però al primo rientro nella mappa "sw-in posizione" sarà ancora off e quindi per un attimo vedrò ancora l'evento nella posizione iniziale...

Eh si, questo dipende dalla posizione iniziale dell'evento, ho dato per scontato che fosse abbastanza lontano dal teletrasporto per essere fuori dallo schermo...

Se non riesci a giocartela di mapping potresti provare a personalizzare il fade-in della mappa, dove prima ti tornare alla tonalità schermo corretta verifichi le condizioni, senza farlo fare direttamente all'evento.

Oppure, alternativa al volo:
Finito il dialogo posizioni l'evento "destinazione" sopra quello "dialogo" e fai fare l'operazione (ceck + movimento) a lui.
La differenza è che con il controllo degli switch ricaricando la mapppa non lo fai più muovere, ma gli dici di restare al suo posto, cioè la destinazione.

Potrebbe servire uno switch in più per gestire tutte le fasi del dialogo
1 fine dialogo,
2 trasporto->trasparenza->percorso,
3 arrivo
Oppure una variabile che aumenta di fase in fase

Così dovrebbe funzionare, se sincronizza bene tempi, chara e direzioni non si dovrebbero vedere differenze.

E anche se la "destinazione" è vicina ad un teletrasporto non hai problemi ;D
Immagine inseritaImmagine inserita
__________________________________________________________________________________________________________

Immagine inserita

Spoiler

    ickh
  • Alex (Rm2k)

  • Utenti
  • Rens: 54
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 917 messaggi
  • Sesso:Maschio
  • Abilitā:Adepto

#6 Inviato 28 June 2020 - 21:05 PM

Questo è interessante.

Provo e ti faccio sapere!

Thanks  :smileright:


Giochi completi

----------------------------------------------------------------------------------------------------------------------------------------

rha2Trr.png

[SHORT] ELYON 5 --> http://www.rpg2s.net...15full-elyon-5/

 

Progetti in corso

----------------------------------------------------------------------------------------------------------------------------------------

5KdJ3fW.png

White Crow --> http://www.rpg2s.net...845-white-crow/


    ickh
  • Alex (Rm2k)

  • Utenti
  • Rens: 54
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 917 messaggi
  • Sesso:Maschio
  • Abilitā:Adepto

#7 Inviato 25 July 2020 - 11:05 AM

Tra vacanze e robe varie è passato quasi un mese...

 

Btw, ho provato questa soluzione ma è piuttosto ingarbugliata.

 

Ho trovato invece un modo più semplice usando uno script:

class Scene_Map

  alias ivdc_transfer_player transfer_player
  def transfer_player
    ivdc_transfer_player
    
    init_events
  end
  
  #------------------------------------------------
  # Aggiornare qui gli switch e le variabili
  #------------------------------------------------
  def init_events
    var_storia = $game_variables[52]
    
    case var_storia
    when 51
      var_storia = 52
    when 91
      var_storia = 92
    end
    
    $game_variables[52] = var_storia
  end
  
end

In pratica ad ogni cambio mappa aggiorno gli eventuali switch e variabili che mi servono e gli eventi saranno tutti al loro posto.


Giochi completi

----------------------------------------------------------------------------------------------------------------------------------------

rha2Trr.png

[SHORT] ELYON 5 --> http://www.rpg2s.net...15full-elyon-5/

 

Progetti in corso

----------------------------------------------------------------------------------------------------------------------------------------

5KdJ3fW.png

White Crow --> http://www.rpg2s.net...845-white-crow/





  • Feed RSS