-
Posts
3 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Posts posted by GTOnizuka
-
-
-
Nome: Cambio Personaggi del Party
Autore: GTOnizuka
Codice:
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:
http://img522.imageshack.us/img522/2662/capturevn2.th.jpg
Spero vi piaccia :) -
Ma quello è il mio script XXXD Che onore!!! :D

*Cambio Party
in Scripts RGSS (XP)
Posted · Edited by GTOnizuka
Salve a tutti e mi scuso per la mia assenza in tutto questo periodo, dovuto un po' per inerzia personale, un po' per la scuola e un po' per la mia dedizione ad altre cose(come la creazione di una mia distribuzione di linux dove presto metterò su un sito web e se volete vi posterò tutti i link..se siete interessati vi posso creare una distribuzione orientata solo al RPGXP o VX, basta che mi forniate il materiale ecco ^^).
Ad modo mi congratulo con "Sylaer" per aver modificato il mio script in quel modo, e (non so nemmeno se è il caso di dirlo...) vi autorizzo a modificare il mio scirpt in testa a questo topic(possibilmente lasciando il nome del suo creatore ed aggiungendo il nome di chi ci ha anche lavorato su come l'utente che ho nominato prima...) in modo tale da renderlo ufficiale, come risorsa veloce senza scrollare i vari reply =)
Mi congratulo ancora con voi, se avrò tempo ad ogni modo riprendo il mio scirpt originale e provvederò ad aggiungerci tutte le modifiche che ho letto nei vari reply.
A presto e grazie ancora per i complimenti(a chi me li ha fatti).