-
Posts
81 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Posts posted by BlackShadow91
-
-
Il torace della ragazza è enorme
Icarus te l'avevo detto!!!!
Hai dato il colore, ma le linee di contorno son ancora un po' sporcheAnche questo te l'avevo detto!!!!
Le gambe non sono accavallate o meglio l'altro ginocchio sotto non spunta! XDNon ci avevo fatto caso!!!!! XD
-
forse potrebbe essere per quello spazio, eroe invece di eroe ma non sono sicure
No quello è solo un errore di copia nello script è scritto senza spazio.
io lo chiamo così cliccando su un evento$menu = Scene_Menu1.new
tu come lo apri?
$scene = Scene_Menu1.new
Per quanto riguarda il perfezionamento della grafica io direi di preoccuparci prima dei problemi di ordine tecnico e poi di migliorare il tutto. Anche perchè se non riusciamo a risolvere qualcosa magari dovremmo un po' cambiare l'impostazione!!! Che ne dici?
Il codice che hai postato lo guardo dopo che ora devo andare!!!!
-
Ho modificato un po' la grandezza di finestre e scritte:
http://img201.imageshack.us/img201/8149/immaginemenu.png
Ecco lo script:
#------------------------------------------------------------------------------## Menù personalizzato creato da BlackShadow91, idru, Lomax af, Khorne86 ##------------------------------------------------------------------------------## Istruzioni per l'uso ## Per una corretta visualizzazione del menù non è possibile creare party con ## più di 4 membri. ## Per la corretta visualizzazione dei parametri si deve modificare la linea 304# # della classe Window_Base con: # # "self.contents.draw_text(x + 70, y, 36, 32, parameter_value.to_s, 2)" ## (senza virgolette) ## ##------------------------------------------------------------------------------# #------------------------------------------------------------------------------##1)Scena del menù # #------------------------------------------------------------------------------#class Scene_Menu1 def main#Il ciclo for crea un array all'interno del quale si collocano le istanze della #classe Window_Eroe for i in 0...$game_party.actors.size #Creazione array @eroe = [] #Assegnazione istanze di classi @eroe[i]=Window_Eroe.new(i) end #Scongela una scena Graphics.transition #Aggiorna il contenuto loop do Graphics.update Input.update update if $scene != self break end end #Congela la scena Graphics.freeze for i in 0...$game_party.actor.size @eroe[i].dispose end end def update endend #------------------------------------------------------------------------------##2)Finestre degli eroi ##------------------------------------------------------------------------------# class Window_Eroe < Window_Base def initialize(n)#inizializzazione della variabile da usare per deeterminare la posizione del party @n = n #settaggio dimensioni della finestra super(posiz. X, posiz. Y, largh.,alt.) # per la cordinata x: calcola il resto di 2 dall'actor_id e lo moltiplica per 320, # per es 0%2=0; 1%2=1; 2%2=0; 3%2=1 super (n % 2 * 320, (n / 2) % 2 * 210,320,210) #creazione bitmap self.contents = Bitmap.new(width - 32,height - 32) #formattazione testo self.contents.font.name = "AR BERKLEY" self.contents.font.size = 28 testo self.contents.font.name = "Times New Roman" self.contents.font.size = 14 parametri grafica_eroe end def testo #pulire la finestra self.contents.clear#La variabile @actor assume l'id dell'eroe che occupa la posizione del party#corrispondente alla finestra su cui si deve scrivere @actor = $game_party.actors[@n] draw_actor_name(@actor, 190, 0) end def parametri draw_actor_parameter(@actor, 0, 86, 0) draw_actor_parameter(@actor, 180, 86, 1) draw_actor_parameter(@actor, 180, 109, 2) draw_actor_parameter(@actor, 0, 109, 3) draw_actor_parameter(@actor, 0, 132, 4) draw_actor_parameter(@actor, 180, 132, 5) draw_actor_parameter(@actor, 0, 155, 6) end def grafica_eroe draw_actor_graphic(@actor, 32, 55) endend
P.S.
Idru prova a vedere se ora ti funziona. E un'altra cosa non puoi togliere il dispose perchè è la funzione che permette di eliminare le finestre una volta usciti dalla scena.
EDIT:Nessuno sa dirmi perchè la def update nn funziona se la imposto così????
def updatefor i in 0...$game_party.actors.sizeeroe [i].updateendend
EDIT2:
Visto le critiche sul fatto che si possono utilizzare massimo 4 pg vorrei sapere come potremmo creare un menù su questo stile non sapendo quante finestre massimo possiamo creare??????
EDIT3:
Ora che abbiamo capito come scrivere i parametri nel menu dobbiamo concentrarci sul menù in basso e sul rendere le finestre degli eroi selezionabili.
-
Io direi di rimpicciolire di 10 lungo l'asse y tutte le finestre così da avere la finestra in basso più ampia.
Per il font bisogna fare diverse prove e trovare il migliore.
P.S.
Lomax ed io stiamo ridefinendo la seconda lezione di RGSS appena è pronta la posto.
EDIT:
@idru
perchè hai sostituito main con initialize?? Io so che le classi scene devono avere il main per funzionare correttamente
C'è un problema nell'update:
for i in 0...$game_party.actors.size @eroe_update = @eroe[i] @eroe_update.update end
Perchè non mi riconosce il metodo update delle finestre????? L'array contiene nelle posizioni da 0 a 3 le finestre dei membri del party.
-
Un po' come questa istruzione:
CODE -> ruby
1
super (actor_id % 2 * 320, (actor_id / 2)%2*220,320,220)
Parsed in 0.008 seconds at 6.81 KB/s, using GeSHi 1.0.8.3
che funziona correttamente per puro caso, visto che mostrate meno di 5 schede . . .
infatti il nostro intento è fare un menù solo per un party di max 4 pg! =D
-
Rispondo velocemente che poi devo andare offline!!!!
Il tuo codice non lo vedo ora perchè non ho tempo. Più tardi gli darò un occhiata e vediamo se ci capirò qualcosa.
Per la finestra del menù forse te ne spunta una perchè hai un solo pg nel party. Infatti lo script fa apparire una window per ogni personaggio nel party.
-
Ok, fatto!!! Ecco il codice con tutta la spiegazione:
#Scena del menùclass Scene_Menu1 def main#Il ciclo for crea un array all'interno del quale si collocano le istanze della #classe Window_Eroe for i in 0...$game_party.actors.size #Creazione array @eroe = [] #Assegnazione istanze di classi @eroe[i]=Window_Eroe.new(i) end #Scongela una scena Graphics.transition #Aggiorna il contenuto loop do Graphics.update Input.update update if $scene != self break end end #Congela la scena Graphics.freeze @eroe.dispose end def update#Il ciclo for genera un update di ogni componente dell'array for i in 0...$game_party.actors.size @eroe[i]= @eroe_update end endend #Creazione finestra per tutti gli eroi, subito dopo inizialize c'è la variabile# che identifica l'eroe. quando si richiama la classe con .new va specificato l'id dell'eroe. class Window_Eroe < Window_Base def initialize(n) @n = n #settaggio dimensioni della finestra super(posiz. X, posiz. Y, largh.,alt.) # per la cordinata x: calcola il resto di 2 dall'actor_id e lo moltiplica per 320, # per es 0%2=0; 1%2=1; 2%2=0; 3%2=1 super (n % 2 * 320, (n / 2)%2*220,320,220) #creazione bitmap self.contents = Bitmap.new(width - 32,height - 32) #formattazione testo self.contents.font.name = "Arial" self.contents.font.size = 22 testo end def testo #pulire la finestra self.contents.clear#La variabile @actor assume l'id dell'eroe che occupa la posizione del party#corrispondente alla finestra su cui si deve scrivere @actor = $game_party.actors[@n]#settaggio scritta (x,y,larghezza,altezza,scitta) self.contents.draw_text(0,0,220,220,@actor.name) end end
Mi sembra impossibile che stessi impazzendo per un errore di battitura!!!!!! XD
Cmq ora mi metto a lavoro sulle dimensioni esatte delle finestre e sulla posizione del nome!!!!
-
no nn funziona!!
-
L'ho fatto con la dichiarazione dell'array!!!!! (Pensavo si facesse in automatico)
Ora però il problema è con l'update. se .update lo metto all'array in un ciclo
for i in 0...$game_party.actors.size @eroe[i].update end
mi da errore.
Se faccio
for i in 0...$game_party.actors.size @eroe[i]=@eroe_update @eroe_update.update end
mi da pure errore.
Non riesco a capire il problema. Forse salto qualche passaggio?!?!?!?!?!?!?!
-
Non ci credo mi ero dimenticato altezza e larghezza!!!!!!!!! XD
EDIT:
Mi sento molto niubbo!!!!! Quando creo l'array faccio così:
for i in 0...$game_party.actors.size @eroe[i]=Window_Eroe.new(i) end
Però non riconosce il metodo "[]=" ma che vuole dire? Non si assegnano così i valori ad un array??
-
@guiver
Intanto ho fatto le prove con il ciclo for e non ho utilizzato un array ma mi funziona. E' sbagliato il procedimento?
Questo è il ciclo che ho usato al posto degli if:
for i in 0...$game_party.actors.size @eroe = Window_Eroe.new(i) end
Ora devo vedere come utilizzare i game_party!!!!
EDIT:
Nella classe window_base c'è un metodo che si chiama draw_actor_name. Non lo posso utilizzare per scrivere il nome delle persone nel party? Non riesco a capire con esattezza cosa devo mettere al posto di actor nell'argomento!!
Intanto ho modificato così lo script e l'unico errore viene nell'utlima riga del metodo testo
#Scena del menùclass Scene_Menu1 def main for i in 0...$game_party.actors.size @eroe = Window_Eroe.new(i) @eroe.opacity = 100 end #Scongela una scena Graphics.transition #Aggiorna il contenuto loop do Graphics.update Input.update update if $scene != self break end end #Congela la scena Graphics.freeze @eroe.dispose end def update for i in 0...$game_party.actors.size @eroe.update end endend #Creazione finestra per tutti gli eroi, subito dopo inizialize c'è la variabile# che identifica l'eroe. quando si richiama la classe con .new va specificato l'id dell'eroe. class Window_Eroe < Window_Base def initialize(n) @n = n #settaggio dimensioni della finestra super(posiz. X, posiz. Y, largh.,alt.) # per la cordinata x: calcola il resto di 2 dall'actor_id e lo moltiplica per 320, # per es 0%2=0; 1%2=1; 2%2=0; 3%2=1 super (n % 2 * 320, (n / 2)%2*220,320,220) #creazione bitmap self.contents = Bitmap.new(width - 32,height - 32) #formattazione testo self.contents.font.name = "Arial" self.contents.font.size = 22 testo end def testo #pulire la finestra self.contents.clear @actor = $game_party.actors[@n] self.contents.draw_text(0,0,@actor.name) end end
Cosa sbaglio?
-
Io ho provato questo ciclo al posto degli if
for i in 1...$game_party.actors.size @eroe = Windiw_Eroe.new(i) end
ma da errore!!!
EDIT:
Errore di battitura: al posto di window avevo scritto windiw!!!!!! XD
-
Sisi, penso di aver capito, e forse so come modificare lo script. Ora ci provo e poi lo posto.
EDIT:
#Scena del menùclass Scene_Menu1 def main#Creo tante finestre quanti i membri nel party (min 1 - max 4) if $game_party.actors.size == 1 @eroe1 = Window_Eroe.new(1) @eroe1.opacity = 100 elsif $game_party.actors.size == 2 @eroe1 = Window_Eroe.new(1) @eroe2 = Window_Eroe.new(2) @eroe1.opacity = 100 @eroe2.opacity = 100 elsif $game_party.actors.size == 3 @eroe1 = Window_Eroe.new(1) @eroe2 = Window_Eroe.new(2) @eroe3 = Window_Eroe.new(3) @eroe1.opacity = 100 @eroe2.opacity = 100 @eroe3.opacity = 100 elsif $game_party.actors.size == 4 @eroe1 = Window_Eroe.new(1) @eroe2 = Window_Eroe.new(2) @eroe3 = Window_Eroe.new(3) @eroe4 = Window_Eroe.new(4) @eroe1.opacity = 100 @eroe2.opacity = 100 @eroe3.opacity = 100 @eroe4.opacity = 100 end #Scongela una scena Graphics.transition #Aggiorna il contenuto loop do Graphics.update Input.update update if $scene != self break end end #Congela la scena Graphics.freeze window.dispose end def update if $game_party.actors.size == 1 @eroe1.update elsif $game_party.actors.size == 2 @eroe1.update @eroe2.update elsif $game_party.actors.size == 3 @eroe1.update @eroe2.update @eroe3.update elsif $game_party.actors.size == 4 @eroe1.update @eroe2.update @eroe3.update @eroe4.update end endend #Creazione finestra per tutti gli eroi, subito dopo inizialize c'è la variabile# che identifica l'eroe. quando si richiama la classe con .new va specificato l'id dell'eroe. class Window_Eroe < Window_Base def initialize(actor_id) #settaggio dimensioni della finestra super(posiz. X, posiz. Y, largh.,alt.) # per la cordinata x: calcola il resto di 2 dall'actor_id e lo moltiplica per 320, # per es 0%2=0; 1%2=1; 2%2=0; 3%2=1 super (actor_id % 2 * 320, (actor_id / 2)%2*220,320,220) #creazione bitmap self.contents = Bitmap.new(width - 32,height - 32) #formattazione testo self.contents.font.name = "Arial" self.contents.font.size = 22 testo end def testo #pulire la finestra self.contents.clear end end
Ho modificato lo script in questo modo e funziona. Però volevo chiedere: C'è un modo più elegante per fare tutto questo così da rendere lo script più leggero? E un altra domanda: Nel metodo initialize della classe window posso mettere come argomento quello che voglio oppure deve per forza andarci l'actor_id?
-
Forse ho capito!! Io ho dato per scontato che i personaggi del party fossero i primi 4 del database mentre forse dovrei creare qualcosa di più generale. Che ne dici giver? Ho pensato giusto?
-
Grazie giver in effetti non avevo valutato bene quanto era lo spazio rimasto per scrivere. Cmq per ora prima di andare a modificare le finestre sto cercando di risolvere la questione del nome. Ho modificato lo script in questo modo:
#Scena del menùclass Scene_Menu1 def main @eroe1 = Window_Eroe.new(001) @eroe2 = Window_Eroe.new(002) @eroe3 = Window_Eroe.new(003) @eroe4 = Window_Eroe.new(004) @eroe1.opacity = 100 @eroe2.opacity = 100 @eroe3.opacity = 100 @eroe4.opacity = 100 #Scongela una scena Graphics.transition #Aggiorna il contenuto loop do Graphics.update Input.update update if $scene != self break end end #Congela la scena Graphics.freeze window.dispose end def update @eroe1.update @eroe2.update @eroe3.update @eroe4.update endend #Creazione finestra primo eroe #Creazione finestra per tutti gli eroi, subito dopo inizialize c'è la variabile# che identifica l'eroe. quando si richiama la classe con .new va specificato l'id dell'eroe. class Window_Eroe < Window_Base def initialize(actor_id) # Assegno ad una variabile di classe l'actor_id passato al metodo così da # utilizzarlo in altro metodo @actor_id = actor_id #settaggio dimensioni della finestra super(posiz. X, posiz. Y, largh.,alt.) # per la cordinata x: calcola il resto di 2 dall'actor_id e lo moltiplica per 320, # per es 0%2=0; 1%2=1; 2%2=0; 3%2=1 super (actor_id % 2 * 320, (actor_id / 2)%2*220,320,220) #creazione bitmap self.contents = Bitmap.new(width - 32,height - 32) #formattazione testo self.contents.font.name = "Arial" self.contents.font.size = 22 testo end def testo #pulire la finestra self.contents.clear @actor = $game_party.actors[@actor_id] #testo da inserire self.contents.draw_text(0,0,120,32, @actor.name) end end
Però continua a darmi errore dicentomi "Undefined method name for Nil:nil:Class"
-
Innanzittutto grazie, ho passato tutto il pomeriggio per cercare un metodo che portasse ad una sola inizializzazione tutte e 4 le window.
Per provare lo script devi creare un evento con call script e scrivere "$scene = Scene_Menu1.new" (senza virgolette ovviamente.
Cmq l'ho provato e nel metodo del testo da scrivere in particolare nella riga
@actor = actor_id
che ho sostituito con:
@actor = $actor_id
Così non mi da più erre qua ma alla linea successiva in particolare non riconosce il .name
Hai qualche idea???
-
Grazie idru, per me va bene così.
Cmq ho completato lo script che avevo postato prima organizzando tutte e quattro le finestre. Vedete se le dimensioni vanno bene o se dobbiamo modificarle.
#Scena del menùclass Scene_Menu1 def main @eroe1 = Window_Eroe1.new @eroe2 = Window_Eroe2.new @eroe3 = Window_Eroe3.new @eroe4 = Window_Eroe4.new @menu_basso = Window_Comune.new #Scongela una scena Graphics.transition #Aggiorna il contenuto loop do Graphics.update Input.update update if $scene != self break end end #Congela la scena Graphics.freeze window.dispose end def update @eroe1.update @eroe2.update @eroe3.update @eroe4.update @menu_basso.update endend #Creazione finestra primo eroe class Window_Eroe1 < Window_Base def initialize #settaggio dimensioni della finestra super(posiz. X, posiz. Y, largh.,alt.) super (0,0,320,220) #creazione bitmap self.contents = Bitmap.new(width - 32,height - 32) #formattazione testo self.contents.font.name = "Arial" self.contents.font.size = 22 testo end def testo #pulire la finestra self.contents.clear #testo da inserire self.contents.draw_text(0,0,120,32,"BlackShadow91") end end #Creazione finestra secondo eroe class Window_Eroe2 < Window_Base def initialize #settaggio dimensioni della finestra super(posiz. X, posiz. Y, largh.,alt.) super (320,0,320,220) #creazione bitmap self.contents = Bitmap.new(width - 32,height - 32) #formattazione testo self.contents.font.name = "Arial" self.contents.font.size = 22 testo end def testo #pulire la finestra self.contents.clear #testo da inserire self.contents.draw_text(0,0,120,32,"BlackShadow91") end end #reazione finestra terzo eroeclass Window_Eroe3 < Window_Base def initialize #settaggio dimensioni della finestra super(posiz. X, posiz. Y, largh.,alt.) super (0,220,320,220) #creazione bitmap self.contents = Bitmap.new(width - 32,height - 32) #formattazione testo self.contents.font.name = "Arial" self.contents.font.size = 22 testo end def testo #pulire la finestra self.contents.clear #testo da inserire self.contents.draw_text(0,0,120,32,"BlackShadow91") end end #Creazione finestra quarto eroe class Window_Eroe4 < Window_Base def initialize #settaggio dimensioni della finestra super(posiz. X, posiz. Y, largh.,alt.) super (320,220,320,220) #creazione bitmap self.contents = Bitmap.new(width - 32,height - 32) #formattazione testo self.contents.font.name = "Arial" self.contents.font.size = 22 testo end def testo #pulire la finestra self.contents.clear #testo da inserire self.contents.draw_text(0,0,120,32,"BlackShadow91") end end #Creazione della finestra in bassoclass Window_Comune < Window_Base def initialize #settaggio dimensioni della finestra super(posiz. X, posiz. Y, largh.,alt.) super (0,440,640,40) #creazione bitmap self.contents = Bitmap.new(width - 32,height - 32) #formattazione testo self.contents.font.name = "Arial" self.contents.font.size = 22 testo end def testo endend
Ora inizia la parte più difficile, cioè andare ad organizzare tutte le scritte e i parametri.
una domanda rivolta chi non è niubbo come me: Come faccio a cambiare la trasparenza delle finestre in una scena?
-
Io, invece, continuo a lavorare a quello script e vediamo cosa ne viene fuori. Appena ho qualche risultato lo posto. Lomax aspetto la seconda lezione per studiarla e sistemarla così vediamo di fare un bel lavoro.
@idru
Direi di mettere i file delle guide sul primo post così che chi entra non le debba andare a cercare tra tutti i post!!!!
@Lomax
Mi potresti passare il link delle lezioni di M50 che io non sono riuscito a trovarle?
-
Finito di editare la prima lezione: ecco il link da mediafire
Lomax fammi sapere che ne pensi.
-
Scongelare la scena, almeno da quello che ho capito, serve per apportare modifiche all'interno. Quindi per potere controllare e aggiornare il contenuto della scena. Il loop invece ripete continuamente un update della grafica e degli input fino a quando la scena non cambia(if $scene != self).
Per quanto riguarda la scelta del XP direi che è la scelta più giusta visto che cmq lavoriamo su di esso.
-
Piccolo problema: lo script che ho scritto su Rpg maker XP seguendo il tutorial di Fanton sembra non essere compatibile col Vx. Lo posto di seguito:
#Creazione della scenaclass Scene_Menu def main @window = Window_pg1.new #Scongela una scena Graphics.transition #Aggiorna il contenuto loop do Graphics.update Input.update update if $scene != self break end end #Congela la scena Graphics.freeze window.dispose end def update @window.update endend #Creazione di una finestra personaggio (Pg1) class Window_pg1 < Window_Base def initialize #settaggio dimensioni della finestra super(posiz. X, posiz. Y, largh.,alt.) super (0,0,274,176) #creazione bitmap self.contents = Bitmap.new(width - 32,height - 32) #formattazione testo self.contents.font.name="Arial" self.contents.font.size=22 testo end def testo self.contents.draw_text(0,0,120,32,"BlackShadow91") end end
EDIT:
@Lomax
Mi sto permettendo di copiare la tua guida su di un documento word così da renderla più leggibile dal punto di vista grafico. Appena finisco la posto.
P.S.
Ho trovato un piccolo errore nella parte del return: Quando alla funzione somma passi i valori (1 ,3) non è la variabile c ad assumerli all'interno del metodo ma sono le variabili a e b. Alla variabile c viene successivamente assegnatoil risultato della somma e il valore di c viene ritornato dal metodo. Ti dico questo perchè l'operatore di assegnamento ("=") ha priorità inferiore agli operatori aritmetici. Altra cosa agli operatori aritmetici dovresti aggiungere il modulo ("%") che calcola il resto di una divisione tra interi. Cmq bel lavoro!!! =)
-
Decisamente meglio dei primi!!!!!!!!! =D
-
Per quanto riguarda la creazione da zero, seguendo i tutorial di Fanton su questo forum sn riuscito ad imparare a creare una scena di menù da zero con le relative window o immagini. Ora ne creo una e la posto spiegando che cosa faccio nello script. Non so però se riuscirò a farlo stasera o se lo farò domani pomeriggio. Perchè domani mattina vado a studiare programmazione in C da un mio collega universitario. Quindi appena avrò tempo posterò.
-
@idru:
Per l'immagine di sfondo ne mettiamo una noi neutra così che chi la utilizza può decidere se tenerla oppure cambiarla.
per le barre HP,MP,ecc... forse è meglio scrivere direttamente ii valori.
Per le icone in basso mi sembra una buona idea.

Laboratorio di gruppo RGSS
in Supporto RGSS (XP)
Posted