Exim Gealbhonn Posted January 3, 2015 Share Posted January 3, 2015 (edited) [RGSS3] Eliminare dal menù una o più opzioni Versione 1.0 Per: RPGMakerVXAce Autore: Sora Keyblade Descrizione:In una vecchia discussione su uno script di KenzoMe su come eliminare l'opzione "Formazione", è stata esposta l'idea di fare un tutorial su come eliminare, indistintamente, una opzione dal menù; visto che Kenzo non l'ha fatto e io sono affamato di rens, me ne occupo io e tagliamo la testa al toro.La guida cercherà di essere il più comprensibile possibile, anche per chi non ha mai usato l'rgss, e tutte quelle cose che non sono presenti su rpg maker "base" avranno una spiegazione (spero di non dovermi soffermare più di tanto su cose come le variabili!), come per esempio metodi e classi (con annessi esempi)Ultima Modifica: 11/01/2015Tutorial:Premettiamo fin da subito una cosa, RPG Maker, prima di avviare un gioco, analizza tutto il codice che è presente nello script editor, dall'alto verso il basso, e poi lo esegue; probabilmente a prima vista ciò può sembrare una cosa da nulla, ma se sappiamo sfruttare a nostro vantaggio questa cosa il nostro script può risultare più chiaro e ordinato, infatti RPG Maker, quando legge il codice, se trova uno script avente il nome della classe e un metodo uguali ad uno letto prima (quindi più in alto), sovrascriverà il metodo più in alto con quello più in basso; facciamo un esempio per essere più chiari: class Window_MenuCommand < Window_Command def self.init_command_position @@last_command_symbol = nil endQueste sono le prime righe di codice della classe "Window_MenuCommand" (7° script sotto "Windows",che andremo ad analizzare passo passo più avanti).N.B. una classe può essere immaginata come il progetto di un oggetto, quell'insieme di attributi (cioè le sue caratteristiche) e metodi (cioè ciò che sa fare) che permettono in seguito di rendere il progetto (astratto) in un oggetto("concreto"), per esempio la classe "Distributore d'acqua", avrà come attributo il materiale di cui è fatto o il colore, mentre come metodo quello di erogare l'acqua. Inoltre si può notare che Window_MenuCommand è una sottoclasse di Window_Command, infatti per rendere il lavoro più ordinato e con meno ripetizioni a volte si può scegliere di creare una classe madre per poi rendere disponibile le sue funzioni a quelle figlie, per esempio possiamo creare la classe "Televisione" può avere come classi figlie "Televisore a tubo catodico" e "Televisore a schermo piatto", ma in entrambe le classi figlie non sarà presente un metodo come "Accensione" perché presente nella classe madre (di conseguenza una classe madre presenta le caratteristiche generali che possiedo tutte le classi figlie, mentre le classi figlie vanno più nello specifico) Viene creata la classe Window_MenuCommand, che ha come primo metodo "self.init_command_position", quest'ultimo serve per stabilire la posizione del cursore, ma se per esempio vogliamo modificare la posizione del cursore (non farlo mettere sulla prima opzione, ma sulla seconda), ci basterà scrivere queste semplici righe nell'editor script, sotto materials (o almeno sotto Window_MenuCommand): class Window_MenuCommand < Window_Command def self.init_command_position @@last_command_symbol = :skill end ended il gioco è fatto, senza neanche toccare il codice originario. Adesso passiamo all'analisi del codice, perché è buona cosa quando si va a modificare uno script studiarne tutte le parti e visto che Window_MenuCommand è una classe molto semplice, perché non farlo? class Window_MenuCommand < Window_Command ... endInizializza la classe Window_MenuCommand che è sottoclasse di Window_Command def self.init_command_position @@last_command_symbol = nil endQuesto metodo (come già detto) serve per dare alla macchina la posizione del cursore, all'interno viene inizializzata la variabile di classe " @@last_command_symbol ", se quest'ultima ha valore nullo (nil), l'opzione in cui si troverà il cursore (quando è stato aperto il menù) sarà la prima, mentre se si mette al posto di "nil", per esempio il simbolo ":skill" il cursore si posizionerà su "Abilità" etc def initialize super(0, 0) select_last end Qui viene inizializzata la finestra, cioè il menù con le varie opzioni, viene richiamata la funzione inizialize della superclasse/classe madre Window_Command e vengono dati come parametri "0,0", cioé la posizione nello schermo (che sarebbe in alto a sinistra, infatti dovete immaginare lo schermo come un piano cartesiano dove il punto O è in alto a sinistra, invece che in basso a sinistra).Con "select_last" viene richiamato il metodo "select_last", presente più in basso def process_ok @@last_command_symbol = current_symbol super end Scendiamo più in basso, questa è il penultimo metodo, "process_ok", questo metodo modifica il valore di "@@last_command_symbol" con il simbolo corrente (:skill, :item etc)quando viene schiacciato invio, tutto questo cosa significa? Il simbolo corrente è la posizione del cursore nel momento in cui si preme invio, quindi se premiamo Invio quando è su Equipaggia, memorizzerà il simbolo ":equip", però cosa succede quando premiamo Invio su Equipaggia? Prendiamo il controllo di un altro menù (che sia quello accanto dove sono prensenti i pg oppure altri, come quello degli oggetti o degli equipaggiamenti), ma se premiamo esc cosa succede? Torniamo alla finestra principale (quella con Oggetti, Abilità etc) e il cursore punta sull'ultima opzione in cui era posizionato prima di essere schiacciato Invio (proprio quella in cui era stato premuto invio, in questo caso Equipaggia), che è memorizzata nella variabile "@@last_command_symbol", al posto di farlo puntare sulla prima opzione!"super" invece richiama il metodo "process_ok", presente nella classe madre di Menu_Command (possono esserci superclassi di super classi, come in questo caso), che ,a soldoni, programma il "Quando viene premuto Invio" def select_last select_symbol(@@last_command_symbol) endQuesta è il metodo "select_last" che viene richiamato dal metodo "initialize" appena visto sopra, qui viene richiamato il metodo "select_symbol" della classe madre Window_Command e viene passato come argomento la variabile "@@last_command_symbol" , senza entrare troppo nei dettagli è il metodo che posiziona "materialmente" il cursore def make_command_list add_main_commands add_formation_command add_original_commands add_save_command add_game_end_command end Adesso passiamo alla parte interessante e che ci interessa maggiormente, questo metodo (make_command_list), crea le varie opzioni del menù (oggetti, abilità etc), anzi, più precisamente chiama altri metodi che creano le varie opzioni, quindi cosa dovremmo fare per eliminare una opzione? Semplicemente cancellare le istruzioni contenute al loro interno!Visioniamo uno ad uno i metodi richiamati. def add_main_commands add_command(Vocab::item, :item, main_commands_enabled) add_command(Vocab::skill, :skill, main_commands_enabled) add_command(Vocab::equip, :equip, main_commands_enabled) add_command(Vocab::status, :status, main_commands_enabled) end"add_main_commands" aggiunge le opzioni/comandi: Item, Skill; Equip, Status, nulla di particolare. def add_formation_command add_command(Vocab::formation, :formation, formation_enabled) end"add_formation_command" aggiunge l'opzione/comando "Formazione" def add_original_commands end"add_original_commands" non aggiunge nulla (appunto non c'è niente dentro al metodo), ma può essere riempito da una opzione creata dall'utente (come può essere il bestiario per esempio!) def add_save_command add_command(Vocab::save, :save, save_enabled) end"add_save_command" aggiunge il comando Salva def add_game_end_command add_command(Vocab::game_end, :game_end) end "add_game_end_command" aggiunge l'opzione "Fine Gioco" Arrivati a questo punto, avendo compreso come funziona questa classe, non resta che modificarlo! Possiamo muoverci in tre modi diversi (faccio l'esempio di Item e Fine Gioco) Il primo metodo è semplicemente quello di togliere materialmente ciò che è contenuto nel metodo.Nel caso di Fine Gioco avviene cosìPrima: def add_game_end_command add_command(Vocab::game_end, :game_end) end Dopo: def add_game_end_command end Mentre nel caso di Item avviene così Prima: def add_main_commands add_command(Vocab::item, :item, main_commands_enabled) add_command(Vocab::skill, :skill, main_commands_enabled) add_command(Vocab::equip, :equip, main_commands_enabled) add_command(Vocab::status, :status, main_commands_enabled) end Dopo: def add_main_commands add_command(Vocab::skill, :skill, main_commands_enabled) add_command(Vocab::equip, :equip, main_commands_enabled) add_command(Vocab::status, :status, main_commands_enabled) end Ovviamente se dovete eliminare l'opzione "Skill", cancellerete la seconda riga, per Equip, la terza e così via Il secondo metodo non si distoglie molto dal primo, ma risulta meno "drastico". In pratica consiste nel mettere prima della riga che vogliamo eliminare il simbolo cancelletto (#), in questo modo tutta la riga alla destra del cancelletto diventerà un commento, quindi non verrà letto da RPG Maker Nel caso di Item funziona così def add_main_commands # add_command(Vocab::item, :item, main_commands_enabled) add_command(Vocab::skill, :skill, main_commands_enabled) add_command(Vocab::equip, :equip, main_commands_enabled) add_command(Vocab::status, :status, main_commands_enabled) end mentre nel caso di End Game funziona in questo modo def add_game_end_command # add_command(Vocab::game_end, :game_end) end Questo secondo metodo è nettamente più consigliato del primo, infatti, se in futuro dovreste pentirvi di aver eliminato quel determinato comando potete benissimo togliere il cancelletto e tutto tornerà come prima, cosa nettamente più pratica di dover creare un nuovo progetto, cercare nel codice sorgente la riga che ci interessa e incollarla nel nostro progetto In fine, il terzo metodo ed il più consigliato, dovete creare un nuovo script sotto Material (o almeno sotto -Window_MenuCommand-) e utilizzare quella caratteristica di RPGMAker appena descitta sopra, cioè far sovrascrivere il metodo di una classe mettendolo sotto quello base di rpgmkr class Nome_Classe #nel nostro caso Window_MenuCommand def Nome_Metodo #nel nostro caso o add_game_end_command oppure add_main_commands codice modificato end end Questo è il "template" che dovremo utilizzare, nulla di molto complicato, dovremo nominare la classe con lo stesso nome di quella dov'è presente il metodo che dobbiamo modificare (nel nostro caso Window_MenuCommand); ridefinire il metodo, creando un metodo con lo stesso nome (nel nostro caso o add_game_end_command oppure add_main_commands); inserire il codice modificato all'interno del metodo; terminare il metodo e la classe con i due -end- Ecco come avviene in modo pratico utilizzando i nostri due esempiPer eliminare Item class Window_MenuCommand < Window_Command def add_main_commands add_command(Vocab::skill, :skill, main_commands_enabled) add_command(Vocab::equip, :equip, main_commands_enabled) add_command(Vocab::status, :status, main_commands_enabled) end end Mentre per End Game: class Window_MenuCommand < Window_Command def add_game_end_command end endIn questo modo, il metodo -add_game_end_command- oppure -add_main_commands- verranno eliminati e sostituiti (cioè sovrascritti) dal codice da voi inserito Forse risulterà il metodo più lungo, ma quello più maneggievole e pratico da modificare e distribuire, infatti, semplicemente cancellando lo script da voi creato potrete far tornare tutto alla normalità, senza dover mettere mani nel codice e lo potrete distribuire in modo più semplice e compatto, postando semplicemente il codice da voi scritto ed il gioco è fatto ^^ La guida finisce qui, se avete qualche dubbio o consiglio postatelo qua sotto, risponderò a tutti ^^ (se possibile :P) Edited January 11, 2015 by Sora Keyblade http://i.imgur.com/WmE9anR.pngMiei Tutorial: Tileset Creator Fare Dialoghi con Artwork Eliminare dal menù una o più opzioni Guida all'utlizzo dell'"Animated Battle System" di Victor (Work in progress) Rompere la quarta parete come Psycho MantisMiei Script: Endline Automatico dei Messaggi Sistema di Autosalvataggio Livello di Difficoltà Link to comment Share on other sites More sharing options...
Guardian of Irael Posted January 3, 2015 Share Posted January 3, 2015 Ottimo, è sempre richiesta comune quella di eliminare una o due opzioni dai menù... potresti spiegare anche come aggiungerle ed occuparti del title pure.^ ^ (\_/)(^ ^) <----coniglietto rosso, me! (> <) Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^ http://i.imgur.com/KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^ http://i.imgur.com/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) ^ ^ 🖤http://www.rpg2s.net/dax_games/r2s_regali2s.png E:3 http://www.rpg2s.net/dax_games/xmas/gifnatale123.gifhttp://i.imgur.com/FfvHCGG.png by Testament (notare dettaglio in basso a destra)! E:3http://i.imgur.com/MpaUphY.jpg by Idriu E:3Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44) http://i.imgur.com/PgUqHPm.pngUfficiale"Ad opera della sua onestà e del suo completo appoggio alla causa dei Panda, Guardian Of Irael viene ufficialmente considerato un Membro portante del Partito, e Ambasciatore del suo Popolo presso di noi"http://i.imgur.com/TbRr4iS.png<- Grazie Testament E:3Ricorda...se rivolgi il tuo sguardo ^ ^ a Guardian anche Guardian volge il suo sguardo ^ ^ a te ^ ^http://i.imgur.com/u8UJ4Vm.gifby Flame ^ ^http://i.imgur.com/VbggEKS.gifhttp://i.imgur.com/2tJmjFJ.gifhttp://projectste.altervista.org/Our_Hero_adotta/ado2.pngGrazie Testament XD Fan n°1 ufficiale di PQ! :DVivail Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che nonavevo programmi di grafica per fare un banner su questo pc XD (ora ho dinuovo il mio PC veramente :D) Rosso Guardiano dellahttp://i.imgur.com/Os5rvhx.pngRpg2s RPG BY FORUM:Nome: Darth Reveal PV totali 2PA totali 16Descrizione: ragazzo dai lunghi capelli rossi ed occhi dello stesso colore. Indossa una elegante giacca rossa sopra ad una maglietta nera. Porta pantaloni rossi larghi, una cintura nera e degli stivali dello stesso colore. E' solito trasportare lo spadone dietro la schiena in un fodero apposito. Ha un pendente al collo e tiene ben legato un pezzo di stoffa (che gli sta particolarmente a cuore) intorno al braccio sinistro sotto la giacca, copre una cicatrice.Bozze vesti non definitive qui.Equipaggiamento:Indossa:60$ e 59$ divisi in due tasche interneLevaitanSpada a due mani elsa lungaGuanti del Defender (2PA)Anello del linguaggio animale (diventato del Richiamo)Scrinieri da lanciere (2 PA)Elmo del Leone (5 PA)Corazza del Leone in Ferro Corrazzato (7 PA) ZAINO (20) contenente:Portamonete in pelle di cinghiale contenente: 100$Scatola Sanitaria Sigillata (può contenere e tenere al sicuro fino a 4 oggetti curativi) (contiene Benda di pronto soccorso x3, Pozione di cura)CordaBottiglia di idromeleForma di formaggioTorcia (serve ad illuminare, dura tre settori)Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)Ampolla BiancaSemi di Balissa CAVALLO NORMALE + SELLA (30 +2 armi) contentente:66$Benda di pronto soccorso x3Spada a due maniFagotto per Adara (fazzoletto ricamato) Link to comment Share on other sites More sharing options...
Makeratore Posted January 3, 2015 Share Posted January 3, 2015 Ottimerrimo!!! Mi serviva una guida del genere! Quando la aggiorni, ti consiglio di fare un nuovo post per avvertire, in modo che sappiamo quando viene aggiornata. CLICCA SUL BANNER QUI SOTTO PER ENTRARE ANCHE TU NEL GRUPPO VOCALE DISCORD! >>> <<< Le mie guide: - Risolvere gli errori legati all'online sulla Wii U - Recensione RPG Maker MV I miei plugin: - Chapter Window plugin Roba: http://i.imgur.com/dWUeHeL.jpg http://37.media.tumblr.com/c5e5c7ccc70b4e7119ad585c98b4eafc/tumblr_n5munym41a1rlwn4io6_r1_250.gif http://67.media.tumblr.com/87ed7c36599b5438e6da0a0d94d99f80/tumblr_mr5fkbv9gO1qkufl8o1_500.gifhttp://i.imgur.com/osqupoP.png Link to comment Share on other sites More sharing options...
Ste Posted January 4, 2015 Share Posted January 4, 2015 Bella guida, hai spiegato benissimo!Ci conto che la continuerai! ;) Link to comment Share on other sites More sharing options...
Exim Gealbhonn Posted January 11, 2015 Author Share Posted January 11, 2015 Ottimo, è sempre richiesta comune quella di eliminare una o due opzioni dai menù... potresti spiegare anche come aggiungerle ed occuparti del title pure.^ ^Grazie mille ^^ Aggiungere opzioni nel menù è una cosa molto semplice, il problema è cosa mettere all'interno di quel comando XDVolendo posso aggiungerlo a questa guida, mettendo una roba semplice come "Quando premi l'opzione -Hello World- compare una finestra con su scritto 'Hello World'" o roba del genere, oppure fare un'altra guida con della roba un po' più complicata (consigli?), secondo te qual è meglio? xD Per il title, credo che in futuro lo farò ^^ Ottimerrimo!!! Mi serviva una guida del genere! Quando la aggiorni, ti consiglio di fare un nuovo post per avvertire, in modo che sappiamo quando viene aggiornata. Bella guida, hai spiegato benissimo!Ci conto che la continuerai! ;) Grazie del sostegno ^^ Guida Completata http://i.imgur.com/WmE9anR.pngMiei Tutorial: Tileset Creator Fare Dialoghi con Artwork Eliminare dal menù una o più opzioni Guida all'utlizzo dell'"Animated Battle System" di Victor (Work in progress) Rompere la quarta parete come Psycho MantisMiei Script: Endline Automatico dei Messaggi Sistema di Autosalvataggio Livello di Difficoltà Link to comment Share on other sites More sharing options...
Guardian of Irael Posted January 11, 2015 Share Posted January 11, 2015 Io intendevo script già fatti da inserire, quindi mettere il semplice richiama scena per quello script particolare.^ ^ (\_/)(^ ^) <----coniglietto rosso, me! (> <) Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^ http://i.imgur.com/KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^ http://i.imgur.com/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) ^ ^ 🖤http://www.rpg2s.net/dax_games/r2s_regali2s.png E:3 http://www.rpg2s.net/dax_games/xmas/gifnatale123.gifhttp://i.imgur.com/FfvHCGG.png by Testament (notare dettaglio in basso a destra)! E:3http://i.imgur.com/MpaUphY.jpg by Idriu E:3Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44) http://i.imgur.com/PgUqHPm.pngUfficiale"Ad opera della sua onestà e del suo completo appoggio alla causa dei Panda, Guardian Of Irael viene ufficialmente considerato un Membro portante del Partito, e Ambasciatore del suo Popolo presso di noi"http://i.imgur.com/TbRr4iS.png<- Grazie Testament E:3Ricorda...se rivolgi il tuo sguardo ^ ^ a Guardian anche Guardian volge il suo sguardo ^ ^ a te ^ ^http://i.imgur.com/u8UJ4Vm.gifby Flame ^ ^http://i.imgur.com/VbggEKS.gifhttp://i.imgur.com/2tJmjFJ.gifhttp://projectste.altervista.org/Our_Hero_adotta/ado2.pngGrazie Testament XD Fan n°1 ufficiale di PQ! :DVivail Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che nonavevo programmi di grafica per fare un banner su questo pc XD (ora ho dinuovo il mio PC veramente :D) Rosso Guardiano dellahttp://i.imgur.com/Os5rvhx.pngRpg2s RPG BY FORUM:Nome: Darth Reveal PV totali 2PA totali 16Descrizione: ragazzo dai lunghi capelli rossi ed occhi dello stesso colore. Indossa una elegante giacca rossa sopra ad una maglietta nera. Porta pantaloni rossi larghi, una cintura nera e degli stivali dello stesso colore. E' solito trasportare lo spadone dietro la schiena in un fodero apposito. Ha un pendente al collo e tiene ben legato un pezzo di stoffa (che gli sta particolarmente a cuore) intorno al braccio sinistro sotto la giacca, copre una cicatrice.Bozze vesti non definitive qui.Equipaggiamento:Indossa:60$ e 59$ divisi in due tasche interneLevaitanSpada a due mani elsa lungaGuanti del Defender (2PA)Anello del linguaggio animale (diventato del Richiamo)Scrinieri da lanciere (2 PA)Elmo del Leone (5 PA)Corazza del Leone in Ferro Corrazzato (7 PA) ZAINO (20) contenente:Portamonete in pelle di cinghiale contenente: 100$Scatola Sanitaria Sigillata (può contenere e tenere al sicuro fino a 4 oggetti curativi) (contiene Benda di pronto soccorso x3, Pozione di cura)CordaBottiglia di idromeleForma di formaggioTorcia (serve ad illuminare, dura tre settori)Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)Ampolla BiancaSemi di Balissa CAVALLO NORMALE + SELLA (30 +2 armi) contentente:66$Benda di pronto soccorso x3Spada a due maniFagotto per Adara (fazzoletto ricamato) Link to comment Share on other sites More sharing options...
Exim Gealbhonn Posted January 13, 2015 Author Share Posted January 13, 2015 Io intendevo script già fatti da inserire, quindi mettere il semplice richiama scena per quello script particolare.^ ^Lo farò di certo http://i.imgur.com/WmE9anR.pngMiei Tutorial: Tileset Creator Fare Dialoghi con Artwork Eliminare dal menù una o più opzioni Guida all'utlizzo dell'"Animated Battle System" di Victor (Work in progress) Rompere la quarta parete come Psycho MantisMiei Script: Endline Automatico dei Messaggi Sistema di Autosalvataggio Livello di Difficoltà Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now