Nome: Cambio Personaggi del Party
Autore: GTOnizuka
Codice:
Spoiler
Spoiler
############################################################################### # Script di Cambio Party # # # # Versione: 1.0.1 # # Creato ed Ideato da: GTOnizuka © 2006 # ############################################################################### # # # Numero Massimo Personaggi: 9 # # # ############################################################################### # # # Features: # # - Possibilità di cambiare i mebri del party con tutti i personaggi # # del database # # - Non si può uscire dalla schermata se non c'è almeno un personaggio # # - Il numero dei personaggi da aggiungere nel party si può decidere # # # # Bug Fix: # # - Corretto un piccolo bug che permetteva di selezionare più volte # # lo stesso personaggio # # # ############################################################################### #################### # Modulo variabili #################### module Valori_Vari HP = "HP:" #HP MP = "MP:" #MP NOME = "Nome:" #Nome LIVELLO = "Livello:" #Livello EXP_LVL_UP = "Exp Lvl Up:" #Esperienza al prossimo livello STR = "STR:" #Forza DEX = "DEX:" #Destrezza AGI = "AGI:" #Agilità INT = "INT:" #Intelligenza ATK = "ATK:" #Attacco PDEF = "PDEF:" #Difesa Fisica MDEF = "MDEF:" #Difesa Magica EVA = "EVA:" #Evasione TITOLO = "Cambio Party" #Titolo schermata FONT_TYPE = "Arial" #Font della schermata NUMERO_PG = 8 #Numero dei personaggi totali NUM_PG_MIN = 1 #Numero dei personaggi del party minimo... #...per uscire dalla schermata NUM_PG_MAX = 4 #Numero dei personaggi che si possono... #...inserire nella schermata end ################################# # Ottengo lo sprite del battler ################################# class Fig_PG < RPG::Sprite def initialize super() end def mostra_fig(id_pg,x,y) #Ottengo l'immagine @nome = $data_actors[id_pg].battler_name @tonalita = $data_actors[id_pg].battler_hue self.bitmap = RPG::Cache.battler(@nome, @tonalita) @width = bitmap.width @height = bitmap.height self.ox = @width / 2 self.oy = @height #Setto l'opacità self.opacity = 255 #Coordinate # Set sprite coordinates self.x = x self.y = y self.z = 100 end def del_fig self.bitmap.dispose end end ############################################### # Creo il riquadro con scritto "Cambio Party" ############################################### class Nome_Finestra < Window_Base def initialize #Creo il riquadro super(0,0,636,70) #Settaggi di bitmap, nome font e dimensione font self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = Valori_Vari::FONT_TYPE self.contents.font.size = 22 self.contents.font.bold = true #Setto l'opacità della finestra self.back_opacity = 255 #Pulisco il riquadro self.contents.clear #Imposto come colore del font quello di sistema self.contents.font.color = normal_color #Disegno la scritta self.contents.draw_text(240, 0, 150, 30, Valori_Vari::TITOLO) end end ################################################ # Creo la schermata con i personaggi del party ################################################ class Party_Attuale < Window_Base def initialize #Creo il riquadro super(0,71,160,180) #Settaggi di bitmap, nome font e dimensione font self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = Valori_Vari::FONT_TYPE self.contents.font.size = 18 end def add_pg(id_pg,x,y) draw_actor_graphic($game_actors[id_pg],x,y) end end ############################################## # Creo la schermata con tutti i pg rimanenti ############################################## class PG_Rimanenti < Window_Selectable def initialize #Creo il riquadro super(161,71,476,180) #Settaggi di bitmap, nome font e dimensione font self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = Valori_Vari::FONT_TYPE self.contents.font.size = 18 #Disposizione Griglia @item_max = Valori_Vari::NUMERO_PG @row_max = 1 @column_max = Valori_Vari::NUMERO_PG end def refresh self.contents.clear @x=20 @y=55 for i in 1..Valori_Vari::NUMERO_PG if (i==1) draw_actor_graphic($game_actors[i],@x,@y) elsif(i>=2 and i<=9) @x += 50 draw_actor_graphic($game_actors[i],@x,@y) end end end def update_cursor_rect if @index < 0 self.cursor_rect.empty else self.cursor_rect.set(@index * 50, 0, 40, 56) end end end ######################################################### # Crea la schermata con tutti i dati del pg selezionato ######################################################### class Status_PG < Window_Base def initialize #Creo il riquadro super(0,251,636,226) #Settaggi di bitmap, nome font e dimensione font self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = Valori_Vari::FONT_TYPE self.contents.font.size = 18 @pg_sprite=Fig_PG.new end def refresh(id_pg) self.contents.clear @altezza=0 @sinistra_col1=200 @sinistra_col2=400 #Mostro la figura del pg @pg_sprite.mostra_fig($data_actors[id_pg].id,80,460) #Imposto il colore del font self.contents.font.color = normal_color #Scrivo le statistiche del pg ######################### COLONNA 1 ################################ #Nome self.contents.font.bold = true self.contents.draw_text(@sinistra_col1,@altezza,80,50,Valori_Vari::NOME) #Nome - Valore self.contents.font.bold = false self.contents.draw_text(@sinistra_col1+105,@altezza,100,50,$data_actors[$data_actors[id_pg].id].name) #HP self.contents.font.bold = true self.contents.draw_text(@sinistra_col1,@altezza+20,50,50,Valori_Vari::HP) #HP - Numero self.contents.font.bold = false self.contents.draw_text(@sinistra_col1+80,@altezza+20,70,50,$game_actors[$data_actors[id_pg].id].hp.to_s,2) #MP self.contents.font.bold = true self.contents.draw_text(@sinistra_col1,@altezza+40,50,50,Valori_Vari::MP) #MP - Numero self.contents.font.bold = false self.contents.draw_text(@sinistra_col1+80,@altezza+40,70,50,$game_actors[$data_actors[id_pg].id].sp.to_s,2) #Livello self.contents.font.bold = true self.contents.draw_text(@sinistra_col1,@altezza+60,100,50,Valori_Vari::LIVELLO) #Livello - Numero self.contents.font.bold = false self.contents.draw_text(@sinistra_col1+100,@altezza+60,50,50,$game_actors[$data_actors[id_pg].id].level.to_s,2) #EXP Rimanente self.contents.font.bold = true self.contents.draw_text(@sinistra_col1,@altezza+80,150,50,Valori_Vari::EXP_LVL_UP) #EXP Rimanente - Valore self.contents.font.bold = false self.contents.draw_text(@sinistra_col1+50,@altezza+80,100,50,$data_actors[$data_actors[id_pg].id].exp_basis.to_s,2) ######################### COLONNA 2 ################################ #Forza self.contents.font.bold = true self.contents.draw_text(@sinistra_col2,@altezza,50,50,Valori_Vari::STR) #Forza - Numero self.contents.font.bold = false self.contents.draw_text(@sinistra_col2+15,@altezza,100,50,$game_actors[$data_actors[id_pg].id].str.to_s,2) #Destrezza self.contents.font.bold = true self.contents.draw_text(@sinistra_col2,@altezza+20,50,50,Valori_Vari::DEX) #Destrezza - Numero self.contents.font.bold = false self.contents.draw_text(@sinistra_col2+15,@altezza+20,100,50,$game_actors[$data_actors[id_pg].id].dex.to_s,2) #Agilità self.contents.font.bold = true self.contents.draw_text(@sinistra_col2,@altezza+40,50,50,Valori_Vari::AGI) #Agilità - Numero self.contents.font.bold = false self.contents.draw_text(@sinistra_col2+15,@altezza+40,100,50,$game_actors[$data_actors[id_pg].id].agi.to_s,2) #Intelligenza self.contents.font.bold = true self.contents.draw_text(@sinistra_col2,@altezza+60,50,50,Valori_Vari::INT) #Intelligenza - Numero self.contents.font.bold = false self.contents.draw_text(@sinistra_col2+15,@altezza+60,100,50,$game_actors[$data_actors[id_pg].id].int.to_s,2) #Attacco self.contents.font.bold = true self.contents.draw_text(@sinistra_col2,@altezza+80,50,50,Valori_Vari::ATK) #Attacco - Numero self.contents.font.bold = false self.contents.draw_text(@sinistra_col2+15,@altezza+80,100,50,$game_actors[$data_actors[id_pg].id].atk.to_s,2) #Difesa Fisica self.contents.font.bold = true self.contents.draw_text(@sinistra_col2,@altezza+100,70,50,Valori_Vari::PDEF) #Difesa Fisica - Numero self.contents.font.bold = false self.contents.draw_text(@sinistra_col2+15,@altezza+100,100,50,$game_actors[$data_actors[id_pg].id].pdef.to_s,2) #Difesa Magica self.contents.font.bold = true self.contents.draw_text(@sinistra_col2,@altezza+120,70,50,Valori_Vari::MDEF) #Difesa Magica - Numero self.contents.font.bold = false self.contents.draw_text(@sinistra_col2+15,@altezza+120,100,50,$game_actors[$data_actors[id_pg].id].mdef.to_s,2) #Evasione self.contents.font.bold = true self.contents.draw_text(@sinistra_col2,@altezza+140,50,50,Valori_Vari::EVA) #Evasione - Numero self.contents.font.bold = false self.contents.draw_text(@sinistra_col2+15,@altezza+140,100,50,$game_actors[$data_actors[id_pg].id].eva.to_s,2) end def del_fig @pg_sprite.del_fig end end ######################### # Inizializzazione Menù ######################### class Cambia_Party def initialize #Inizializzo la variabile dei membri del party @in_party=0 #Inizializzo il vettore contentente l'id del personaggio che è già nel party @party=[nil,nil,nil,nil] #Inizializzo la variabile di ok per l'aggiunta @ok=0 end def main #Tolgo tutti i personaggi dal party for i in 0...$game_party.actors.size $game_party.remove_actor($game_party.actors[i].id) end for i in 0...$game_party.actors.size $game_party.remove_actor($game_party.actors[i].id) end for i in 0...$game_party.actors.size $game_party.remove_actor($game_party.actors[i].id) end for i in 0...$game_party.actors.size $game_party.remove_actor($game_party.actors[i].id) end #Creo le varie finestre e inizializzo la variabile di index @win_nome=Nome_Finestra.new @win_membri=Party_Attuale.new @win_altri_pg=PG_Rimanenti.new @win_altri_pg.index = 0 @win_altri_pg.refresh @win_status=Status_PG.new #Effetto di transizione dalla schermata di scena alla schermata del menù Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end #Cancellazione finestre @win_nome.dispose @win_membri.dispose @win_altri_pg.dispose @win_status.dispose end def update #Aggiorno le finestre @win_membri.update @win_altri_pg.update #Aggiorno la finestra di status del personaggio selezionato @win_status.refresh(@win_altri_pg.index+1) #Se il tasto è il Cancel e il numero dei personaggi minimi è stato raggiunto if Input.trigger?(Input::B) and @in_party>=Valori_Vari::NUM_PG_MIN #Cancella bitmap e... @win_status.del_fig #..torna alla scena che ha chiamato questo menu $scene = Scene_Map.new #Altrimenti se è il tasto Ok e il numero dei personaggi aggunti è minore #del massimo permesso elsif Input.trigger?(Input::C) and @in_party<Valori_Vari::NUM_PG_MAX #Controllo se è già presente nel party(per evitare i doppioni) for i in 0..4 if(@win_altri_pg.index == @party[i]) @ok=0 break else @ok=1 end end #Quindi se è tutto ok aggiungo il personaggio alla schermata #sistemando le coordinate per lo sprite if @ok == 1 case @in_party when 0 @x = 20 @y = 55 when 1 @x = 100 @y = 55 when 2 @x = 20 @y = 130 when 3 @x = 100 @y = 130 end #Disegno il personaggio @win_membri.add_pg(@win_altri_pg.index+1,@x,@y) #Lo aggiungo nel party $game_party.add_actor(@win_altri_pg.index+1) #Lo aggiungo al vettore del party @party[@in_party] = @win_altri_pg.index #Aggiorno la variabile del numero dei personaggi nel party @in_party += 1 end end end end
Screenshot:
Spero vi piaccia :)
Modificato da Apo, 14 March 2013 - 21:37 PM.
applicato il tag code