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
Problema finestra personalizzata

    ZioSam
  • Utente avanzato

  • Utenti
  • Rens: 111
  • 0
  • StellettaStellettaStelletta
  • 217 messaggi
  • Sesso:Maschio
  • Provenienza:Roma
  • Abilitā:Iniziato

#1 Inviato 07 March 2014 - 16:39 PM

Ciao a tutti. Qualche giorno fa avevo provato a realizzare una finestra personalizzata che visualizzasse nome e livello del personaggio per realizzare una sorta di menù custom. Fino a qui tutto bene, mi spulcio un pò le finestre predefinite e provo a farne una mia. Alla fine esce fuori una buona finestra. Il problema sorge quando, oggi, mentre testavo il gioco, mi ritrovo per la prima volta a salvare dopo aver "visitato" la mappa del menù custom e dove, di conseguenza, utilizzavo la finestra personalizzata. Durante il salvataggio infatti mi viene scritto un errore riguardante il metodo marshal_dump che non era implementato nella mia classe. Provo a eliminare in tutti i modi il problema, provo anche a creare un metodo marshal_dump fittizio che non contenesse nulla. Grazie a questo espediente il gioco salva, ma non carica più, perchè dice di richiedere un metodo marshal_load, e, se inserisco anche quello, mi viene fuori un altro errore ancora.

Posto qui la mia finestra personalizzata, chiedendo ai più esperti se ho fatto qualche castroneria nello script! Cosa potrei aver sbagliato?


class Info_Window < Window_Base
  
  def initialize(x, y, name, level)
    super(x, y, 160, WLH+32)
    set_text(name, level)
  end
  
  def set_text(text, level)
      self.contents.clear
      self.contents.font.color = normal_color
      self.contents.draw_text(4, 0, self.width - 40, WLH, text + "  Lv: " + level.to_s, 0)
    end
  end

 


PROGETTI IN CORSO:
 

Triple Sword: Antropea (REVAMP)

Genere: TBS, RPG

TOPIC DEL PROGETTO: http://www.rpg2s.net...ntropea-revamp/

   - VECCHIA VERSIONE: http://www.rpg2s.net...sword-antropea/

Stato di completamento: Demo tecnica di 1 ora circa. Contiene uno scenario e un dungeon.

                                           Script 90% (Devo ancora scriptare qualcosina, ma ho praticamente fatto tutto il necessario)

                                           Grafica 100%

                                           Eventi 90% (Anche qui, il sistema è quasi completo, devo rifinire) 

                                           Completamento generale 10-20% (Sistemi completati, ora tocca sviluppare la storia in-game).


    Midi
  • Alex (Rm2k)

  • Utenti
  • Rens: 83
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 962 messaggi
  • Sesso:Maschio
  • Abilitā:Novizio

#2 Inviato 07 March 2014 - 19:47 PM

Uhm... i problemi potrebbero essere due, secondo me.

Dove chiami la classe Info_Window? Direttamente nella mappa? Come gestisci il suo contenuto? Ogni volta richiami Info_Window.new(<posizione e nome eroe>)?

 

La prima cosa che mi viene in mente è che in realtà il problema non è direttamente nella Info_Window, ma in un altro oggetto, e l'interprete ti gira l'errore qui.

Per caso hai inserito qualche oggetto nuovo in qualche variabile? Tipo $game_map.info_window?

In quel caso l'errore è dovuto al fatto che quando si salva i dati prova a salvarsi gli oggetti di gioco, ma trova un oggetto che non riesce a salvare perché non gestito (può essere la tua info window o un altro oggetto).

 

La seconda è che il tuo oggetto Info_Window non ha un metodo dispose.

Ma non saprei...


Aurora Dreaming

The Dreamer (v. 1.1) - standalone

72 MB - Il prequel ad Aurora Dreaming

 

segui il dev-diary ufficiale di Aurora Dreaming!

 

Bacheca Premi

post-6-0-39588100-1390575633.png


    ZioSam
  • Utente avanzato

  • Utenti
  • Rens: 111
  • 0
  • StellettaStellettaStelletta
  • 217 messaggi
  • Sesso:Maschio
  • Provenienza:Roma
  • Abilitā:Iniziato

#3 Inviato 07 March 2014 - 21:44 PM

Guarda, la prima volta che chiamo la classe faccio questo
x = $game_variables[388]
y = $game_variables[389]
@info_window = Info_Window.new(0, 0, x, y)
Dove nella variabile 388 ho il nome e nella 389 il livello del pg.
Il metodo dispose credo che lo erediti dalla classe Window, infatti @info_window.dispose funziona. Comunque stavo pensando i aggirare il problema creando una picture invece di una finestra e di usare il draw text direttamente da call script. Il problema è che dopo un pò di tempo le scritte del draw text spariscono (a quanto ho capito a causa di un refresh che il programma fa periodicamente). La mia idea "rozza" era di scrivere in processo parallelo ogni tot secondi la stessa scritta, ma l'effetto non è dei migliori. C'è un modo per evitare che le scritte spariscano? O esiste un altro modo per far comparire una scritta in una certa posizione della mappa?

