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
[NON TESTATO][(C)MS Add-on] Scene End Remover 1.0f, by giver - - - - -

    giver
  • Alex (Rm2k)

  • Utenti
  • Rens: 121
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 1289 messaggi
  • Sesso:Maschio
  • Provenienza:The Creept - Room for Strangeness
  • Abilitā:Esperto

#1 Inviato 15 November 2018 - 12:55 PM

Scene End Remover v. 1.0f



Descrizione

Trasferisce le opzioni di Scene_End all'interno del Menù di Gioco, Scene_Menu, eliminando la necessità di uscire da quest'ultimo per selezionarle.



Autore

giver di RPG2S, ma non è necessario creditarlo.



Allegati

Trattandosi di uno snippet, non sono necessarie risorse esterne, a meno di voler assegnare alla finestrella inserita una windowskin diversa da quella del resto del Menu System (vedere Istruzioni per l'Uso).
Per la stessa ragione, non ho ritenuto necessario realizzare una demo.

Per quello che riguarda uno screenshot, sono impossibilitato ad usare rpg maker xp, quindi farò una breve descrizione di cosa accade quando lo si usa.
Quando si seleziona il comando "Esci" nel Menu di Gioco, invece di uscire dal Menu e mostrare una schermata nera con al centro le opzioni di "uscita", la finestrella con tali comandi appare al centro del Menù di Gioco; per il resto, le sue opzioni fanno le stesse identiche cose.



Istruzioni per l'uso

Premessa: L'ho scritto diverse volte per diversi miei progetti ed ha sempre funzionato. Questa volta l'ho estrapolato da un vecchio CMS che avevo realizzato in modo che sia utilizzabile con facilità in qualunque CMS, e non posso testarlo, quindi non garantisco che fili tutto liscio. Per favore testatelo voi e fatemi sapere.

Per l'inserimento nello script editor è sempre la solita procedura: si crea una nuova voce nella lista degli script, almeno al di sotto di Scene_Debug, le si assegna un nome appropriato, e si incolla lo snippet nell'area adibita al codice.

La configurazione è naturalmente molto semplice, ed è composta da sei valori impostabili, all'interno del module SER_CFG.
END_COMMAND_NAME è il nome che è stato assegnato per l'uscita dal gioco, solitamente indicato come s6 = "Esci" , ossia l'ultimo dei comandi disponibili nel def main della Scene_Menu.
END_WINDOW_WSKIN è il nome dell'immagine nella cartella Windowskins usata come windowskin specifica per la finestrella con i comandi di uscita, in caso la si voglia far spiccare ulteriormente dal resto della schermata principale del ©MS. Se lasciato "" verrà usata la stessa skin settata in quella parte del gioco.
END_WINDOW_OFFZ è il valore di cui viene incrementata la coordinata z della finestrella con i comandi di uscita per farla risultare in primo piano rispetto al resto. Con la maggior parte dei ©MS non dovrebbe essere necessario modificarlo.
TO_TITLE, SHUTDOWN e CANCEL sono i nomi dei comandi che verranno usati nella finestrella d'uscita, rispettivamente per tornare al title, per chiudere il gioco, e per annullare l'uscita.



Script
 

# Scene_End Remover 1.0 f , by giver j20181115
# This Add-on inserts the Scene_End options in the Game Scene_Menu

module SER_CFG
    # Write here the name of the command related to Scene_End, usually assigned
    # to the local variable s6 in def main of Scene_Menu
    END_COMMAND_NAME = "Exit"
    # If a particular windowskin is desired, different from the other windows in the
    # (C)MS, write its file name here
    END_WINDOW_WSKIN = ""
    # To lift the end window above all other content in the Menu scene, set the value below
    END_WINDOW_OFFZ = 100
    # Command names for the end window
    TO_TITLE = "To Title"
    SHUTDOWN = "Shutdown"
    CANCEL = "Cancel"
end

class Window_Command < Window_Selectable
    attr_reader :commands
end

class Scene_Menu
    unless [email protected]
        alias giver_seremove_scemen_main    main
    end
def main
@end_command = Window_Command.new(160, [SER_CFG::TO_TITLE, SER_CFG::SHUTDOWN, SER_CFG::CANCEL],
3, 32, [1])
    if SER_CFG::END_WINDOW_WSKIN != ""
        @end_command.windowskin = RPG::Cache.windowskin(SER_CFG::END_WINDOW_WSKIN)
    end
@end_command.x = 320 - @end_command.width / 2
@end_command.y = 240 - @end_command.height / 2
@end_command.z += SER_CFG::END_WINDOW_OFFZ
@end_command.visible = false
@end_command.active = false

     giver_seremove_scemen_main

@end_command.dispose
if $scene.is_a?(Scene_Title)
Graphics.transition
Graphics.freeze
end
end

    unless [email protected]
        alias giver_seremove_scemen_updt update
    end
def update
@end_command.update
     giver_seremove_scemen_updt
if @end_command.active
update_end
return
end
end

    unless [email protected]
        alias giver_seremove_scemen_updtcmd update_command
    end
def update_command
if Input.trigger?(Input::C) and @command_window.commands[@command_window.index] == SER_CFG::END_COMMAND_NAME
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@end_command.visible = true
@end_command.active = true
@end_command.index = 1
return
end
     giver_seremove_scemen_updtcmd
end

def update_end
if Input.trigger?(Input::C)
case @end_command.index
when 0
$game_system.se_play($data_system.decision_se)
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
$scene = Scene_Title.new
when 1
$game_system.se_play($data_system.decision_se)
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
$scene = nil
when 2
$game_system.se_play($data_system.cancel_se)
@end_command.visible = false
@end_command.active = false
@command_window.active = true
end
return
end
end
end


Lo trovate in formato testo semplice al seguente link:
http://afantasymachi...er100f_rpg2s.rb
E' necessario andare alla pagina dello script e salvarlo con nome, per via del sistema anti-leeching di altervista.




Bugs e Conflitti Noti

Come ho già anticipato, non ho testato questa versione universale dello snippet, essendo costretto in questo periodo ad usare una linuxbox priva di WINE e Play On Linux. Dovrebbe comunque funzionare.
Eventuali inconvenienti potrebbero derivare dalla finestrella per uscire dalla partita che potrebbe non sparire subito all'uscita dal menù.
Per semplificare la configurabilità, ho adottato un escamotage utilizzato anche da altri scripters, che consiste nell'usare i nomi dei comandi invece dei loro indici. Non è detto che vi siano conflitti o simili, ma in caso notiate comportamenti anomali dopo aver inserito lo snippet nel vostro progetto, dovreste provare ad usare la ricerca globale dello script editor per individuare il termine commands. Se nel farlo trovate al di fuori dello snippet scritture tipo attr_reader :commands o attr_accessor :commands oppure def commands, mettete sotto commento, aggiungendo # all'inizio della riga "incriminata", la linea dello snippet con scritto attr_reader :commands.
Esistono poi degli script che rimpiazzano @commands con @data , o altro termine simile, anche nella Window_Command: dovrete cercare all'interno dello snippet l'istruzione @command_window.commands[@command_window.index] e sostituire la parola commands con data o altro termine sostitutivo utilizzato da tali Window_Command.
Non mi viene in mente altro eventuale problema.



Altri dettagli

Avevo pensato di non postare questo add-on come parte degli script personalizzati da me, ma la lettura di un paio di post relativamente recenti nella sezione RGSS mi ha fatto cambiare idea. Chiedo scusa per non essere attualmente nella possibilità di testarlo.

Perchè creare questo add-on? E' una cosa che mi sempre lasciato perplesso, dover uscire dal gioco passando da una scene esterna al menù, per poi ritornarci se si cambia idea. Tra l'altro, per come è strutturata la finestrella, era praticamente già utilizzabile all'interno del Menù di Gioco. Tutto qui . . .
 


Spoiler

    Guardian of Irael
  • Coniglietto Rosso

  • Rpg˛S Admin
  • Rens: 177
  • 12
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 55929 messaggi
  • Sesso:Maschio
  • Provenienza:Bagnaia (Viterbo)
  • Abilitā:Apprendista


#2 Inviato 15 November 2018 - 20:04 PM

Bello vedere ogni tanto che vivi ancora e torni a rifornirci di script, giver! XD

 

 

Quando si seleziona il comando "Esci" nel Menu di Gioco, invece di uscire dal Menu e mostrare una schermata nera con al centro le opzioni di "uscita", la finestrella con tali comandi appare al centro del Menù di Gioco; per il resto, le sue opzioni fanno le stesse identiche cose.

Visualmente è una piccola modifica, ma evita di spezzare completamente il flow del menù passando a schermate nere esterne (anche se effettivamente le "scene" sono solo nel codice). Ottimo per chi vuole mantenere un po' di coerenza stilistica.

^ ^


(\_/)
(^ ^) <----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

    giver
  • Alex (Rm2k)

  • Utenti
  • Rens: 121
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 1289 messaggi
  • Sesso:Maschio
  • Provenienza:The Creept - Room for Strangeness
  • Abilitā:Esperto

#3 Inviato 03 September 2019 - 10:41 AM

Innanzitutto chiedo scusa per questo bump, in quanto lo snippet è tuttora NON TESTATO.

 

Mi sono accorto di non aver rimosso nell'istruzione della creazione della finestra con i comandi di Scene_End il passaggio di alcuni parametri legati ad una versione modificata di Window_Command utilizzata nel mio progetto da cui, come detto precedentemente, l'avevo estartto.

# Scene_End Remover 1.0 f , by giver j20181115
# This Add-on inserts the Scene_End options in the Game Scene_Menu

module SER_CFG
	# Write here the name of the command related to Scene_End, usually assigned
	#   to the local variable s6 in def main of Scene_Menu
	END_COMMAND_NAME = "Exit"
	# If a particular windowskin is desired, different from the other windows in the
	#   (C)MS, write its file name here
	END_WINDOW_WSKIN = ""
	# To lift the end window above all other content in the Menu scene, set the value below
	END_WINDOW_OFFZ = 100
	# Command names for the end window
	TO_TITLE = "To Title"
	SHUTDOWN = "Shutdown"
	CANCEL = "Cancel"
end

class Window_Command < Window_Selectable
	attr_reader :commands
end

class Scene_Menu
	unless [email protected]
		alias giver_seremove_scemen_main	main
	end
  def main
    @end_command = Window_Command.new(160, [SER_CFG::TO_TITLE, SER_CFG::SHUTDOWN, SER_CFG::CANCEL])
	if SER_CFG::END_WINDOW_WSKIN != ""
		@end_command.windowskin = RPG::Cache.windowskin(SER_CFG::END_WINDOW_WSKIN)
	end
    @end_command.x = 320 - @end_command.width / 2
    @end_command.y = 240 - @end_command.height / 2
    @end_command.z +=  SER_CFG::END_WINDOW_OFFZ
    @end_command.visible = false
    @end_command.active = false

	  giver_seremove_scemen_main

    @end_command.dispose
    if $scene.is_a?(Scene_Title)
      Graphics.transition
      Graphics.freeze
    end
  end

	unless [email protected]
		alias giver_seremove_scemen_updt update
	end
  def update
    @end_command.update
	  giver_seremove_scemen_updt
    if @end_command.active
      update_end
      return
    end
  end

 	unless [email protected]
		alias giver_seremove_scemen_updtcmd update_command
	end
 def update_command
        if Input.trigger?(Input::C) and @command_window.commands[@command_window.index] == SER_CFG::END_COMMAND_NAME
          $game_system.se_play($data_system.decision_se)
          @command_window.active = false
          @end_command.visible = true
          @end_command.active = true
          @end_command.index = 1
          return
        end
	 giver_seremove_scemen_updtcmd
  end

  def update_end
    if Input.trigger?(Input::C)
      case @end_command.index
      when 0
        $game_system.se_play($data_system.decision_se)
        Audio.bgm_fade(800)
        Audio.bgs_fade(800)
        Audio.me_fade(800)
        $scene = Scene_Title.new
      when 1
        $game_system.se_play($data_system.decision_se)
        Audio.bgm_fade(800)
        Audio.bgs_fade(800)
        Audio.me_fade(800)
        $scene = nil
      when 2
        $game_system.se_play($data_system.cancel_se)
        @end_command.visible = false
        @end_command.active = false
        @command_window.active = true
      end
      return
    end
  end
end

Nei links sottostanti trovate i due script necessari ad usare la versione con i parametri aggiuntivi. Le istruzioni per l'uso sono al momento solo in inglese. Non sono le versioni originali, ma ho tentato di ricostruirli partendo dalle versioni modificate presenti nel mio progetto. Creditare Vincent Law se li usate, ma non date la colpa a lui se ci sono problemi di funzionamento.

http://afantasymachi...owselectable.rb

http://afantasymachi...indowCommand.rb


Spoiler




  • Feed RSS