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
script che si blocca

    terenzio2
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 48 messaggi

#1 Inviato 27 July 2018 - 19:54 PM

salve a tutti. io avevo creato questo script
 
class Window_TestoScelte < Window_Command
  
  def initialize(x, y, width, height)
	super(x, y)
  end
 
  def window_width
	return Graphics.width - 20
  end
 
  def window_height
    return 120
  end
  
 
   def make_command_list
    add_command($game_message.choices[0.to_i], :line0)
    add_command($game_message.choices[1.to_i], :line1)
    add_command($game_message.choices[2.to_i], :line2)
    add_command($game_message.choices[3.to_i], :line3)
    add_command($game_message.choices[4.to_i], :line4)
  end

  def call_ok_handler
	close
  end
  
end
 
class Scene_TestoScelte < Scene_MenuBase
   
  def start
    super
    comandi
    update
  end
 
 
  def comandi
    @commands=Window_TestoScelte.new(10, 280, Graphics.width - 20, 120)    
    @commands.set_handler(:line0, method(:do_line0))
    @commands.set_handler(:line1, method(:do_line1))
    @commands.set_handler(:line2, method(:do_line2))
    @commands.set_handler(:line3, method(:do_line3))
    @commands.set_handler(:line4, method(:do_line4))
  end
  
  def do_line0
	$game_variables [1]!=5
  end
  
  def do_line1
    
  end
  
   def do_line2
     
  end
  
  def do_line3
     
  end
  
  def do_line4
 
  end
end
 
 
mentre per il pg che attiva lo script ho messo
SceneManager.call(Scene_TestoScelte)
$game_message.choices[0] = []
$game_message.choices[1] = []
$game_message.choices[2] = [] 
$game_message.choices[3] = []
$game_message.choices[4] = []
 
@stringa1 = "E' come andare in montagna,qualcosa di fantastico"
$game_message.choices[0] = @stringa1
 
@stringa2 = "Ho ragione"
$game_message.choices[1] = @stringa2
 
@stringa3 = "SI"
$game_message.choices[2] = @stringa3
 
@stringa4 = "NO"
$game_message.choices[3] = @stringa4
 
@stringa5 = "ciao"
$game_message.choices[4] = @stringa5
 
il problema è che il gioco si blocca quando premo ok. come fare

Modificato da Holy87, 28 July 2018 - 22:30 PM.
ricorda di chiudere il codice con /code


    Holy87
  • Prode Guerriero

  • Rpg˛S Staff
  • Rens: 458
  • 6
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 7431 messaggi
  • Sesso:Maschio
  • Provenienza:San Giorgio a Cremano
  • Abilitā:Maestro

#2 Inviato 28 July 2018 - 22:25 PM

In che senso "si blcoca"? Va in freeze? O lancia un errore? Se lancia un errore, devi anche descriverlo perché è da quello che capisci cosa non va e come risolverlo.

EDIT: Controllando meglio il codice, c'è un sacco di roba che non va. Comincio con il dire che non so cosa tu voglia ottenere, ma qualsiasi cosa tu voglia fare lo stai facendo sbagliato.
def initialize(x, y, width, height)
  super(x, y)
end
Hai dichiarato initialize con width e height, ma non vengono usati questi parametri giacché super richiama solo x e y.


Secondo:
def make_command_list
  add_command($game_message.choices[0.to_i], :line0)
  add_command($game_message.choices[1.to_i], :line1)
  add_command($game_message.choices[2.to_i], :line2)
  add_command($game_message.choices[3.to_i], :line3)
  add_command($game_message.choices[4.to_i], :line4)
end
Perché mai questa finestra di comandi deve prendere le scelte della finestra di messaggio? Non puoi direttamente mettergli i nomi dei comandi che vuoi direttamente?
Inoltre, i comandi come 1.to_i e simili sono completamente inutili. Stai cercando di convertire 1 in un intero, ma 1 è già un intero. Non ne vedo il motivo.
 
def do_line0
  $game_variables [1]!=5
end
Praticamente questo metodo non fa che restituire vero se la variabile 1 è diversa da 5. Non vedo il perché del comando, visto che il return di un metodo chiamato tramite finestra non viene preso.

