Jump to content
Rpg²S Forum

Valentino

Utenti
  • Posts

    463
  • Joined

  • Last visited

Posts posted by Valentino

  1. A me per esempio va benissimo per alcuni dialoghi random, che il giocatore potrebbe voler esplorare in tutte le sue possibilità senza doversi sorbire per 5 volte la stessa cosa.

    Certo, non è un random puro. Ma se fosse un random puro, ogni volta CIASCUN valore dovrebbe avere le medesime possibilità di uscire, esattamente come i dadi o la roulette.

     

     

    Ho messo la versione 2 perchè succeda che tutte le opzioni di messaggio possano uscire, ma la probabilità che esca la stessa di quella precedente è di default il 10 percento ^^

     

     

    @SIMO696

    Grazie mille! ^^

  2. Valentino's Random System

    Descrizione

     

    Dato che ho notato il lamentarsi del random di rpgmaker mi sono dato da fare XD
    Questo script permette di rendere il random più random XD Cioe è stato creato per i messaggi, ma può avere anche altri utilizzi. In pratica lo script fa si che il valore ottenuto col random non sia mai il precedente (o se le scelte sono piu di due, anche il penultimo valore), il valore viene attribuito a una variabile del gioco e può essere utilizzata con gli eventi XD
    Ah si, un valore prima di ripetersi, dovrà aspettare che vengano ottenuti tutti gli altri valori ^^
    Il fatto dell'ultimo e del penultimo valore servono per quando si ridà la possibilità di ottenere tutti i valori, e quindi per evitare che venga un valore da poco ottenuto XD

    Autore

     

    Avon Valentino (Io)

    Allegati


    Demo Link:
    VERS 1
    http://www.mediafire.com/?25hufmdfm9ox4j8
    VERS 2
    http://www.mediafire.com/download.php?fced0pd8b8s1x4c


    Script:

    VERSIONE 1, Valori sempre diversi

     

     

    #Script creato da Valentino Avon, se lo usate, creditatemi ;)
    
    
    #Spiegazione: Per ottenere l'effetto random, inserire come primo comando
    #di un evento il commento "random", e un secondo commento come secondo
    #comando: $game_map.events[iD_EVENTO].num(MIN,MAX)
    #dove MIN e MAX sono due valori estremi (per rappresentare il numero di scelte)
    #Per esempio se MIN è 1 e MAX è 4 l'evento prenderà tutti i valori tra 1 e 4
    #compresi.
    #Questo servirà per fare le condizioni nell'evento.
    #Dopo i due commenti inserire un call script con scritto:
    #$game_map.events[iD_EVENTO].random(ID_VARIABILE)
    #con questo viene attivato il processo di random che determina un valore sempre
    #diverso, e lo restituisce alla variabile definita da ID_VARIABILE.
    #Successivamente si inseriscono tutte le condizioni SE riferite alla variabile
    #per fare accadere quello che si vuol fare accadere XD
    
    class Game_Event < Game_Character
    	attr_accessor :numeri
    	attr_accessor :backup
    	
    	alias random_initialize initialize
    	def initialize(map_id, event)
    		random_initialize(map_id, event)
    		@numeri = []
    		@backup = []
    		@ultima = nil
    		@penultima = nil
    		@conto = 0
    	end
    	
    	def set_num
    		if @list[0].parameters[0] == "random"
    			script = @list[1].parameters[0] #+ "n"
    			result = eval(script)
    		end
    	end
    	
    	#impostare numeri
    	def num(min,max)
    		for i in min..max
    			@numeri.push(i)
    		end
    		@backup = @numeri.dup
    	end
    	
    	#random della variabile
    	def random(var)
    		@conto += 1
    		if @numeri.empty?
    			@numeri = @backup.dup
    		end
    		
    		loop do
    			n_1 = rand(@numeri.size)
    			p1 = @numeri[n_1]
    			$game_variables[var] = p1
    			break if prob(var)
    		end
    		@numeri.delete($game_variables[var])
    		@penultima = $game_variables[var] if @backup.size > 2 and @conto == 1
    		@ultima = $game_variables[var] if @backup.size > 1 and @conto == 2
    		if @backup.size == 2
    			@ultima = $game_variables[var]
    		end
    		
    		if @conto == 2
    			@conto = 0
    		end
    		
    		return $game_variables[var]
    	end
    	
    	def prob(var)
    		if @penultima == $game_variables[var] or @ultima == $game_variables[var]
    			return false
    		end
    		return true
    	end
    end
    
    
    class Game_Map
    	alias events_setup setup
    	def setup(map_id)
    		events_setup(map_id)
    		for i in @map.events.keys
    			@events[i].set_num
    		end
    	end
    end
    

     

     

     

    VERSIONE 2, Valori ripetuti con una probabilita configurabile

     

     

     

    #Script creato da Valentino Avon, se lo usate, creditatemi ;)
    
    
    #Spiegazione: Per ottenere l'effetto random, inserire come primo comando
    #di un evento il commento "random", e un secondo commento come secondo
    #comando: $game_map.events[iD_EVENTO].num(MIN,MAX)
    #dove MIN e MAX sono due valori estremi (per rappresentare il numero di scelte)
    #Per esempio se MIN è 1 e MAX è 4 l'evento prenderà tutti i valori tra 1 e 4
    #compresi.
    #Questo servirà per fare le condizioni nell'evento.
    #Dopo i due commenti inserire un call script con scritto:
    #$game_map.events[iD_EVENTO].random(ID_VARIABILE)
    #con questo viene attivato il processo di random che determina un valore sempre
    #diverso, e lo restituisce alla variabile definita da ID_VARIABILE.
    #Successivamente si inseriscono tutte le condizioni SE riferite alla variabile
    #per fare accadere quello che si vuol fare accadere XD
    
    
    #percentuale di probabilita che permette nel caso la ripetizione dello stesso messaggio
    PROBABILITA = 10
    
    
    class Game_Event < Game_Character
    	attr_accessor :numeri
    	
    	alias random_initialize initialize
    	def initialize(map_id, event)
    		random_initialize(map_id, event)
    		@numeri = []
    		@ultima = nil
    	end
    	
    	def set_num
    		if @list[0].parameters[0] == "random"
    			script = @list[1].parameters[0] #+ "n"
    			result = eval(script)
    		end
    	end
    	
    	#impostare numeri
    	def num(min,max)
    		for i in min..max
    			@numeri.push(i)
    		end
    	end
    	
    	#random della variabile
    	def random(var)
    		loop do
    			n_1 = rand(@numeri.size)
    			p1 = @numeri[n_1]
    			$game_variables[var] = p1
    			break if prob(var)
    		end
    		@ultima = $game_variables[var] if @numeri.size > 1
    		return $game_variables[var]
    	end
    	
    	def prob(var)
    		if @ultima == $game_variables[var] and rand(100) >= PROBABILITA
    			return false
    		else
    			return true
    		end
    	end
    end
    
    
    class Game_Map
    	alias events_setup setup
    	def setup(map_id)
    		events_setup(map_id)
    		for i in @map.events.keys
    			@events[i].set_num
    		end
    	end
    end
    

     

     

     

    Istruzioni per l'uso

     

    Trovate tutto all'interno dello script, se lo usate creditatemi :wink:

    Bugs e Conflitti Noti

     

    Non dovrebbero essercene... Per qualsiasi cosa contattatemi!

  3. Secondo me la mappa del covo degli shinigami è un po ripetitiva, troppi cristalli XD, secondo me dovresti aggiungere qualche dettaglio sostituendolo a un po di cristalli :sisi:

     

    La grotta invece in sè è abbastanza carina, solo che è un po' strettina XD Ma in fondo, non ce male.

    L'unica cosa: il laghetto a sinistra perfettamente parallelo al muro non so non mi ispira tanto XD

    Comunque, vedo che usi gli autotiles quadrati, io quelli che arrotondano gli spigoli se vuoi :D

     

    Un consiglio: Prova anche a fare vari livelli, mettendo tipo una mini scaletta per esempio per il pezzo a destra, renderebbe molto di più :)

    Ok ora puoi bastonarmi XD

  4. class Window_Rianimazione < Window_Selectable  #--------------------------------------------------------------------------  # * Object Initialization  #--------------------------------------------------------------------------  def initialize	super(0, 0, 320, 100)	self.contents = Bitmap.new(width - 32, height - 32)	refresh  end  #--------------------------------------------------------------------------  # * Refresh  #--------------------------------------------------------------------------  def refresh	self.contents.clear	self.contents.draw_text (0, 0, 120, 32,  $game_variables[0005].to_s, 2)	end  end

     

     

    Mmm Perchè hai reso la finestra una finestra selezionabile se gli fai scrivere solo un valore?

    Per quel tipo di finestre la finesra da cui far ereditare le funzioni è la Window_Base,

    Comunque, togli l'update e prova a mettere dopo la pressione del tasto C

    @window_rianimazione.refresh

     

    cosi: (Nella scena, non nella Window)

     

    def update   if Input.trigger?(Input::C)	   $game_variables[0005] += 1	   @window_rianimazione.refresh	 end	end

  5. Diciamo che il secondo metodo è quello più pulito visto che creando una nuova scena quelle di base rimangono invariate.

     

    Ora ho un altro problema :

     

     

     

     

    class Scene_Rianimazione
    def main
     
    @window_rianimazione = Window_Rianimazione.new
    @window_rianimazione = 100
    @time = 0
    @spriteset = Spriteset_Map.new
    Graphics.transition
    loop do
    Graphics.update
    Input.update
    update
    time
    if $scene != self
    break
    end
    end
    Graphics.freeze
    @spriteset.dispose
    @window_rianimazione.dispose
    end
     
    def update
     
    @window_rianimazione.update
    if Input.trigger?(Input::C)
    $game_variables[0005] += 1
    end
    end
    end
     
     
    def time
    @time += 1
    if @time > 50
    if $game_variables[0005] >= 10
    $scene = Scene_Lotta.new
    else $game_variables[0005] <= 0
    $scene = Scene_Title.new
    end
    end
    end

     

     

     

     

    Mi dà un errore alla riga dove ho scritto window_Rianimazione.update.

    Però se lo tolgo dopo la finestra non si aggiornerebbe sul valore della variabile [0005]...Ed inoltre alla pressione del tasto C la variabile stessa non aumenta O.o Non riesco ad uscirne..

    Bisognerebbe vedere la struttura della Window Rianimazione per poter dire qualcosa

  6. Ma non basterebbe che il codice venga riscritto così ?

    		if $game_temp.gameover  #	 Switch to game over screen	  $game_temp.gameover = false	  $game_switches[2] = true	  $game_map.need_refresh = true	  return	 end

     

    Putroppo così facendo mi bloccava lo stesso O_o XD

  7. Woww XD Beeello vedere che vi battete per me :sisi:

     

    Apparte gli scherzi XD

    @Zoro the gallade

    Preannuncio che fare mappe non è il mio punto di forza, ma se vuoi posso fartene qualcuna, ma entrare in un altro progetto nono XD Sono gia molto impegnato, ed è un mese emezzo che sto andando avanti a compiti e interrogazioni...

    Comunque, come dicevo prima, se vuoi te ne modifico qualcuna ma giusto QUALCUNA XD Perchè non mi pare giusto nei confronti di chi comunque mi chiede dei lavori e paga in rens :)

  8. Ragazzi ho un problema,volevo modificare il gameover automatico alla morte dell'eroe...Allora ho modificato in questo modo la scene_map:

     

    		if $game_temp.gameover  #	 Switch to game over screen	  $game_switches[2] = true	  return	 end

     

     

    Però così facendo il gioco rimane immobile in mappa...L'evento che si dovrebbe attivare con la switch non parte...Dove ho sbagliato?

     

     

    Ci ho messo un po per capirlo, ma alla fine ce l'ho fatta XD

     

    Intanto sostituisci quello che hai scritto con:

     

    if $game_temp.gameover	  # Switch to game over screen	  #$scene = Scene_Gameover.new	  $game_switches[2] = true	  $game_map.need_refresh = true	  return	end

     

    Poi vai nel interpreter 7 e trova il comando 353

     

    Copia questo e sostituiscilo a quello:

     

     def command_353	# Set game over flag	$game_temp.gameover = true	@index += 1	# End	return false  end

  9. non è proprio quello ma ci sei andato vicino XD per avere il numero di eroi del party il comando è:

     

    $game_party.actors.size

     

    Cioe se tu per esempio devi verificare che ci siano almeno 4 eroi nel party metti condizione:

     if $game_party.actors.size > 3QUALCOSA_SUCCEDEend

     

    E cosi via...

  10. Purtroppo no °_° Ora ti posto quello che ho copiato nella classe e che continua a darmi per errato!

     

     

     

    class Window_Command < Window_Selectable  def command	return @commands[index]  endend  class Scene_Lotta  def main	comandi = ["Pugno","Suplex","Dropkick","Irish whip"]	comandi.unshift("Calcio") if $game_actors[1].sp == $game_actors[1].maxsp	@select_window = Window_Command.new(192, comandi)	@select_window.x = 0	@select_window.y = 100	@select_window.opacity = 100	@window_hud_tigre = Window_HUD_Tigre.new	@spriteset = Spriteset_Map.new	Graphics.transition	loop do	Graphics.update	Input.update	update	if $scene != self  	  break  	end  end  Graphics.freeze  @select_window.dispose  @spriteset.dispose  @window_hud_tigre.dispose  end def update   @select_window.update   @window_hud_tigre.update   if Input.trigger?(Input::C)		case @select_window.command		when "Calcio"		  $game_variables[4] +=  5		  when "Pugno"		  $game_variables[1] += 3		when "Suplex"		  $game_variables[1] += 20		when "Dropkick"			$game_variables[1] += 15		  when "Irish whip"		  $game_variables[1] += 5		  end	 $game_system.se_play($data_system.decision_se)		$game_map.need_refresh = true		   $scene = Scene_Map.new   	 end   endend

     

     

    Oddio XD Rpg maker schizza male XD Prova a fare cosi:

     

    Fai clic destro sulla lista degli script (a sinistra)

    fai FIND

    E scrivi Calcio

    Vedi se trova qualcosa...

    Se trova qualcosa vuol dire che non hai cancellato tutta la parte che non serve

  11. Mi dà un errore di metodo evidenziando la classe window_command O.o

     

     

    Strano a me non da nessun errore e fila tutto liscio O_o

     

    Comunque avevo dimenticato di aggiungere ai dispose lo @spriteset.dispose

     

     

    class Window_Command < Window_Selectable  def command	return @commands[index]  endend  class Scene_Lotta  def main	comandi = ["Pugno","Suplex","Dropkick","Irish whip"]	comandi.unshift("Calcio") if $game_actors[1].sp == $game_actors[1].maxsp	@select_window = Window_Command.new(192, comandi)	@select_window.x = 0	@select_window.y = 100	@select_window.opacity = 255	@window_hud = Window_HUD.new	@window_hud.opacity = 255  	@spriteset = Spriteset_Map.new	Graphics.transition	loop do	Graphics.update	Input.update	update	if $scene != self  	  break  	end  end  Graphics.freeze  @select_window.dispose  @spriteset.dispose  @window_hud.dispose  end def update   @select_window.update   @window_hud.update   if Input.trigger?(Input::C)		case @select_window.command		when "Calcio"		  $game_variables[4] +=  5		  when "Pugno"		  $game_variables[1] += 3		when "Suplex"		  $game_variables[1] += 20		when "Dropkick"			$game_variables[1] += 15		  when "Irish whip"		  $game_variables[1] += 5		  end	 $game_system.se_play($data_system.decision_se)		$game_map.need_refresh = true		   $scene = Scene_Map.new   	 end   endend

     

     

    Non so perchè ma senza la prima volta andava normale, poi crashava XD

    Prova con questo a me va ^^

  12. Sono cattivo e non te lo dico U_U ma chissà potrebbe essere:

    $game_screen.weather(nil, 1, 0)

    oppure

    $game_screen.weather(nil, 1, 0, 0)

     

    dato che nella descrizione servono 4 parametri XD, dovrei vedere lo script, ma ricordo che per una versione che io funzionava ^^

     

    EDIT: ah questa di usare gli eventi non la sapevo XD

×
×
  • Create New...