Alato Posted December 9, 2007 Share Posted December 9, 2007 In questo laboratorio non spiegher? nulla, o meglio, vi proporr? degli script da fare e in generale degli esercizi e se avrete problemi vi dar? una mano.Non c'? limite di gradi o quant'altro, potete partecipare tutti.Laboratorio 1Fai in modo che premendo il tasto Z della tastiera ( Input::A di default) venga aperta/chiusa una finestra semi-trasparente che mostra il tempo di gioco.Soluzione: Spoiler Bon, questa ? una possibile soluzione per realizzare la nostra finestra.In Scene_Map, main: @win_time = Window_PlayTime.new @win_time.opacity = 180 @win_time.visible = false [...,loop,etc,...] @win.disposeIn Scene_Map, update: [...] if @win_time.visible @win_time.update if Input.trigger?(Input::A) @win_time.visible = (not @win_time.visible)Quest'ultima istruzione pone @win_time = true se ? false, e viceversa.Se l'avete letta prima di aver provato a farla siete dei puzzoni. ;O;/ o•°' - '°•oHei, mitä kuuluu? http://imagegen.last.fm/winterheadphones/recenttracks/5/Alato.gif Link to comment Share on other sites More sharing options...
Alato Posted December 13, 2007 Author Share Posted December 13, 2007 Le cose sono due:A) Sapete tutti (tra gli interessati al corso) farlo senza problemi.B) Non c'è nessuno interessato a fare esercizio con l'RGSS. Se è la B ditemelo subito che mi risparmio la fatica di fare i laboratori successivi, so occupare il mio tempo in modo migliore. Fatemi sapere, bye. ^^ P.s. per gli interessati che l'hanno fatto senza problemi, possono postare un "ok, tutto a posto, vai col prossimo!" o qualcosa di simile: in questo modo mi rendo almeno conto della situazione. Non è necessario postare il codice, ma non è neanche vietato. Fate voi. :P o•°' - '°•oHei, mitä kuuluu? http://imagegen.last.fm/winterheadphones/recenttracks/5/Alato.gif Link to comment Share on other sites More sharing options...
marigno Posted December 13, 2007 Share Posted December 13, 2007 Beh, sembra strano, ma io ho alcune difficoltà. o_Ci sto lavorando in questi giorni, io ci sono, dunque. Link to comment Share on other sites More sharing options...
Tio Posted December 13, 2007 Share Posted December 13, 2007 Io sono interessato, ma in questo periodo mi riesce difficile dedicarmi solo all'RGSS per altri impegni.. credo che pure altri siano nella mia stessa situazione, cmq appena ho qualcosa posto "Dopo gli ultimi Final Fantasy, ho capito solamente una cosa: che il gioco è bello quando Nomura poco."Making is not dead. You are dead.RELEASE: La Bussola d'Oro | Download | Video di anteprima - La Partenza di Hanna http://i.imgur.com/cFgc2lW.png Prova Standrama! Link to comment Share on other sites More sharing options...
Keroro Posted December 13, 2007 Share Posted December 13, 2007 non ho la minima idea di come fare senza usare gli eventi:ecco quello che avevo pensato: 1° evento:auto-iniziocall script:Game_Variables[2000]=1 $schermata = Window_PlayTime.new $schermata.opacity = 0erase event 2° eventoparallel processattivazione su Variable 2000 greater or equal then 1call script:if Input.press?(Input::A) if Game_Variables[2000]== 1 Game_Variables[2000] = 2 $schermata.opacity = 255 else Game_Variables[2000] = 1 $schermata.opacity = 0 end end dove sbaglio? 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...
Alato Posted December 13, 2007 Author Share Posted December 13, 2007 Beh, sembra strano, ma io ho alcune difficoltà. o_Ci sto lavorando in questi giorni, io ci sono, dunque.Se hai difficoltà esponile, è a questo che serve il laboratorio. Io sono interessato, ma in questo periodo mi riesce difficile dedicarmi solo all'RGSS per altri impegni.. credo che pure altri siano nella mia stessa situazione, cmq appena ho qualcosa posto Non è che l'obiettivo del laboratorio sia postare il codice: io vi propongo degli esercizi che, imho, sono utili se si vuole imparare a trafficare con l'RGSS. Se non vi vengono avete la possibilità di chiedere supporto qui. Posso darvi una mano a capire cosa c'è che non va io, ma anche gli altri partecipanti che hanno fatto lo stesso esercizio. o•°' - '°•oHei, mitä kuuluu? http://imagegen.last.fm/winterheadphones/recenttracks/5/Alato.gif Link to comment Share on other sites More sharing options...
Lord Bel Posted December 13, 2007 Share Posted December 13, 2007 (edited) Alatoh, mi sei mancatoh ç_çScommetto che a te sono mancati i miei script ç_ç soprattutto quelli pieni zeppi di commenti... xD #Mettiamo che lo script sia da inserire in Scene_Map, più che logico no? #in Main setto una variabile che sia vera quando la finestra è aperta, falsa quando è chiusa: @W_already_opened = false #Ora viene lo script vero e proprio. Il controllo di pressione del tasto #deve essere eseguito costantemente, quindi va messo in Update: if Input.trigger?(Input::A) #Controlla se la finestra è già aperta... if @W_already_opened == true #... nel qual caso la "elimina" e rimette a False la variabile. @W_time.dispose @W_already_opened = false #Oppure, se non è aperta... else #... crea la finestra... @W_time = Window_PlayTime.new #... e ne imposta una semi-trasparenza. @W_time.opacity = 100 #E ovviamente, mette a True la variabile. @W_already_opened = true end end #Fine. Facile, vero? #Con un po' di pazienza si possono mettere anche simpatici effetti di dissolvenza. #Perchè non provate? :P ......Sento che se faccio leggere ad Alah un altro script del genere, mi fucila :*Questo è l'ultimo, giuro ;D Edited December 13, 2007 by Lord Bel ~ R²S ~ - '°•o Realizing Random Scrips o•°' Link to comment Share on other sites More sharing options...
Alato Posted December 13, 2007 Author Share Posted December 13, 2007 Scusate il doppio post, ho letto ora il post di Keroro. Parti dal presupposto che se non lo specifico nel testo, non è necessario utilizzare eventi: supponiamo di voler creare qualcosa che funziona sempre, senza dover fare un call script per ogni mappa.Ora non so se hai presente il funzionamento delle scene comunque lo riassumo brevemente: un gioco in esecuzione non è altro che un programma che attiva delle scene, che vengono di volta in volta contenute nella variabile globale $scene. Quando il gioco termina viene posto $scene = nil.Perciò da quando eseguite il gioco fino al termine avrete sempre una "scena attiva" e sarà lì che dovrete andare a fare le dovute modifiche al codice. Stato iniziale: $scene non inizializzatoSi passa al menu iniziale: $scene = Scene_Title.newSelezionata la nuova partita si entra nella mappa: $scene = Scene_Map.new Mentre ci muoviamo per la mappa di gioco (qualunque essa sia) la scena attiva sarà sempre Scene_Map, perciò se vogliamo che premendo Z si ottengano certi effetti, sarà nell'update di questa scena che dovremo fare delle aggiunte/modifiche. Spero di averti dato un input utile per completare il laboratorio, per ora non ti dico altro così magari ci traffichi da solo. o•°' - '°•oHei, mitä kuuluu? http://imagegen.last.fm/winterheadphones/recenttracks/5/Alato.gif Link to comment Share on other sites More sharing options...
Alato Posted December 13, 2007 Author Share Posted December 13, 2007 @Lord Bel:Ti ho spoilerato il codice che magari qualcuno ci vuole ragionare sopra prima di leggere una possibile soluzione. Mi accingo a commentare.. .. prima di tutto ricorda che nulla si auto-aggiorna: magari un *.update può contenere una serie di aggiornamenti concatenati, però se non lo inserisci nel loop in cui si trova il gioco non verrà mai attivato. Questo per dirti che manca un @W_Time.update all'interno del metodo update di Scene_Map :EAltra cosa: non so dirti per certo se sia effettivamente peggio o altro, ma io eviterei totalmente di mettere delle inizializzazioni di oggetti all'interno di un loop. Personalmente credo sia molto meglio tutti gli oggetti all'interno dell'initialize/main e poi gestire la visibilità tramite l'attributo *.visible che vale per tutti i tipi di finestre derivanti da Window_Base ( Questo te lo lascio come compito: scopri come variare il visible in una sola riga, senza if e variabili aggiuntive (la tua flag @w_opener). Bentornato ;P o•°' - '°•oHei, mitä kuuluu? http://imagegen.last.fm/winterheadphones/recenttracks/5/Alato.gif Link to comment Share on other sites More sharing options...
Lord Bel Posted December 13, 2007 Share Posted December 13, 2007 (edited) Lascio quello sopra per chi volesse vedere i miei errori 0_oNon ci avevo pensato. Ghgh. #Nel Main/Initialize: @W_Time = Window_PlayTime.new @W_Time.opacity = 100 @W_Time.visible = false #Nel loop della scena [o in update, o nel semplice loop in Main/Inizialize]: @W_Time.refresh #Sempre nel loop della scena [meglio se in update]: if Input.trigger?(Input::A) @W_Time.visible = !@W_Time.visible end #O, se lo vuoi in una sola riga u_u: if Input.trigger?(Input::A) then @W_Time.visible = !@W_Time.visible end #Anche qui assente da vari effetti di dissolvenze. Deve essere per tutti questi "piccoli" accorgimenti che i miei script sono sempre pesantissimi, disordinatissimi e pressochè indecifrabili da esterni, benchè funzionanti :* Edited December 14, 2007 by Lord Bel ~ R²S ~ - '°•o Realizing Random Scrips o•°' Link to comment Share on other sites More sharing options...
Khan Posted December 13, 2007 Share Posted December 13, 2007 Ho provato, ma non sono riuscito completamente nella mia impresa:Ho provato due metodi: 1°METODO ho messo nella classe scene_map nel main @time_window=Window_PlayTime.new @time_window.opacity=0 #[...] @time_window.dispose poi nell'update if Input.trigger?(Input::A) if @time_window.opacity==50 @time_window.opacity=0 else @time_window.opacity=50 end endsolo che facendo così la scritta playtime non scompare.2°METODO: ho inserito questo codice ma mi dà errore nel comando dispose if Input.trigger?(Input::A) unless @time_window @time_window=Window_PlayTime.new @time_window.opacity=100 else @time_window.dispose end end It's online... It's Endless... And It's an RPG...OERPG PROJECT by http://rpgart.org/ Link to comment Share on other sites More sharing options...
Tio Posted December 13, 2007 Share Posted December 13, 2007 ci tento con un po' di logica.. vado in Scene_Map nello stesso metodo dove viene inserito il richiamo al menù (ovvero def update)..il codice che inserisco è questo:all'inizio, insieme alle altre variabili metto@variabile = 0più in basso:if Input.trigger?(Input::A) and @variabile == 0 @finestra = Window_PlayTime.new @variabile = 1 end if Input.trigger?(Input::A) and @variabile == 1 @finestra.dispose @variabile = 0 come ragionamento è giusto o ho sbagliato tutto? XD "Dopo gli ultimi Final Fantasy, ho capito solamente una cosa: che il gioco è bello quando Nomura poco."Making is not dead. You are dead.RELEASE: La Bussola d'Oro | Download | Video di anteprima - La Partenza di Hanna http://i.imgur.com/cFgc2lW.png Prova Standrama! Link to comment Share on other sites More sharing options...
Alato Posted December 14, 2007 Author Share Posted December 14, 2007 *Comunicazione di servizio: ho aggiunto una possibile soluzione nel primo post* @lord bel: Te l'ho già detto su msn ma lo ripeto per tutti: così come lo ha fatto ora va bene ma c'è un errorino che lo rende poco ottimizzato: se notate ha utilizzato *.refresh che è la funzione di aggiornamento, il che è giusto, funziona. Il punto è che se si va poi a guardare la classe Windows_PlayTime si nota che oltre a un metodo refresh c'è un metodo update: questo non fa altro che attivare il refresh solamente quando c'è un effettiva modifica del contenuto della finestra. Questo evita futuri rallentamenti (un refresh al secondo invece di quaranta su mappa, qui non fa la differenza ma in altri script più complessi la fa).Comunque lo giustifichiamo perché l'ha fatto di fretta senza leggere la classe della finestra. p.s. manca pure il dispose della finestra >:| ( :*** ) (( però manca davvero >:| )) @khan: Parto dal 2° Metodo: non so bene perché ti dia l'errore, probabilmente fa dispose ad un oggetto già "disposato"e quindi ti implode. In ogni caso mi auto-cito da una risposta a lord bel di prima:"Non so dirti per certo se sia effettivamente peggio o altro, ma io eviterei totalmente di mettere delle inizializzazioni di oggetti all'interno di un loop. Personalmente credo sia molto meglio tutti gli oggetti all'interno dell'initialize/main". Insomma, come metodo sto qui non va per nulla bene.. XD 1° Metodo: ok, così ci siamo.. ti do un suggerimento che potrebbe sbloccarti la situazione: esiste un attributo delle finestre di tipo accessor (modificabile e leggibile quindi) che permette di modificare la visibilità della finestra.Esempio: @wintime.visible = true oppure @wintime.visible = falseIn questo modo ti imposti un'opacità per quando visible è true, e se lo cambi in false la finestra sparisce del tutto.p.s. no scordarti l'aggiornamento della finestra all'interno dell'update di scene_map @tio Tio ** mi sembra di essere tornato su rgss world (ricordi? XDDDD)Tornando a noi... il ragionamento così a sentimento funzionerebbe.. c'è da dire però che a livello pratico non va per nulla bene. I nuovi oggetti vanno creati praticamente sempre all'interno di initialize/main, creare e distruggere un oggetto continuamente è un lavoro piuttosto impegnativo per il programma. Quindi la strategia più adatta è creare quando la scena viene chiamata e distruggere quando si sta uscendo dalla scena, quindi l'operazione viene eseguita una sola volta. A questo punto hai la tua finestra sempre presente a schermo e dovrai pensare a qualcosa per farla sparire.. senza effettivamente distruggerla *tossicchia*.. L'esca l'ho lanciata, mo aspetto che abbocchi. ;O; o•°' - '°•oHei, mitä kuuluu? http://imagegen.last.fm/winterheadphones/recenttracks/5/Alato.gif Link to comment Share on other sites More sharing options...
Tio Posted December 14, 2007 Share Posted December 14, 2007 uhm, capito.. avevo già intuito la cosa, poi ho visto la soluzione per avere la conferma XD non mi ero nemmeno accorto che c'era il main (mi era sfuggito XD )..tutto chiaro cmq. e se volessi fare che si sente pure un effetto sonoro quando premi il tasto Z, basta aggiungere il comando apposito in update oppure è necessario creare un nuovo metodo come per call_menu? (anche se credo che volendo si possa fare tutto da def update, anche se viene un po' incasinato XD ) (bei tempi quelli di rgss world su forumfree cmq ç_ç XD "Dopo gli ultimi Final Fantasy, ho capito solamente una cosa: che il gioco è bello quando Nomura poco."Making is not dead. You are dead.RELEASE: La Bussola d'Oro | Download | Video di anteprima - La Partenza di Hanna http://i.imgur.com/cFgc2lW.png Prova Standrama! Link to comment Share on other sites More sharing options...
Alato Posted December 14, 2007 Author Share Posted December 14, 2007 Se vuoi aggiungere un suono probabilmente lo vuoi aggiungere quando premi il tasto.. quindi considerando che per attivare un effetto sonoro basta una riga di codice penso sia chiaro dove questa vada messa.. :D Prova a farlo anyway ò_ò o•°' - '°•oHei, mitä kuuluu? http://imagegen.last.fm/winterheadphones/recenttracks/5/Alato.gif Link to comment Share on other sites More sharing options...
DracoMT2 Posted January 15, 2008 Share Posted January 15, 2008 (edited) Non mi sembra tanto più facile del 3... comunque posso provare...Da perfetto ingorante in materia di script quale sono, ho combinato un pasticcio xD Ho creato una classe sopra main e ci ho incollato questo:if input::Adef initialize super(0, 0, 160, 96) self.contents = Bitmap.new(width - 32, height - 32) self.contents.clear self.contents.font.color = system_color self.contents.draw_text(4, 0, 120, 32, "Tempo di Gioco") @total_sec = Graphics.frame_count / Graphics.frame_rate hour = @total_sec / 60 / 60 min = @total_sec / 60 % 60 sec = @total_sec % 60 text = sprintf("%02d:%02d:%02d", hour, min, sec) self.contents.font.color = normal_color self.contents.draw_text(4, 32, 120, 32, text, 2) endendL'if sono riuscito a scriverlo io, il resto è spudoratamente copincollato.Ho confrontato con la soluzione e non c'entra nulla xD Edited January 15, 2008 by DracoMT2 http://img396.imageshack.us/img396/5114/bannerqj2.jpg And the Dragon will Rise with the Twilight Star... ...again. Sei nuovo? Leggi qui. http://img505.imageshack.us/img505/210/banneradtnewnt7ew3.jpg Link to comment Share on other sites More sharing options...
Alato Posted January 15, 2008 Author Share Posted January 15, 2008 Uhm... in effetti ci sono molte cose che ti sono poco chiare... e in effetti me lo ricordavo più facile sto laboratorio.. XD Hai letto le lezioni che ho fatto eoni fa? Forse quelle ti possono dare le basi giuste per capirci qualcosa. :P o•°' - '°•oHei, mitä kuuluu? http://imagegen.last.fm/winterheadphones/recenttracks/5/Alato.gif Link to comment Share on other sites More sharing options...
Recommended Posts