PROGETTI IN CORSO:
 

Triple Sword: Antropea (REVAMP)

Genere: TBS, RPG

TOPIC DEL PROGETTO: http://www.rpg2s.net...ntropea-revamp/

   - VECCHIA VERSIONE: http://www.rpg2s.net...sword-antropea/

Stato di completamento: Demo tecnica di 1 ora circa. Contiene uno scenario e un dungeon.

                                           Script 90% (Devo ancora scriptare qualcosina, ma ho praticamente fatto tutto il necessario)

                                           Grafica 100%

                                           Eventi 90% (Anche qui, il sistema è quasi completo, devo rifinire) 

                                           Completamento generale 10-20% (Sistemi completati, ora tocca sviluppare la storia in-game).


    Midi
  • Alex (Rm2k)

  • Utenti
  • Rens: 83
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 962 messaggi
  • Sesso:Maschio
  • Abilitā:Novizio

#4 Inviato 07 March 2014 - 22:18 PM

il problema penso che sia nel fatto che usi @info_window, ovvero una variabile d'istanza.

Perché non provi invece a usare $info_window?

Inoltre, dal momento che la tua finestra non viene gestita automaticamente ma manualmente da te tramite Call Script, ricorda sempre di chiamare il metodo dispose quando esci dalla mappa in cui la usi.


Aurora Dreaming

The Dreamer (v. 1.1) - standalone

72 MB - Il prequel ad Aurora Dreaming

 

segui il dev-diary ufficiale di Aurora Dreaming!

 

Bacheca Premi

post-6-0-39588100-1390575633.png


    ZioSam
  • Utente avanzato

  • Utenti
  • Rens: 111
  • 0
  • StellettaStellettaStelletta
  • 217 messaggi
  • Sesso:Maschio
  • Provenienza:Roma
  • Abilitā:Iniziato

#5 Inviato 07 March 2014 - 22:34 PM

Oh buon dio, perchè mai scrivevo @ invece di $ T.T??? Una giornata, una giornata ho passato convinto di quello che avevo scritto. Ora ho provato e sembra funzionare! Ti ringrazio davvero! Purtroppo sono ancora nuovo al linguaggio Ruby e faccio errori stupidi T.T. Ho passato le ore a scervellarmi convinto che @ mi desse una variabile globale! Sappi che ti sarò per sempre debitore XD! Non solo hai salvato il mio sistema nel gioco attuale, ma anche un sistema futuro che pensavo di implementare nel prossimo progetto che faceva uso delle variabili e delle finestre in modo simile! Penso che ti farò una statua!


PROGETTI IN CORSO:
 

Triple Sword: Antropea (REVAMP)

Genere: TBS, RPG

TOPIC DEL PROGETTO: http://www.rpg2s.net...ntropea-revamp/

   - VECCHIA VERSIONE: http://www.rpg2s.net...sword-antropea/

Stato di completamento: Demo tecnica di 1 ora circa. Contiene uno scenario e un dungeon.

                                           Script 90% (Devo ancora scriptare qualcosina, ma ho praticamente fatto tutto il necessario)

                                           Grafica 100%

                                           Eventi 90% (Anche qui, il sistema è quasi completo, devo rifinire) 

                                           Completamento generale 10-20% (Sistemi completati, ora tocca sviluppare la storia in-game).


    Midi
  • Alex (Rm2k)

  • Utenti
  • Rens: 83
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 962 messaggi
  • Sesso:Maschio
  • Abilitā:Novizio

#6 Inviato 07 March 2014 - 22:52 PM

L'errore non è stupido, anzi.

Poteva aver senso anche usare una variabile d'istanza. Il problema è che poi ti dà problemi di gestione se non "prepari" anche la classe in cui la istanzi, come hai notato. Nel tuo caso avresti probabilmente dovuto sistemare il Game_Interpreter... ma per una funzionalità abbastanza semplice come quella che ti serviva non ne sarebbe valsa la pena.

 

In ogni caso, lieto di essere stato utile. :)


Aurora Dreaming

The Dreamer (v. 1.1) - standalone

72 MB - Il prequel ad Aurora Dreaming

 

segui il dev-diary ufficiale di Aurora Dreaming!

 

Bacheca Premi

post-6-0-39588100-1390575633.png





  • Feed RSS