Jump to content
Rpg²S Forum

makgyver

Utenti
  • Posts

    175
  • Joined

  • Last visited

Posts posted by makgyver

  1. Descrizione:
    Un modo carino per personalizzare un pò i nostri menù, o più in generale i nostri giochi è quello di cambiare la solita visuale dell'ora di gioco, ke è sempre composta da quei numerini con un bell'orologio analogico. O magari combinare i 2. Cmq sia un orologio analogico ci può far comodo. A questo scopo ho creato un piccolo script, correlato anke di parte grafica.

    Autore:
    IO (makgyver). Sia parte grafica che script.

    Allegati:
    http://rapidshare.com/files/141786409/clock.rar.html

    Screen:
    http://oi37.tinypic.com/2eq5qwz.jpg

    Codice:

     

    class Analog_Clock < Window_Base
    	def initialize(x = 0, y = 0, kind = 0, wskin = true)
    		super(0, 0, 100, 100)
    		@exwskin = self.windowskin
    		@kind = kind
    		self.windowskin = (wskin)? RPG::Cache.windowskin("Sfondo") : nil
    		self.z = 100
    		self.x = x
    		self.y = y
    		init_clock
    		update
    	end
    	
    	def init_clock
    		@clock = Sprite.new
    		@clock.bitmap = RPG::Cache.picture("clock/clock"+@kind.to_s)
    		@clock.x = 10 + self.x
    		@clock.y = 10 + self.y
    		@minutes = Sprite.new
    		@minutes.bitmap = RPG::Cache.picture("clock/minutes"+@kind.to_s)
    		@minutes.x = 53 + self.x
    		@minutes.y = 53 + self.y
    		@hours = Sprite.new
    		@hours.bitmap = RPG::Cache.picture("clock/hours"+@kind.to_s)
    		@hours.x = 53 + self.x
    		@hours.y = 53 + self.y
    	end
    	
    	def update
    		@total_sec = Graphics.frame_count / Graphics.frame_rate
    		hour = ((@total_sec/60)%12)*30 + (@total_sec % 60) /2
    		min = (@total_sec % 60) * 6
    		@hours.angle = -hour + 180
    		@minutes.angle = -min + 180
    		if (min <= 180)
    			@mexx = @minutes.x = 53 - min/30 + self.x
    			@mexy = @minutes.y = 53 - min/60 + self.y
    		else
    			@minutes.x = @mexx + (min-180)/30
    			@minutes.y = @mexy - (min-180)/60
    		end
    		
    		if (hour <= 180)
    			@hexx = @hours.x = 53 - hour/30 + self.x
    			@hexy = @hours.y = 53 - hour/60 + self.y
    		else
    			@hours.x = @hexx + (hour-180)/30
    			@hours.y = @hexy - (hour-180)/60
    		end
    		
    	end
    	
    	alias dispose_old dispose
    	def dispose
    		@clock.dispose
    		@hours.dispose
    		@minutes.dispose
    	end
    end
    

     





    Istruzioni:
    Semplicissimo: mettete la cartella "clock" ke trovate nel rar in ..Graphics/Picture/.
    Per richiamare l'orologio basta fare:

    @a_clock = Analog_Clock.new(coord_x, coord_y, tipo, wskin)
    
    #coord_x = coordinata x dell'orologio
    #coord_y = coordinata y dell'orologio
    #tipo = tipo di orologio (stile grafico). Potete scegliere tra 4 diversi [0..3]. Al massimo se volete
    # potete crearne altri o chiedere a me di farlo
    #wskin = è un booleano ke indica se volete nello sfondo dell'orologio la windowskin oppure no
    # true = si wskin, false = no wskin
    #potete omettere tutti queati valori e l'orologio comparirà cmq con i valori di default
    



    Poi andate nell'update della scene in cui avete inserito l'orologio e scrivete appena sotto a
    def update questa riga:

    @a_clock.update
    


    Bug o Conflitti:
    Nessuno xke è uno script completamente autonomo.
    Al massimo se all'orologio si sovrappone qualke window basta cambiare la sua coordinata z.

  2. Sleeping ho bisogno di un aiutino aiutone. Nel mio progetto ho inserito un BS laterale: il CCOA 3.04 che mi funziona. Poi ho l'aeon system e l'aeon development e ovviamente ho voluto inserire lo script x l'evocazione. Modificati i parametri come servivano mi da un problema: finita l'evocazione dell'eone si blocca il combattimento. Cioè rimane la scritta dell'evocazione in alto e non si può fare niente. Come posso risolvere il problema?? Grazie mille...

     

    PS: lo script per l'evocazione ke ho usato è quello per XRXS_BP(anke se nel CCOA ke uso viene usato XRXS_CP)

  3. Una domanda:

     

    Con il bs in stile minikoff quale dei tanti script devo inserire?

    Se dovessi fare in modo che la summon prende il posto solo di chi evoca, cosa dovrei modificare?

     

    Help grazie!

     

    Credo debba fare così:

    Remove_Only_Summoner = {id_skill => true...
    Summoner_Rest = {id_skill => false...

  4. E' possibile inserire gli elementi a cui il mostro è debole, magari con delle icone con il nome dell'elemento?

     

    Sarebbe molto utile...

     

    In linea teorica è possibilissimo, io avevo provato a mettere gli elementi deboli in parola purtroppo non ci sono riuscito anke xke mi premeva finire prima un altra cosa. Appena posso riguardo lo script e provo a fare quello ke hai richiesto Amos

  5. Ciao a tutti...sono un semi novizio del making...e sto lavorando ad un mio progettuccio...spero di trovarmi bene...e di ricevere molti consigli...

    P.S.Bellissimo Forum!!!

     

    Benvenuto David!!!

  6. Ti riferisci al fatto di avere alcuni personaggi bloccati?

     

    Si si al fatto di doverli bloccare e sbloccare a piacimento durante il gioco. Per esempio all'avvenimento di un dato evento bloccare il PG 1 e 2 e sbloccare il 3. Per quello gli avevo consigliato di usare quella variabile xke era semplice da modificare e passandola come secondo parametro a Party_Switcher facilitava molto il tutto. Tutto qua. Non volevo assolutamente mettere in dubbio la funzionalità del tuo script anzi, lo sto usando nel mio progetto figuriamoci.

  7. @sylaer

    Si si il tuo script funziona ma infatti non era per modificare lo script era per riuscire a fare quello ke voleva kenshin basandomi sul tuo script infatti alla fine c'è scritto di richiamare Party_Switcher().

  8. @kenshin:

    il modo ke ti consiglierei io è crearti un array globale con gli indici dei pg ke vuoi ke siano irremovibili tipo così:

     

    $BLOCK_PG = [1]

     

    poi quando a un certo evento devi fare una scelta o devi aggiungere o togliere qualke personaggio dagli irremovibili fai così:

     

    $BLOCK_PG.delete(idPG) #per toglierlo

    $BLOCK_PG.push(idPG) #per aggiungerlo

     

    poi alla funzione ke rikiama tutto passi come vettore di secondo argomanto $BLOCK_PG.

    Spero di essere stato kiaro. Per problemi kiedi pure.

  9. purtroppo non è in quelle righe l'errore forse aprendo lo script non ti mette sulla parte di codice giusta. L'errore è ke non passi nessun argomento a una funzione ke invece ne aspetta uno. Vedi se riesci a trovarlo o al massimo il codice ke hai è identico a quello ke c'è in questo topic???
  10. Su quale riga di codice te la da?? se non te la scrive nell'errore apri lo script subito dopo e dove è posizionato il cursore è dove è l'errore. Magari scrivi la riga così ti dico.
  11. E' da un po ke cerco di procurarmela ma non riesco. Beh per ora l'SDK non mi è urgentemente servito. Spero continui a essere così finkè non trovo la nuova versione. Cmq Grazie mille dell'aiuto!!
  12. il tuo progetto non mi parte xke ho la versione 1.01 e quindi ovviamente non va, ho provato a fare un progetto nuovo e fare tutto di nuovo ma mi da lo stesso probelma. Credo sia quindi un problema di versione.
  13. Grazie mille. Ho fatto tutto come mi hai detto il gioco parte(cambiando le scritte da italiano a inglese) ma mi si pianta subito, e mi da errore in Game.exe. Che cosa può essere??
  14. Ho visto ke spesso parlate dello script SDK e della sua utilità. Essendo nuovo del forum mi chiedo cosa sia questo SDK (anke se leggendo qua e la forse ho intuito), ma soprattuttodove posso trovarlo. Grazie mille!!
  15. Scusate il doppio post, ma volevo avvertirvi ke ho appena apportato delle modifiche al codice ke ora funziona perfettamente. L'unico problema resta la grafica ke, vi avviso in questo post senza dover aggiungerne un altro, credo sistemerò oggi stesso!! Grazie, ciao!!
  16. Descrizione:

    Avete presente il junction di FF8?! beh è una cosa così vi spiego:
    Voi abbinate a un certo parametro un oggetto e questo fa aumentare o diminuire il suo valore in base al suo "potere" ke voi indicate. In più viene data la possibilità di creare delle combinazioni ovvero oltre all'effetto dei singoli oggetti vengono modificati i parametri anke da una combinazione di loro. Es avete in HP, MP, ATT una pozione e nelle combinazioni avete ke 3pozioni in "junction"(kiamiamolo così) fanno aumentare tutti i parametri di 1. E questo sempre lo decidete voi mettendo i valori, ke sono indicati nel codice, come volete.


    Autore:

    IO (makgyver)

    Screen:
    http://i34.tinypic.com/qxrpms.jpg

    Codice:

     

    #Script by makgyver
    
    #$ID_RUNE = { id_oggetto_db=>quantitࡩn possesso dal party}
    $ID_RUNE = { 1=>0, 2=>0, 3=>0 }
    
    ##############
    # Parametri
    # Alcune costanti utili
    ########################
    module Parametri
    	FONT_NAME = "Arial"
    	FONT_SIZE = 24
    	FONT_COLOR_NORMAL = Color.new(255,255,255)
    	FONT_COLOR_INVERT = Color.new(0,0,0)
    	FONT_COLOR_CRITIC = Color.new(0,255,0)
    end
    
    ###################
    # Rune Development
    ###################
    module Rune_Development
    	#Rune_effect = { id_oggetto => {parametro => percentuale potenziamento}}
    	Rune_effect =
    	{
    	1 => {"hp"=>100,"mp"=>10,"str"=>-24,"int"=>25,"agi"=>75,"dex"=>0,"atk"=>10,"pdef"=>20,"mdef"=>25,"eva"=>0},
    	2 => {"hp"=>200,"mp"=>400,"str"=>15,"int"=>9,"agi"=>13,"dex"=>10,"atk"=>60,"pdef"=>20,"mdef"=>58,"eva"=>0},
    	3 => {"hp"=>300,"mp"=>50,"str"=>450,"int"=>19,"agi"=>2,"dex"=>8,"atk"=>200,"pdef"=>35,"mdef"=>80,"eva"=>10}
    	}
    	
    	Rune_effect.default =
    	{
    	"hp"=>0,"mp"=>0,"str"=>0,"int"=>0,"agi"=>0,"dex"=>0,"atk"=>0,"pdef"=>0,"mdef"=>0,"eva"=>0
    	}
    	
    	#Rune_Combination = { nome combinazione => {parametro => percentuale potenziamento}}
    	Rune_Combination =
    	{
    	"3red" => {"hp"=>100,"mp"=>100,"str"=>-204,"int"=>250,"agi"=>705,"dex"=>0,"atk"=>100,"pdef"=>200,"mdef"=>250,"eva"=>0},
    	"3yellow" => {"hp"=>25,"mp"=>40,"str"=>15,"int"=>9,"agi"=>13,"dex"=>10,"atk"=>60,"pdef"=>20,"mdef"=>58,"eva"=>0},
    	"3green" => {"hp"=>15,"mp"=>50,"str"=>45,"int"=>19,"agi"=>2,"dex"=>8,"atk"=>20,"pdef"=>35,"mdef"=>80,"eva"=>10},
    	"3blue" => {"hp"=>-15,"mp"=>50,"str"=>-45,"int"=>19,"agi"=>2,"dex"=>8,"atk"=>-20,"pdef"=>35,"mdef"=>-80,"eva"=>10},
    	"allcolor" => {"hp"=>-15,"mp"=>50,"str"=>-45,"int"=>19,"agi"=>2,"dex"=>8,"atk"=>-20,"pdef"=>35,"mdef"=>-80,"eva"=>10}
    	}
    	
    	Rune_Combination.default =
    	{
    	"hp"=>0,"mp"=>0,"str"=>0,"int"=>0,"agi"=>0,"dex"=>0,"atk"=>0,"pdef"=>0,"mdef"=>0,"eva"=>0
    	}
    	
    	#Rune_object = { id_oggetto => [parametro, colore]}
    	# il parametro non serve a niente ma mettetelo cmq e il colore serve per le combinazioni
    	Rune_object =
    	{
    	1 => ["hp", "red"],
    	2 => ["hp", "yellow"],
    	3 => ["hp", "blue"]
    	}
    end
    
    class Window_Selectable2 < Window_Base
    	#--------------------------------------------------------------------------
    	# ? Apri una variabile istanza
    	#--------------------------------------------------------------------------
    	attr_reader :index # Posizione del cursore
    	attr_reader :help_window # Finestra di aiuto
    	#--------------------------------------------------------------------------
    	# ? Inizializzazione dell'oggetto
    	# x : Coordinate X della finestra
    	# y : Coordinate Y della finestra
    	# width : Larghezza della finestra
    	# height : Altezza della finestra
    	#--------------------------------------------------------------------------
    	def initialize(x, y, width, height)
    		super(x, y, width, height)
    		@item_max = 1
    		@column_max = 1
    		@index = -1
    	end
    	#--------------------------------------------------------------------------
    	# ? Sistemazione della posizione del cursore
    	# index : Nuova posizione del cursore
    	#--------------------------------------------------------------------------
    	def index=(index)
    		@index = index
    		# Viene aggiornato il testo di aiuto
    		# (update_help viene definito dal posto successivo)
    		if self.active and @help_window != nil
    			update_help
    		end
    		# Viene aggiornato il rettangolo del cursore
    		update_cursor_rect
    	end
    	#--------------------------------------------------------------------------
    	# ? Acquisizione del numero di linee
    	#--------------------------------------------------------------------------
    	def row_max
    		# Il numero di linee viene elaborato dal numero di oggetti e il numero
    		# delle sequenze
    		return (@item_max + @column_max - 1) / @column_max
    	end
    	#--------------------------------------------------------------------------
    	# ? Acquisizione di una linea superiore
    	#--------------------------------------------------------------------------
    	def top_row
    		# Origine di trasmissione dei contenuti di una finestra:
    		# Sulle coordinate Y, l'altezza di una linea viene divisa per 32
    		return self.oy / 20
    	end
    	#--------------------------------------------------------------------------
    	# ? Sistemazione di una linea superiore
    	# row : La linea viene mostrata in cima
    	#--------------------------------------------------------------------------
    	def top_row=(row)
    		# Quando row 衭inore di zero, allora correggi ed inserisci 0
    		if row < 0
    			row = 0
    		end
    		# Quando row 衭aggiore di row_max - 1, poni row = row_max - 1
    		if row > row_max - 1
    			row = row_max - 1
    		end
    		# row Altezza di una linea. 衬'origine di trasmissione dei contenuti
    		# di una finestra. Si considera come coordinata Y
    		self.oy = row * 20
    	end
    	#--------------------------------------------------------------------------
    	# ? 1 Acquisizione del numero di linee che possono essere mostrate
    	# su una pagina
    	#--------------------------------------------------------------------------
    	def page_row_max
    		# Altezza della finestra del frame. Si sottrare 32 all'altezza di
    		# una linea e si divide per 32
    		return (self.height - 20) / 20
    	end
    	#--------------------------------------------------------------------------
    	# ? 1 Acquisizione del numero di oggetti che possono essere mostrati
    	# su una pagina
    	#--------------------------------------------------------------------------
    	def page_item_max
    		# Numero di linee, page_row_max il numero di sequenze per
    		# le colonne @column_max
    		return page_row_max * @column_max
    	end
    	#--------------------------------------------------------------------------
    	# ? Sistemazione della finestra di aiuto
    	# help_window : Nuova finestra di aiuto
    	#--------------------------------------------------------------------------
    	def help_window=(help_window)
    		@help_window = help_window
    		# Il testo di aiuto viene aggiornato
    		# (update_help viene definito dal posto successivo)
    		if self.active and @help_window != nil
    			update_help
    		end
    	end
    	#--------------------------------------------------------------------------
    	# ? Aggiornamento del rettangolo del cursore
    	#--------------------------------------------------------------------------
    	def update_cursor_rect
    		# Posizione del cursore. Quando 衭inore di 0...
    		if @index < 0
    			self.cursor_rect.empty
    			return
    		end
    		# La linea corrente viene acquisita
    		row = @index / @column_max
    		# Nel caso di prima, la linea corrente viene mostrata in cima
    		if row < self.top_row
    			# Scorre in modo tale che la linea corrente vada in cima
    			self.top_row = row
    		end
    		# Nel caso precedente, la linea corrente viene mostrata fino alla
    		# fine della coda
    		if row > self.top_row + (self.page_row_max - 1)
    			# Scorre in modo tale che la linea corrente vada in coda
    			self.top_row = row - (self.page_row_max - 1)
    		end
    		# Viene calcolata l'ampiezza del cursore
    		cursor_width = self.width / @column_max - 32
    		# Vengono calcolate le coordinate del cursore
    		x = @index % @column_max * (cursor_width + 20)
    		y = @index / @column_max * 20 - self.oy+5
    		# Viene aggiornato il rettangolo del cursore
    		self.cursor_rect.set(x, y, cursor_width, 20)
    	end
    	#--------------------------------------------------------------------------
    	# ? Aggiornamento frame
    	#--------------------------------------------------------------------------
    	def update
    		super
    		# Quando 衮ello stato in cui si muove il cursore...
    		if self.active and @item_max > 0 and @index >= 0
    			# Quando il pulsante viene premuto nella direzione bassa...
    			if Input.repeat?(Input::DOWN)
    				# Numero di squenze: 1 nel caso in cui non viene ripetuta su una
    				# direzione del pulsante
    				# Nel caso precedente, la posizione del cursore viene data da:
    				# (Numero di sequenze - Numero degli oggetti)
    				if (@column_max == 1 and Input.trigger?(Input::DOWN)) or
    					@index < @item_max - @column_max
    					# Il cursore viene mosso in basso
    					$game_system.se_play($data_system.cursor_se)
    					@index = (@index + @column_max) % @item_max
    				end
    			end
    			# Quando il pulsante viene premuto nella direzione alta...
    			if Input.repeat?(Input::UP)
    				# Numero di squenze: 1 nel caso in cui non viene ripetuta su una
    				# direzione del pulsante
    				# Nel caso precedente, la posizione del cursore viene data dal
    				# numero di sequenze
    				if (@column_max == 1 and Input.trigger?(Input::UP)) or
    					@index >= @column_max
    					# Il cursore viene mosso verso l'alto
    					$game_system.se_play($data_system.cursor_se)
    					@index = (@index - @column_max + @item_max) % @item_max
    				end
    			end
    			# Quando il pulsante viene premuto nella direzione di destra...
    			if Input.repeat?(Input::RIGHT)
    				# Numero di sequenze >= 2 e @index < (numero di oggetti - 1) quando la
    				# posizione del cursore...
    				if @column_max >= 2 and @index < @item_max - 1
    					# ...viene mossa verso destra
    					$game_system.se_play($data_system.cursor_se)
    					@index += 1
    				end
    			end
    			# Quando il pulsante viene premuto nella direzione di sinistra...
    			if Input.repeat?(Input::LEFT)
    				# Numero di sequenze >= 2 e @index > 0 quando la posizione
    				# del cursore...
    				if @column_max >= 2 and @index > 0
    					# ...viene mossa verso sinistra
    					$game_system.se_play($data_system.cursor_se)
    					@index -= 1
    				end
    			end
    			# Quando il pulsante R viene premuto...
    			if Input.repeat?(Input::R)
    				# Prima dell'ultima linea sui dati, viene mostrata la linea fino
    				# alla fine della coda
    				if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)
    					# Il cursore si muove avanti di una pagina
    					$game_system.se_play($data_system.cursor_se)
    					@index = [@index + self.page_item_max, @item_max - 1].min
    					self.top_row += self.page_row_max
    				end
    			end
    			# Quando il pulsante L viene premuto...
    			if Input.repeat?(Input::L)
    				# La linea correntemente mostrata in cima, se > 0...
    				if self.top_row > 0
    					# Il cursore si muove indietro di una pagina
    					$game_system.se_play($data_system.cursor_se)
    					@index = [@index - self.page_item_max, 0].max
    					self.top_row -= self.page_row_max
    				end
    			end
    		end
    		# Viene aggiornato il testo di aiuto
    		# (update_help viene definito dal posto successivo)
    		if self.active and @help_window != nil
    			update_help
    		end
    		# Aggiornamento del rettangolo del cursore
    		update_cursor_rect
    	end
    end
    
    
    #################
    # Game_Actor Add
    #################
    class Game_Actor < Game_Battler
    	attr_accessor :rune_equipped
    	attr_accessor :rune_plus
    	attr_accessor :comb_rune_plus
    	
    	alias setup_old setup
    	def setup(actor_id)
    		@rune_equipped = {}
    		@rune_equipped.default = nil
    		@rune_plus = {}
    		@rune_plus.default = 0
    		@comb_rune_plus = {}
    		@comb_rune_plus.default = 0
    		setup_old(actor_id)
    	end
    	
    	alias base_maxhp_old base_maxhp
    	def base_maxhp
    		return base_maxhp_old + @rune_plus["hp"] + @comb_rune_plus["hp"]
    	end
    	
    	alias base_maxsp_old base_maxsp
    	def base_maxsp
    		return base_maxsp_old + @rune_plus["mp"] + @comb_rune_plus["mp"]
    	end
    	
    	alias base_str_old base_str
    	def base_str
    		return base_str_old + @rune_plus["str"] + @comb_rune_plus["str"]
    	end
    	
    	alias base_dex_old base_dex
    	def base_dex
    		return base_dex_old + @rune_plus["dex"] + @comb_rune_plus["dex"]
    	end
    	
    	alias base_agi_old base_agi
    	def base_agi
    		return base_agi_old + @rune_plus["agi"] + @comb_rune_plus["agi"]
    	end
    	
    	alias base_int_old base_int
    	def base_int
    		return base_int_old + @rune_plus["int"] + @comb_rune_plus["int"]
    	end
    	
    	alias base_atk_old base_atk
    	def base_atk
    		return base_atk_old + @rune_plus["atk"] + @comb_rune_plus["atk"]
    	end
    	
    	alias base_pdef_old base_pdef
    	def base_pdef
    		return base_pdef_old + @rune_plus["pdef"] + @comb_rune_plus["pdef"]
    	end
    	
    	alias base_mdef_old base_mdef
    	def base_mdef
    		return base_mdef_old + @rune_plus["mdef"] + @comb_rune_plus["mdef"]
    	end
    	
    	alias base_eva_old base_eva
    	def base_eva
    		return base_eva_old + @rune_plus["eva"] + @comb_rune_plus["eva"]
    	end
    	
    	def rune_effect
    		par = ["hp","mp","atk","pdef","mdef","str","dex","agi","int","eva"]
    		for i in par
    			obj_id = @rune_equipped[i]
    			coeff = Rune_Development::Rune_effect[obj_id][i]/100
    			@rune_plus[i] = 0
    			case i
    			when "hp"
    				@rune_plus[i] = base_maxhp*coeff/100
    			when "mp"
    				@rune_plus[i] = base_maxsp*coeff/100
    			when "str"
    				@rune_plus[i] = base_str*coeff/100
    			when "int"
    				@rune_plus[i] = base_int*coeff/100
    			when "agi"
    				@rune_plus[i] = base_agi*coeff/100
    			when "dex"
    				@rune_plus[i] = base_dex*coeff/100
    			when "atk"
    				@rune_plus[i] = base_atk*coeff/100
    			when "pdef"
    				@rune_plus[i] = base_pdef*coeff/100
    			when "mdef"
    				@rune_plus[i] = base_mdef*coeff/100
    			when "eva"
    				@rune_plus[i] = base_eva*coeff/100
    			end
    		end
    		rune_combination_effect
    	end
    	
    	def rune_combination_effect
    		par = ["hp","mp","atk","pdef","mdef","str","dex","agi","int","eva"]
    		#colors [r,y,g,b]
    		colors = {"red"=>0,"green"=>0,"yellow"=>0,"blue"=>0}
    		for i in par
    			index = ""
    			index = Rune_Development::Rune_object[@rune_equipped[i]][1] if @rune_equipped[i] != nil
    			if (index != "")
    				colors[index] += 1
    			end
    		end
    		r_string = colors["red"].to_s+"red"
    		y_string = colors["yellow"].to_s+"yellow"
    		b_string = colors["blue"].to_s+"blue"
    		g_string = colors["green"].to_s+"green"
    		count_color = 0
    		for i in par
    			@comb_rune_plus[i] = 0
    		end
    		if (Rune_Development::Rune_Combination.has_key?(r_string))
    			x = Rune_Development::Rune_Combination[r_string]
    			for i in par
    				@comb_rune_plus[i] += x[i]
    			end
    			count_color += 1
    		end
    		if (Rune_Development::Rune_Combination.has_key?(y_string))
    			x = Rune_Development::Rune_Combination[y_string]
    			for i in par
    				@comb_rune_plus[i] += x[i]
    			end
    			count_color += 1
    		end
    		if (Rune_Development::Rune_Combination.has_key?(g_string))
    			x = Rune_Development::Rune_Combination[g_string]
    			for i in par
    				@comb_rune_plus[i] += x[i]
    			end
    			count_color += 1
    		end
    		if (Rune_Development::Rune_Combination.has_key?(b_string))
    			x = Rune_Development::Rune_Combination[b_string]
    			for i in par
    				@comb_rune_plus[i] += x[i]
    			end
    			count_color += 1
    		end
    		if (count_color == 4)
    			x = Rune_Development::Rune_Combination["all_color"]
    			for i in par
    				@comb_rune_plus[i] += x[i]
    			end
    		end
    	end
    end
    
    class Window_Rune_Item < Window_Selectable
    	attr_accessor :data_id
    	attr_accessor :data
    	attr_accessor :item_max
    	def initialize(actor)
    		super(0, 334, 640, 146)
    		#self.contents = Bitmap.new(width, height)
    		self.index = 0
    		self.z = 10000
    		@actor = actor
    		@column_max = 2
    		@data_id = []
    		refresh
    	end
    	
    	def refresh
    		if self.contents != nil
    			self.contents.dispose
    			self.contents = nil
    		end
    		@data = []
    		# Aggiunta di un oggetto
    		for i in 1...$data_items.size
    			if ($ID_RUNE.has_key?(i))
    				if $game_party.item_number(i) - $ID_RUNE[i] > 0
    					@data.push($data_items[i])
    					@data_id.push(i)
    				end
    			end
    		end
    		@item_max = @data.size
    		if @item_max > 0
    			self.contents = Bitmap.new(width-32, row_max * 32)
    			for i in 0...@item_max
    				draw_item(i)
    			end
    		end
    	end
    	
    	def draw_item(index)
    		item = @data[index]
    		number = $game_party.item_number(item.id) - $ID_RUNE[item.id]
    		self.contents.font.color = normal_color
    		self.contents.font.name = Parametri::FONT_NAME
    		self.contents.font.size = Parametri::FONT_SIZE
    		x = 4 + index % 2 * (288 + 32)
    		y = index / 2 * 32
    		rect = Rect.new(x, y, self.width / @column_max - 20, 32)
    		self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    		bitmap = RPG::Cache.icon(item.icon_name)
    		opacity = self.contents.font.color == Parametri::FONT_COLOR_INVERT ? 255 : 128
    		self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    		self.contents.draw_text(x + 28, y, 212, 32, " "+item.name, 0)
    		self.contents.font.size = Parametri::FONT_SIZE + 4
    		self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
    		self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
    	end
    end
    
    class Window_Rune_Link < Window_Selectable2
    	def initialize(actor)
    		super(0, 64, 320, 270)
    		self.index = 0
    		self.contents = Bitmap.new(width-32, height-32)
    		@actor = actor
    		@links = ["RHp","RMp","RAtk","RPdef","RMdef",
    		"RStr","RDex","RAgi","RInt","REva"]
    		@item_max = @links.size
    		@column_max = 1
    		refresh
    	end
    	
    	def refresh
    		self.contents.clear
    		par = ["hp","mp","atk","pdef","mdef","str","dex","agi","int","eva"]
    		for i in 0...@links.size
    			x = 30
    			y = i*20
    			self.contents.font.name = Parametri::FONT_NAME
    			self.contents.font.size = Parametri::FONT_SIZE-2
    			draw_link(x, y, @links[i])
    			z = @actor.rune_equipped[par[i]]
    			draw_obj_link(x + 60, y, z)
    		end
    	end
    	
    	def draw_link(x, y, str_par)
    		self.contents.font.color = system_color
    		self.contents.draw_text(x , y, 50, 32, str_par)
    	end
    	
    	def draw_obj_link(x, y, obj_id)
    		if (obj_id != nil)
    			bitmap = RPG::Cache.icon($data_items[obj_id].icon_name)
    			self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), 255)
    		end
    		self.contents.font.color = normal_color
    		self.contents.draw_text(x+28, y, 130, 32, (obj_id != nil)? $data_items[obj_id].name : "------")
    	end
    end
    
    class Window_Rune_Status < Window_Base
    	def initialize(actor)
    		super(320, 64, 320, 270)
    		self.contents = Bitmap.new(width-32, height-32)
    		@actor = actor
    		refresh
    	end
    	
    	def refresh(obj_id = -1, link = "")
    		self.contents.clear
    		draw_actor_name(@actor, 30, 0)
    		draw_actor_hp(@actor, 30, 20, 172)
    		draw_actor_sp(@actor, 30, 40, 172)
    		draw_actor_parameter(@actor, 30, 60, 0)
    		draw_actor_parameter(@actor, 30, 80, 1)
    		draw_actor_parameter(@actor, 30, 100, 2)
    		draw_actor_parameter(@actor, 30, 120, 3)
    		draw_actor_parameter(@actor, 30, 140, 4)
    		draw_actor_parameter(@actor, 30, 160, 5)
    		draw_actor_parameter(@actor, 30, 180, 6)
    		self.contents.font.color = system_color
    		self.contents.draw_text(30, 200, 120, 32, "Evasione")
    		self.contents.font.color = normal_color
    		self.contents.draw_text(150, 200, 36, 32, @actor.eva.to_s, 2)
    		if (obj_id != -1)
    			params = copy_parameter
    			ex_obj = @actor.rune_equipped[link]
    			@actor.rune_equipped[link] = obj_id
    			@actor.rune_effect
    			draw_variation(params)
    			@actor.rune_equipped[link] = ex_obj
    			@actor.rune_effect
    		end
    	end
    	
    	def copy_parameter
    		result = Array.new(10)
    		result [0] = @actor.maxhp
    		result [1] = @actor.maxsp
    		result [2] = @actor.atk
    		result [3] = @actor.pdef
    		result [4] = @actor.mdef
    		result [5] = @actor.str
    		result [6] = @actor.dex
    		result [7] = @actor.agi
    		result [8] = @actor.int
    		result [9] = @actor.eva
    		return result
    	end
    	
    	def set_color(pnow, pnext)
    		if (pnow == pnext)
    			return normal_color
    		end
    		if (pnow > pnext)
    			return Color.new(255,0,0)
    		else
    			return Color.new(14,220,55)
    		end
    	end
    	
    	def draw_variation(ex_parameter)
    		now_parameter = copy_parameter
    		for i in 0..9
    			x = 210
    			y = 20 + i*20
    			self.contents.font.color = set_color(ex_parameter[i], now_parameter[i])
    			self.contents.draw_text(x, y, 100, 32,now_parameter[i].to_s)
    		end
    	end
    end
    
    class Scene_Rune
    	def initialize(actor_index)
    		@actor = $game_party.actors[actor_index]
    		@actor_index = actor_index
    	end
    	
    	def main
    		@help = Window_Help.new
    		@window_link = Window_Rune_Link.new(@actor)
    		@window_link.active = true
    		@window_status = Window_Rune_Status.new(@actor)
    		@window_item = Window_Rune_Item.new(@actor)
    		@window_item.active = false
    		@window_item.visible = false
    		Graphics.transition
    		loop do
    			Graphics.update
    			Input.update
    			update
    			if $scene != self
    				break
    			end
    		end
    		@help.dispose
    		@window_item.dispose
    		@window_link.dispose
    		@window_status.dispose
    	end
    	
    	def update
    		@window_item.update
    		@window_link.update
    		@window_status.update
    		help_update
    		if (@window_link.active)
    			link_update
    		elsif (@window_item.active)
    			item_update
    		end
    	end
    	
    	def link_update
    		par = ["hp","mp","atk","pdef","mdef","str","dex","agi","int","eva"]
    		if Input.trigger?(Input::B)
    			$game_system.se_play($data_system.cancel_se)
    			$scene = Scene_Menu.new(1)
    		end
    		if Input.trigger?(Input::C)
    			if(@window_item.item_max == 0)
    				$game_system.se_play($data_system.buzzer_se)
    				return
    			end
    			$game_system.se_play($data_system.decision_se)
    			@window_link.active = false
    			@window_item.active = true
    			@window_item.visible = true
    			@window_item.index = 0
    			n = @window_item.data[@window_item.index].id
    			@window_status.refresh(n, par[@window_link.index])
    		end
    		if Input.trigger?(Input::Z)
    			$game_system.se_play($data_system.buzzer_se)
    			if (@actor.rune_equipped[par[@window_link.index]] != nil)
    				$ID_RUNE[@actor.rune_equipped[par[@window_link.index]]] -= 1
    				@actor.rune_equipped[par[@window_link.index]] = nil
    				@actor.rune_effect
    				@window_link.refresh
    				@window_status.refresh
    				@window_item.refresh
    			end
    		end
    		if Input.trigger?(Input::L)
    			$game_system.se_play($data_system.cancel_se)
    			@actor_index += $game_party.actors.size - 1
    			@actor_index %= $game_party.actors.size
    			$scene = Scene_Rune.new(@actor_index)
    		end
    		if Input.trigger?(Input::R)
    			$game_system.se_play($data_system.cancel_se)
    			@actor_index += 1
    			@actor_index %= $game_party.actors.size
    			$scene = Scene_Rune.new(@actor_index)
    		end
    	end
    	
    	def item_update
    		par = ["hp","mp","atk","pdef","mdef","str","dex","agi","int","eva"]
    		n = @window_item.data[@window_item.index].id
    		if Input.trigger?(Input::RIGHT)
    			n = @window_item.data[@window_item.index].id
    			@window_status.refresh(n, par[@window_link.index])
    		end
    		if Input.trigger?(Input::LEFT)
    			n = @window_item.data[@window_item.index].id
    			@window_status.refresh(n, par[@window_link.index])
    		end
    		if Input.trigger?(Input::DOWN)
    			n = @window_item.data[@window_item.index].id
    			@window_status.refresh(n, par[@window_link.index])
    		end
    		if Input.trigger?(Input::UP)
    			n = @window_item.data[@window_item.index].id
    			@window_status.refresh(n, par[@window_link.index])
    		end
    		if Input.trigger?(Input::B)
    			@window_status.refresh
    			$game_system.se_play($data_system.cancel_se)
    			@window_link.active = true
    			@window_item.active = false
    			@window_item.visible = false
    		end
    		if Input.trigger?(Input::C)
    			$game_system.se_play($data_system.decision_se)
    			if @actor.rune_equipped[par[@window_link.index]] != nil
    				$ID_RUNE[@actor.rune_equipped[par[@window_link.index]]] -= 1
    			end
    			$ID_RUNE[n] += 1
    			@actor.rune_equipped[par[@window_link.index]] = n
    			@window_item.refresh
    			@actor.rune_effect
    			@window_status.refresh
    			@window_link.refresh
    			if (@window_item.item_max == 0)
    				@window_status.refresh
    				@window_link.active = true
    				@window_item.active = false
    				@window_item.visible = false
    				return
    			end
    			@window_item.index = 0
    			n = @window_item.data[@window_item.index].id
    			@window_status.refresh(n, par[@window_link.index])
    		end
    	end
    	
    	def help_update
    		n = @window_item.data_id[@window_item.index]
    		@help.set_text((@window_item.active)? $data_items[n].description : "Sviluppa il tuo PG con le Rune.")
    	end
    end
    

     

     

     

     

    Istruzioni:

    Create una classe sopra il main e incollate questo codice. Per togliere un oggetto dal "juction" basta posizionarsi sopra e premere D.


    BUG o Conflitti:

    EDIT : Risolti tutti i problemi!!

  17. Strano. Dovresti fare così. Senza cancellare dove ormai l'hai inserita vai e commenti (aggiungendo davanti allariga #) tutte le windowskin ke hai inserito tu poi parti e una alla volta (togliendo il commento) vedi quale inserimento crea il problema e quando lo trovi ovviamente lo togli.
  18. ok,grazie (quindi la windowskin la devo mettere in tutte le windows tranne quelle con il (*),giusto?

     

    p.s.le entità vorrei metterle (così ne approfitto anche per il menù) solo che nn so cm si fa...

     

    Entità e il nome ke ho dato io per il mio progetto quindi ti direi di cambiare nome. Sarebbero evocazioni di "PG" ke si aggiungono o sostituiscono al party.

    Allora la windowskin la aggiungi per il momento solo in window_message poi in window_command e poi in tutte le window_shop... così riesci a vedere tutto in teoria. Poi se ti accorgi ke ti serve in alcune altre classe la aggiungi ma per ora limiti a quelle li!!

  19. sisi,visto;ora la windowskin c'è;ma si sovrappone ancora al menù.

     

    p.s.in questa nuova versione,è a posto ache la cosa del cambio party?

     

    Eh devi stare attento a dove la metti. Xke alcune classi devono stare senza windowskin altrimenti si sovrappone al menu. Si la storia del party è a posto xò per farla funzionare come vuoi secondo i tuoi pg devi modificare le variabili $ID_PG_NA e $ID_AEON dove la prima indica la lista di pg ke per ora non devono comparire nel party mentre l'atra indica la lista di id di quei pg ke invece sono eoni(o entità o GF o come li vuoi kiamare) se el tuo progetto non sono contemplati basta ke svuoti l'array ovvero metti $ID_AEON = [].

  20. Ke errore ti da?? e quando?

    EDIT: Okkio ke il nome della windowskin da me è sfondo da te deve essere 001-blue01!! quindi devi andare sulla riga di codice di window_message e modificarla oppure mette nella cartella windowskin del progetto la windowskin sfondo.

×
×
  • Create New...