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 $@ 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 $@ 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 $@ 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 . . .