Il metodo update della scena nel metodo start è inutile. Viene chiamato automaticamente dopo l'inizializzazione.
 
SceneManager.call(Scene_TestoScelte)
$game_message.choices[0] = []
$game_message.choices[1] = []
$game_message.choices[2] = [] 
$game_message.choices[3] = []
$game_message.choices[4] = []
Qui ci sono diversi errori.
Primo, stai dando array vuoti ([]) come scelte della finestra di messaggio, quando in genere si impostano semplicemente le stringhe. Anzi, il codice è del tutto inutile visto che dopo verranno istanziate.

Secondo, prima trasporti il giocatore nella schermata con SceneManager.call, poi imposti le scelte della finestra dei messaggi (e ribadisco, non ho idea perché tu voglia disturbare la finestra dei messaggi quando puoi direttamente impostare le voci del menu direttamente in make_command_list): ovviamente, al comando SceneManager.call trasporterà nella schermata, che istanzierà la finestra e non troverà il testo del messaggio, perché scritto al di fuori della chiamata.

Ultimo errore che vedo
@stringa2 = "Ho ragione"
Stai utilizzando variabili d'istanza al posto di variabili locali.
Ricordati l'uso delle variabili (descritto nella mia guida):
variabile_locale
@variabile_istanza
$variabile_globale
Costante
Le variabili d'istanza si utilizzano nella classe per conservarne il valore, mentre le variabili locali si usano all'interno dei metodi o nei piccoli script.




Ad occhio e croce, il modo più corretto di scrivere ciò che vorresti è
Spoiler

e chiamare semplicemente con SceneManager.call(Scene_TestoScelte)

"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

BannerOverdrive35.png
Cap3.png

578.png
 

Miei script per RPG Maker VX Ace:

Spoiler

 
I miei tutorial:
Spoiler

    terenzio2
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 48 messaggi

#3 Inviato 30 July 2018 - 11:56 AM

ti ringrazio molto per avermi risposto

allora

ho cercato di creare questo script per far in modo che nel mio gioco,quando voglio che  si abbiano più di 4 scelte,io possa avere uno script base senza dover ogni volta andar a cambiare le parole,in questo caso cambio

 

  1. def make_command_list
  2. add_command('Scelta 1', :line0)
  3. add_command('Scelta 2', :line1)
  4. add_command('Scelta 3', :line2)
  5. add_command('Scelta 4', :line3)
  6. add_command('Scelta 5', :line4)
  7. end

 

con delle variabili,in modo tale da non dover ogni volta creare un nuovo script

 

poi se è possibile,vorrei tipo fare che per ogni scelta dia un certo valore ad una variabile in modo tale da poter usare poi un blocco condizionale che si attiva se c'è un determinato valore,oppure vorrei trovare un modo più semplice ma che alla fine mi dià lo stesso risultato di "Mostra scelte"

 

INOLTRE ALTRO PROBLEMA IL GIOCO SI FREEZA

si freeza sia se esco col comando close sia se faccio una scelta,come risolvo il problema?
grazie anticipatamente

 



    terenzio2
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 48 messaggi

#4 Inviato 30 July 2018 - 12:19 PM

inoltre ho trovato un problema strano

se metto

 SceneManager.return

 

succede questo

b5p1ug.png

 

perchè?



    Holy87
  • Prode Guerriero

  • Rpg˛S Staff
  • Rens: 458
  • 6
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 7431 messaggi
  • Sesso:Maschio
  • Provenienza:San Giorgio a Cremano
  • Abilitā:Maestro

#5 Inviato 30 July 2018 - 18:30 PM

Se vuoi semplicemente mostrare più scelte, perché non modifichi direttamente la finestra di messaggio invece di creare un nuovo script?
Anche il passaggio ad una nuova schermata è poco consono.

"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

BannerOverdrive35.png
Cap3.png

578.png
 

Miei script per RPG Maker VX Ace:

Spoiler

 
I miei tutorial:
Spoiler

    terenzio2
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 48 messaggi

#6 Inviato 31 July 2018 - 21:55 PM

Modificando la scelta del messaggio e richiamando lo script col comando mostra scelte mi escono sempre al massimo 4 scelte e non so come fate




  • Feed RSS