fanton95 Posted October 27, 2009 Share Posted October 27, 2009 Tutorial RGSSTutorial n°2 1. IntroduzionePer: RPG Maker XPAutore: Fanton95Descrizione: Creazione di una scena in RGSS Ultima modifica: 27/10/2009 2. TutorialCreazione di una scena Nozioni necessarie: Saper creare una finestra in RGSS. 1)Creazione della classeLa prima cosa da fare è sempre creare una classe, questa classe sarà composta da due metodi principali: "main" e "update"; perchè non initialize come nelle finestre? Lo spiegheremo nel prossimo paragrafo. Ecco la struttura della nostra classe: class Scene_Perso def main end def update end end 2)Teoria di una scenaPer capire in pieno cosa sia dobbiamo immaginarla. Immaginate di trovarvi in un gioco, ogni volta avete una scena: quando passate in una casa, camminate in una foresta, in una città etc.. Ma fateci caso non avrete mai tutte le scene in una volta sola! La variabile globale dell'RGSS per visualizzare una scena è questa: $Scene Alla variabile $Scene si può attribuire una qualsiasi scena ma, ripeto, ne verrà visualizzata solo una. Per rendervi ancora più chiaro il concetto prendiamo l'esempio dello scene title: $scene = Scene_Title.new Lo Scene_Title lo visualizzate SOLO all'inizio del gioco e non durante l'esplorazione di una mappa, nel menù etc... Tutti questi concetti sono basati su tre righe di codice che si trovano nel Main e sono queste: while $scene != nil $scene.main end Senza queste righe "profetiche" il vostro gioco non partirà. Analizzando il codice capiamo che il ciclo "while" si fermerà solo se la variabile $scene sarà uguale a zero, cioè la scena sarà terminata. La differenza sostanziale con il metodo "initialize" è che questo viene avviato automaticamente e non richiamato come una qualsiasi scena. Adesso avete capito perchè in una scena si usa "main" e non "initialize". Questo paragrafo è un pò complicato ma lo ho semplificato il più possibile per le mie capacità, se avete problemi o non mi sono spiegato non esitate a chiedere ^^ 3)Il metodo "main"Torniamo a noi. Abbiamo ormai fatto la struttura della nostra classe adesso è arrivato il momento di inserire le istruzioni nel metodo "main". Questo metodo inizializzerà le nostre variabili, le nostre immagini... Per prima cosa andiamo ad inserire la nostra finestra: @window = Window_Perso.new Poi andremo a mettere gli update degli imput (quelli della tastiera) e degli output (grafica, audio...). Queste stringhe verranno ripetute in ogni scena: # Transition until the current screenGraphics.transition # Aprire il cicloloop do # Update delle pictures e degli imputGraphics.updateInput.update # Richiamare il metodo "update"update # Se la scena appartiene ad una classe differente da questa, "pulisci" ed abbandona la classeif $scene != self # Fermiamo il ciclo ed eseguiamo il resto break endend Graphics.freeze Adesso spiegheremo passo passo il contenuto di questo codice. Inizialmente ogni scena è "congelata" e quindi non potremmo farci nulla ma per questo c'è questa stringa che ci premette di "scongelarla": Graphics.transition Adesso bisogna updatare le immagini e gli imput; le metteremo in un ciclo in modo tale che gli elementi siano sempre aggiornati. Faremo così: loop do # Update delle pictures e degli imputGraphics.updateInput.update # Richiamare il metodo "update"update Il metodo "update" verrà definito in seguito. Adesso bisognerà fare in modo che quando verrà cambiata la scena, quella attuale sia di nuovo congelata: # Se la scena appartiene ad una classe differente da questa, "pulisci" ed abbandona la classeif $scene != self # Fermiamo il ciclo ed eseguiamo il resto break endend Graphics.freeze Manca ancora qualcosa... Dopo quest'ultimo comando, e sottolineo dopo, dovremo mettere un comando che permetterà alle finestre di essere rimosse quando cambiamo la scena, lo faremo con queste stringhe: @window.dispose Adesso ricapitoliamo il contenuto del metodo "main": def main @window = Window_Perso.new Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze @window.disposeend 4)Il metodo "update" In questo metodo metteremo soltanto questo codice perchè abbiamo inserito solo una finestre, il comando è questo: @window.update In questo modo ogni finestra sarà aggiornata con il metodo "update". Ecco la nostra scena come dovrebbe presentarsi: class Scene_Perso def main @window = Window_Perso.new Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze @window.dispose end def update @window.update end end Per richiamarla vi basterà fare un call script così: $scene = Scene_Perso.new 5)Ancora una piccola precisazionePerché quando dovete inserire uno script nelle istruzioni c'è sempre scritto "Inserire lo script prima del Main"? Ritorniamo alle righe "profetiche" che abbiamo scritto in precedenza while $scene != nil $scene.main end e teniamo presente che RPG Maker XP legge gli script dall'alto verso il basso. Se uno script si dovesse trovare dopo il main verrebbe eseguito solo se $scene = nil cioè solo quando nessuna scena è in esecuzione. Questo metodo viene adottato raramente solo per dare degli avvertimenti al giocatore quando finisce il gioco. Abbiamo terminato anche questo tutorial. La prossima lezione sarà "Le immagini - Sprites". "Oh perché dobbiamo essere così, noi? – ci domandiamo talvolta allo specchio - con questa faccia, con questo corpo? – alziamo una mano, nell'incoscienza; e il gesto ci resta sospeso. Ci pare strano che l'abbiamo fatto noi. Ci vediamo vivere. […] In certi momenti di silenzio interiore, in cui l'anima nostra si spoglia di tutte le funzioni abituali, e gli occhi nostri diventano più acuti e più penetranti, noi vediamo noi stessi nella vita, e in se stessa la vita, quasi in una modalità arida, inquietante; ci sentiamo assaltare da una strana impressione, come se, in un baleno, ci si chiarisse una realtà diversa da quella che normalmente percepiamo, una realtà vivente oltre la vista umana, fuori delle forme dell'umana ragione." [L.P.] http://img43.imageshack.us/img43/4231/vgmiud3f.png http://rpg2s.net/gif/SCContest1Oct.gif http://www.rpg2s.net/img/fablecontest3rd.png http://rpg2s.net/gif/SCContest1Oct.gif RPG by forum http://img59.imageshack.us/img59/6/av2w.png Nome: Erech (In elfico "lancia solitaria", da er (ereb) = "solitario" e ech = "lancia") Età : 19 Razza: Umani Descrizione: Erech è un ragazzo alto e slanciato, dalla corporatura tonica e scattante. Ha capelli lunghi e violacei come gli occhi che però sono spesso coperti in parte da un elegante cappello nero. Veste con uno stile classico, una camicetta bianca sotto una giacca nera e un fiocco al collo ornato con un'immancabile piuma azzurra. Gli piace leggere e scrivere e ama tradurre testi in lingue antiche. Carattere: Il ragazzo ha un carattere chiuso e introverso, è di poche parole e preferisce i fatti alle parole. Non si relaziona spesso con i coetanei o se lo fa significa che si fida cecamente della persona che ha davanti; è diffidente e tende a non raccontare fatti del suo passato, belli o brutti che siano. Link to comment Share on other sites More sharing options...
Kingartur2 Posted October 27, 2009 Share Posted October 27, 2009 (edited) Be potevi essere un'po più preciso magari per la gestione di input per le finestre selezionabili comunque per i neofiti è ottimo per capire il concetto. Comunque hai fatto un errore dcendo che è possibile fare una solascena all vlta perchè posso anche mettere in Main $scene2 =Scene_Title.newe poi mettowhile $scene2 != nil $scene2.main end.Così possiamo avere 2 scene contemporaneamente anche se penso che sarebbe difficile gestirle entrambe Edited October 27, 2009 by kingartur2 Per qualsiasi motivo non aprite questo spoiler. Ho detto di non aprirlo ! Se lo apri ancora esplode il mondo. Aaaaaa è un vizio. Contento? Il mondo è esploso, sono tutti morti per colpa della tua curiosità . Vuoi che ti venga anche il morbillo, la varicella e l'AIDS??? O bravo ora sei un malato terminale e nessuno ti puo curare, sono tutti morti ! Se clicchi ancora una volta il PC esplode. E dai smettila !! Uff!! Hai cliccato tante volte che ho dovuto sostituirlo con un codebox. http://s8.postimg.org/yntv9nxld/Banner.png http://img204.imageshack.us/img204/8039/sccontest3octpl3.gif Link to comment Share on other sites More sharing options...
fanton95 Posted October 27, 2009 Author Share Posted October 27, 2009 (edited) Grazie per la precisazione correggo subito. Per le finestre selezionabili ci saranno due tutorial appositi e li entrerò nel dettaglio. EDIT: niente non ci riesco ho i soliti fastidiosissimi problemi con l'editor Edited October 27, 2009 by fanton95 "Oh perché dobbiamo essere così, noi? – ci domandiamo talvolta allo specchio - con questa faccia, con questo corpo? – alziamo una mano, nell'incoscienza; e il gesto ci resta sospeso. Ci pare strano che l'abbiamo fatto noi. Ci vediamo vivere. […] In certi momenti di silenzio interiore, in cui l'anima nostra si spoglia di tutte le funzioni abituali, e gli occhi nostri diventano più acuti e più penetranti, noi vediamo noi stessi nella vita, e in se stessa la vita, quasi in una modalità arida, inquietante; ci sentiamo assaltare da una strana impressione, come se, in un baleno, ci si chiarisse una realtà diversa da quella che normalmente percepiamo, una realtà vivente oltre la vista umana, fuori delle forme dell'umana ragione." [L.P.] http://img43.imageshack.us/img43/4231/vgmiud3f.png http://rpg2s.net/gif/SCContest1Oct.gif http://www.rpg2s.net/img/fablecontest3rd.png http://rpg2s.net/gif/SCContest1Oct.gif RPG by forum http://img59.imageshack.us/img59/6/av2w.png Nome: Erech (In elfico "lancia solitaria", da er (ereb) = "solitario" e ech = "lancia") Età : 19 Razza: Umani Descrizione: Erech è un ragazzo alto e slanciato, dalla corporatura tonica e scattante. Ha capelli lunghi e violacei come gli occhi che però sono spesso coperti in parte da un elegante cappello nero. Veste con uno stile classico, una camicetta bianca sotto una giacca nera e un fiocco al collo ornato con un'immancabile piuma azzurra. Gli piace leggere e scrivere e ama tradurre testi in lingue antiche. Carattere: Il ragazzo ha un carattere chiuso e introverso, è di poche parole e preferisce i fatti alle parole. Non si relaziona spesso con i coetanei o se lo fa significa che si fida cecamente della persona che ha davanti; è diffidente e tende a non raccontare fatti del suo passato, belli o brutti che siano. Link to comment Share on other sites More sharing options...
Kingartur2 Posted October 27, 2009 Share Posted October 27, 2009 Benissimo, quansi quasi mi metto a fare un tutoral pure io sulla personalizzazione delle scene base.....e da un'po che non scrivo script e mi devo un'po rinsavire Per qualsiasi motivo non aprite questo spoiler. Ho detto di non aprirlo ! Se lo apri ancora esplode il mondo. Aaaaaa è un vizio. Contento? Il mondo è esploso, sono tutti morti per colpa della tua curiosità . Vuoi che ti venga anche il morbillo, la varicella e l'AIDS??? O bravo ora sei un malato terminale e nessuno ti puo curare, sono tutti morti ! Se clicchi ancora una volta il PC esplode. E dai smettila !! Uff!! Hai cliccato tante volte che ho dovuto sostituirlo con un codebox. http://s8.postimg.org/yntv9nxld/Banner.png http://img204.imageshack.us/img204/8039/sccontest3octpl3.gif Link to comment Share on other sites More sharing options...
Keroro Posted November 21, 2009 Share Posted November 21, 2009 kingartur2: quando carichi una scena viene eseguito il main di questa e spesso nelle scene c'è un loop quindi non è possibile gestirne due contemporaneamente senza generare conflitti. fanton95: dovresti correggere in alto, hai scritto $Scene piuttosto che $scene, il ruby è case-sensitive :) I Miei Script:Salva Schermata (3 Aprile 2012)Attacco Personalizzabile (2 Aprile 2012)Keyboard Input (Porting) (17 Marzo 2012)Continua... Link to comment Share on other sites More sharing options...
Kingartur2 Posted November 21, 2009 Share Posted November 21, 2009 No keroro l'ho provato è non mi da il minimo errore a parte la sovrapposizione delle window delle 2 scene Per qualsiasi motivo non aprite questo spoiler. Ho detto di non aprirlo ! Se lo apri ancora esplode il mondo. Aaaaaa è un vizio. Contento? Il mondo è esploso, sono tutti morti per colpa della tua curiosità . Vuoi che ti venga anche il morbillo, la varicella e l'AIDS??? O bravo ora sei un malato terminale e nessuno ti puo curare, sono tutti morti ! Se clicchi ancora una volta il PC esplode. E dai smettila !! Uff!! Hai cliccato tante volte che ho dovuto sostituirlo con un codebox. http://s8.postimg.org/yntv9nxld/Banner.png http://img204.imageshack.us/img204/8039/sccontest3octpl3.gif Link to comment Share on other sites More sharing options...
Keroro Posted November 21, 2009 Share Posted November 21, 2009 il conflitto di cui parlavo era la sovrapposizione grafica delle scene :) I Miei Script:Salva Schermata (3 Aprile 2012)Attacco Personalizzabile (2 Aprile 2012)Keyboard Input (Porting) (17 Marzo 2012)Continua... Link to comment Share on other sites More sharing options...
Kingartur2 Posted November 21, 2009 Share Posted November 21, 2009 Ma infatti ho detto:Così possiamo avere 2 scene contemporaneamente anche se penso che sarebbe difficile gestirle entrambemagari non lo hai notato.Io dicevo che teoricamente si può fare ma praticamente è difficile ma non impossibile Per qualsiasi motivo non aprite questo spoiler. Ho detto di non aprirlo ! Se lo apri ancora esplode il mondo. Aaaaaa è un vizio. Contento? Il mondo è esploso, sono tutti morti per colpa della tua curiosità . Vuoi che ti venga anche il morbillo, la varicella e l'AIDS??? O bravo ora sei un malato terminale e nessuno ti puo curare, sono tutti morti ! Se clicchi ancora una volta il PC esplode. E dai smettila !! Uff!! Hai cliccato tante volte che ho dovuto sostituirlo con un codebox. http://s8.postimg.org/yntv9nxld/Banner.png http://img204.imageshack.us/img204/8039/sccontest3octpl3.gif Link to comment Share on other sites More sharing options...
Keroro Posted November 22, 2009 Share Posted November 22, 2009 Sì ma è senza senso in un automa lineare gestire due stati concorrenti :PSignifica solo che hai modellato male il problema.Se entrambi hanno accesso a video e non c'è una politica di integrazione dei contributi e una adeguata gestione degli accessi l'unico modo per renderli compatibili è togliere il main loop ad uno dei due, ma senza un main loop non hai più due scene ma una scena e una classe qualsiasi :) I Miei Script:Salva Schermata (3 Aprile 2012)Attacco Personalizzabile (2 Aprile 2012)Keyboard Input (Porting) (17 Marzo 2012)Continua... Link to comment Share on other sites More sharing options...
Kingartur2 Posted November 22, 2009 Share Posted November 22, 2009 Capito quello che hai detto ma ti ripeto che volevo solo precisarlo come concetto teorico non come cosa che si può fare Per qualsiasi motivo non aprite questo spoiler. Ho detto di non aprirlo ! Se lo apri ancora esplode il mondo. Aaaaaa è un vizio. Contento? Il mondo è esploso, sono tutti morti per colpa della tua curiosità . Vuoi che ti venga anche il morbillo, la varicella e l'AIDS??? O bravo ora sei un malato terminale e nessuno ti puo curare, sono tutti morti ! Se clicchi ancora una volta il PC esplode. E dai smettila !! Uff!! Hai cliccato tante volte che ho dovuto sostituirlo con un codebox. http://s8.postimg.org/yntv9nxld/Banner.png http://img204.imageshack.us/img204/8039/sccontest3octpl3.gif Link to comment Share on other sites More sharing options...
Kingartur2 Posted November 22, 2009 Share Posted November 22, 2009 Capito quello che hai detto ma ti ripeto che volevo solo precisarlo come concetto teorico non come cosa che si può fare Per qualsiasi motivo non aprite questo spoiler. Ho detto di non aprirlo ! Se lo apri ancora esplode il mondo. Aaaaaa è un vizio. Contento? Il mondo è esploso, sono tutti morti per colpa della tua curiosità . Vuoi che ti venga anche il morbillo, la varicella e l'AIDS??? O bravo ora sei un malato terminale e nessuno ti puo curare, sono tutti morti ! Se clicchi ancora una volta il PC esplode. E dai smettila !! Uff!! Hai cliccato tante volte che ho dovuto sostituirlo con un codebox. http://s8.postimg.org/yntv9nxld/Banner.png http://img204.imageshack.us/img204/8039/sccontest3octpl3.gif 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