Midi Posted February 23, 2014 Share Posted February 23, 2014 (edited) Sprite Trace Descrizione Questo script permette di generare un "effetto scia" dietro agli Eventi o al Player in movimento. La scia può essere attivata/disattivata tramite semplici Call Script. http://i58.tinypic.com/96du1g.png Può tornare utile per rendere in maniera visivamente più interessante il movimento, e per molti altri effetti. Tra le altre cose è possibile scegliere durata, frequenza, tipo di blend e priorità della scia. Se non si esagera, le scie non generano lag apprezzabile (la perdita media è di 0,5 FPS per scia attiva, testato sul mio PC che è notoriamente una vecchia carretta). Autore Midi Allegati Nessuno Istruzioni per l'uso Incollare lo script nella sezione "Materials", sopra il "Main". Le istruzioni per impostare le scie e attivarle si trovano all'inizio dello script. Script #============================================================================= # Sprite Trace #----------------------------------------------------------------------------- # vers. 1.0.0 (23-02-2014) # by Midi #----------------------------------------------------------------------------- module Sprite_Trace #============================================================================= # ** DESCRIZIONE ** # Questo script permette di generare un "effetto scia" dietro agli Eventi o al # Player in movimento. La scia può essere attivata/disattivata a piacimento # tramite semplici Call Script. #----------------------------------------------------------------------------- # ** IMPOSTAZIONI ** #----------------------------------------------------------------------------- Duration = 64 # Durata di default della scia. Può essere un valore # qualsiasi tra 1 e 128. A un valore maggiore # corrisponde una maggior durata della scia. Frequency = 128 # Frequenza di default della scia. Può essere un # valore qualsiasi tra 1 e 256. A un valore maggiore # corrisponde una scia più fitta, a un valore minore # una scia più diradata. Starting_Opacity = 192 # Opacità di partenza della scia. Può essere un # valore qualsiasi tra 1 e 255. A un valore maggiore # corrisponde una scia più intensa. Mode = :add # Tipo di blend della scia. I valori ammessi sono # :add, :sub e :normal, che rispettivamente indicano # una scia additiva, sottrattiva o normale. Priority = :under # Priorità della scia. I valori ammessi sono :same, # :under e :over, i quali indicano rispettivamente # che la scia sarà alla stessa priorità del chara, # sotto il chara o sopra il chara. #============================================================================= # ** ISTRUZIONI ** #----------------------------------------------------------------------------- # Per attivare una scia, chiamare il seguente comando all'interno di un Call # Script di un Evento o di un Percorso Movimento: # # Trace.on # # Il comando può anche accettare diversi parametri, tutti OPZIONALI: # # Trace.on(target, duration, frequency, mode, priority) # # - target: un numero intero. Indica l'ID dell'Evento su cui si attiva la # scia. Per attivare la scia sul Player inserire un numero # negativo, oppure :player. # Se questo parametro è assente, la scia si attiva sull'Evento # in cui è stato chiamato il comando. # # - duration: un numero intero compreso tra 1 e 128. Imposta la durata della # scia. Se questo parametro è assente, viene usata la durata di # default. # Invece di un numero, si può inserire anche :long o :short. In # tal caso la durata della scia viene rispettivamente raddoppiata # o dimezzata rispetto a quella di default. # # - frequency: un numero intero compreso tra 1 e 256. Imposta la frequenza # della scia. Se questo parametro è assente, viene usata la # frequenza di default. # Invece di un numero, si può inserire anche :high o :low. In tal # caso la frequenza della scia viene rispettivamente raddoppiata # o dimezzata rispetto a quella di default. # # - mode: può assumere i valori :normal, :add e :sub. Imposta il tipo di # blend della scia. Se questo parametro è assente, viene usato # il valore di default. # Invece dei valori citati è possibile usare anche degli interi. # A 0 corrisponde :normal, a 1 corrisponde :add e a 2 corrisponde # :sub. # # - priority: può assumere i valori :under, :same e :over. Imposta la # priorità della scia. Se questo parametro è assente, viene usata # la priorità di default. # Invece dei valori citati è possibile usare anche degli interi. # A 0 corrisponde :under, a 1 corrisponde :same e a 2 corrisponde # :over. #----------------------------------------------------------------------------- # Per disattivare una scia, chiamare i seguenti comandi all'interno di un Call # Script di un Evento o di un Percorso Movimento: # # Trace.off # # oppure # # Trace.clear # # Il primo comando disattiva la scia in maniera graduale, lasciandola svanire # normalmente. # Il secondo comando disattiva la scia istantaneamente. # # Entrambi i comandi possono accettare un parametro OPZIONALE: # # Trace.off(target) # Trace.clear(target) # # - target: un numero intero. Indica l'ID dell'Evento su cui si disattiva # la scia. Per disattivare la scia sul Player inserire un numero # negativo, oppure :player. # Se questo parametro è assente, si disattiva la scia dell'Evento # in cui è stato chiamato il comando. #----------------------------------------------------------------------------- # Esempi: # # Trace.on # Viene attivata la scia sull'Evento in cui è stato chiamato il comando. # La scia utilizza tutti i valori di default. # # Trace.on(:player) [oppure anche Trace.on(-1)] # Viene attivata la scia sul Player. La scia utilizza tutti i valori di # default. # # Trace.on(12) # Viene attivata la scia sull'Evento 12. La scia utilizza tutti i valori # di default. # # Trace.on(12, 60, 250) # Viene attivata la scia sull'Evento 12, con durata 60 e frequenza 250. # Gli altri valori della scia sono quelli di default. # # Trace.on(:player, 60, 250, :sub, 2) # Viene attivata la scia sul Player, con durata 60, frequenza 250, # tipo di blend sottrattivo e priorità :over (2). # # Trace.on(mode = :normal, duration = 40) # Viene attivata la scia sull'Evento in cui è stato chiamato il comando. # La scia ha tipo di blend normale e durata 40. Gli altri valori della # scia sono quelli di default. # # Trace.off # Viene disattivata la scia dell'Evento in cui è stato chiamato il # comando. # # Trace.clear(3) # Viene disattivata e cancellata immediatamente la scia dell'Evento 3. # # Trace.off(:player) [oppure anche Trace.off(-1)] # Viene disattivata la scia sul Player. #============================================================================= #============================================================================= # ** CONDIZIONI DI UTILIZZO ** # Questo script è sotto licenza Creative Commons BY-NC-SA # (Attribuzione-NonCommerciale-CondividiAlloStessoModo 3.0 Unported). # - Attribuzione : è obbligatorio creditare l'autore. # - NonCommerciale: non si può utilizzare questo script per scopi # commerciali. # - CondividiAlloStessoModo: se si modifica, trasforma o utilizza questo # script in un'opera, l'opera risultante può essere # distribuita solo sotto la stessa o compatibile licenza. # Per più informazioni, http://creativecommons.org/licenses/by-nc-sa/3.0/ #============================================================================= #----------------------------------------------------------------------------- # Non modificare qui sotto, a meno che tu non sappia cosa stai facendo! :) #----------------------------------------------------------------------------- Modes = [:normal, :add, :sub] Priorities = [:under, :same, :over] Max_Value_F = 256 Max_Value_D = 128 def self.get_duration(duration) result = Sprite_Trace::Duration if duration.is_a?(Numeric) && duration > 0 result = duration elsif duration.is_a?(Symbol) if duration == :long result *= 2 elsif duration == :short result = (result / 2) + 1 end end result = Sprite_Trace::Max_Value_D if result > Sprite_Trace::Max_Value_D result end def self.get_frequency(frequency) result = Sprite_Trace::Frequency if frequency.is_a?(Numeric) && frequency > 0 result = frequency elsif frequency.is_a?(Symbol) if frequency == :high result *= 2 elsif frequency == :low result = (result / 2) + 1 end end result = Sprite_Trace::Max_Value_F if result > Sprite_Trace::Max_Value_F result end def self.get_mode(mode) result = Sprite_Trace::Modes.index(Sprite_Trace::Mode) if mode.is_a?(Symbol) && Sprite_Trace::Modes.include?(mode) result = Sprite_Trace::Modes.index(mode) elsif mode.is_a?(Numeric) && (0..2).include?(mode) result = mode end result end def self.get_priority(priority) result = Sprite_Trace::Priorities.index(Sprite_Trace::Priority) if priority.is_a?(Symbol) && Sprite_Trace::Priorities.include?(priority) result = Sprite_Trace::Priorities.index(priority) elsif priority.is_a?(Numeric) && (0..2).include?(priority) result = priority end result end def self.get_starting_opacity result = Sprite_Trace::Starting_Opacity result = 255 if result > 255 result = 1 if result < 1 result end end module Trace def self.on(target = 0, duration = :normal, \ frequency = :normal, mode = Sprite_Trace::Mode, \ priority = Sprite_Trace::Priority) character = nil if target.is_a?(Numeric) character = $game_map.interpreter.get_character(target) elsif target.is_a?(Symbol) && target == :player character = $game_map.interpreter.get_character(-1) end if character character.set_trace_on character.trace_duration = Sprite_Trace.get_duration(duration) character.trace_frequency = Sprite_Trace.get_frequency(frequency) character.trace_mode = Sprite_Trace.get_mode(mode) character.trace_priority = Sprite_Trace.get_priority(priority) end end def self.off(target = 0) character = nil if target.is_a?(Numeric) character = $game_map.interpreter.get_character(target) elsif target.is_a?(Symbol) && target == :player character = $game_map.interpreter.get_character(-1) end if character character.set_trace_off end end def self.clear(target = 0) character = nil if target.is_a?(Numeric) character = $game_map.interpreter.get_character(target) elsif target.is_a?(Symbol) && target == :player character = $game_map.interpreter.get_character(-1) end if character character.set_trace_off character.set_trace_clear end end end class Game_Character attr_accessor :trace_duration attr_accessor :trace_frequency attr_accessor :trace_mode attr_accessor :trace_priority alias midi_sprite_trace_initialize initialize def initialize midi_sprite_trace_initialize @trace_on = false end def set_trace_on @trace_on = true end def set_trace_off @trace_on = false end def set_trace_clear @trace_clear = true end def reset_trace_clear @trace_clear = false end def trace_on? @trace_on end def trace_clear? @trace_clear end end class Sprite_Tracer < Sprite_Base def initialize(viewport, character, bitmap, src_r, ox, oy, duration, mode, \ priority) super(viewport) set_bitmap(bitmap, src_r) @character = character set_starting_position set_opacity_delta(duration) self.blend_type = mode self.ox = ox self.oy = oy self.opacity = Sprite_Trace.get_starting_opacity @priority = priority - 1 update end def dispose super end def update super update_position update_other end def set_opacity_delta(duration) if duration && duration.is_a?(Numeric) && duration > 0 @opacity_delta = (Sprite_Trace::Starting_Opacity / duration.to_f) end end def set_bitmap(bitmap, src_r) if bitmap self.bitmap = bitmap end if src_r self.src_rect = src_r end end def set_starting_position if @character != nil @real_x = @character.real_x @real_y = @character.real_y @shift_y = @character.shift_y @jump_height = @character.jump_height end end def update_position if @character != nil self.x = get_screen_x self.y = get_screen_y self.z = (@character.screen_z) + @priority end end def update_other self.opacity -= @opacity_delta if self.opacity <= 0 dispose end end def get_screen_x $game_map.adjust_x(@real_x) * 32 + 16 end def get_screen_y $game_map.adjust_y(@real_y) * 32 + 32 - @shift_y - @jump_height end end class Spriteset_Tracer def initialize @sprites = [] end def add(sprite) @sprites.push(sprite) if sprite end def clear dispose @sprites = [] end def update @sprites.delete_if do |sprite| if sprite && !sprite.disposed? sprite.update false else true end end end def dispose for sprite in @sprites next unless sprite sprite.dispose unless sprite.disposed? end end end class Sprite_Character < Sprite_Base alias midi_sprite_trace_initialize initialize alias midi_sprite_trace_update update alias midi_sprite_trace_dispose dispose def initialize(viewport, character = nil) @trace_duration = 0 @trace_length = 0 @trace_mode = nil @trace_sprites = Spriteset_Tracer.new midi_sprite_trace_initialize(viewport, character) end def update midi_sprite_trace_update @trace_sprites.update if @character != nil if @character.trace_on? if @trace_length <= 0 @trace_length = 512 / @character.trace_frequency bp = self.bitmap vp = self.viewport ox = self.ox oy = self.oy src_r = self.src_rect duration = @character.trace_duration mode = @character.trace_mode priority = @character.trace_priority sprite = Sprite_Tracer.new(vp, @character, bp, src_r, \ ox, oy, duration, mode, priority) @trace_sprites.add(sprite) else @trace_length -= 1 end elsif @character.trace_clear? @trace_sprites.clear if @trace_sprites @character.reset_trace_clear end end end def dispose midi_sprite_trace_dispose @trace_sprites.dispose end end Bugs e Conflitti Noti N/A Altri dettagli Le istruzioni sono presenti all'interno dello script. Lo script è sotto licenza Creative Commons BY-NC-SA 3.0. Quindi è possibile usarlo e distribuirlo liberamente purché: - venga creditato l'autore; - non venga utilizzato con finalità commerciali; - tutti le opere derivate e/o basate su esso siano distribuite con la stessa licenza o con licenza compatibile. Edited February 23, 2014 by Midi Aurora Dreaming The Dreamer (v. 1.1) - standalone 72 MB - Il prequel ad Aurora Dreaming segui il dev-diary ufficiale di Aurora Dreaming! Bacheca Premi http://www.rpg2s.net/forum/uploads/monthly_01_2014/post-6-0-39588100-1390575633.png Link to comment Share on other sites More sharing options...
Guardian of Irael Posted February 23, 2014 Share Posted February 23, 2014 Oh altro ottimo script, Midi, personalizzabile con durate, ecc... per le scie! E:3 Mi chiedo se si possa creare qualche minigame stile moto! XD^ ^ (\_/)(^ ^) <----coniglietto rosso, me! (> <) Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^ http://i.imgur.com/KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^ http://i.imgur.com/FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^ REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^ 🖤http://www.rpg2s.net/dax_games/r2s_regali2s.png E:3 http://www.rpg2s.net/dax_games/xmas/gifnatale123.gifhttp://i.imgur.com/FfvHCGG.png by Testament (notare dettaglio in basso a destra)! E:3http://i.imgur.com/MpaUphY.jpg by Idriu E:3Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44) http://i.imgur.com/PgUqHPm.pngUfficiale"Ad opera della sua onestà e del suo completo appoggio alla causa dei Panda, Guardian Of Irael viene ufficialmente considerato un Membro portante del Partito, e Ambasciatore del suo Popolo presso di noi"http://i.imgur.com/TbRr4iS.png<- Grazie Testament E:3Ricorda...se rivolgi il tuo sguardo ^ ^ a Guardian anche Guardian volge il suo sguardo ^ ^ a te ^ ^http://i.imgur.com/u8UJ4Vm.gifby Flame ^ ^http://i.imgur.com/VbggEKS.gifhttp://i.imgur.com/2tJmjFJ.gifhttp://projectste.altervista.org/Our_Hero_adotta/ado2.pngGrazie Testament XD Fan n°1 ufficiale di PQ! :DVivail Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che nonavevo programmi di grafica per fare un banner su questo pc XD (ora ho dinuovo il mio PC veramente :D) Rosso Guardiano dellahttp://i.imgur.com/Os5rvhx.pngRpg2s RPG BY FORUM:Nome: Darth Reveal PV totali 2PA totali 16Descrizione: ragazzo dai lunghi capelli rossi ed occhi dello stesso colore. Indossa una elegante giacca rossa sopra ad una maglietta nera. Porta pantaloni rossi larghi, una cintura nera e degli stivali dello stesso colore. E' solito trasportare lo spadone dietro la schiena in un fodero apposito. Ha un pendente al collo e tiene ben legato un pezzo di stoffa (che gli sta particolarmente a cuore) intorno al braccio sinistro sotto la giacca, copre una cicatrice.Bozze vesti non definitive qui.Equipaggiamento:Indossa:60$ e 59$ divisi in due tasche interneLevaitanSpada a due mani elsa lungaGuanti del Defender (2PA)Anello del linguaggio animale (diventato del Richiamo)Scrinieri da lanciere (2 PA)Elmo del Leone (5 PA)Corazza del Leone in Ferro Corrazzato (7 PA) ZAINO (20) contenente:Portamonete in pelle di cinghiale contenente: 100$Scatola Sanitaria Sigillata (può contenere e tenere al sicuro fino a 4 oggetti curativi) (contiene Benda di pronto soccorso x3, Pozione di cura)CordaBottiglia di idromeleForma di formaggioTorcia (serve ad illuminare, dura tre settori)Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)Ampolla BiancaSemi di Balissa CAVALLO NORMALE + SELLA (30 +2 armi) contentente:66$Benda di pronto soccorso x3Spada a due maniFagotto per Adara (fazzoletto ricamato) Link to comment Share on other sites More sharing options...
Midi Posted February 23, 2014 Author Share Posted February 23, 2014 Se ti riferisci a giochi tipo "Tron", non penso. ^.^ Lo script serve soltanto per creare un effetto visivo gradevole, ma a livello di gameplay non serve a nulla: la scia è completamente "trasparente", Eventi e Player la ignorano. La priorità serve solo per determinare come visualizzare la scia, non permette di interagire con essa. :) A me lo script serve per realizzare effetti onirici e ipnotici.L'alternativa sarebbe stata realizzarli tramite eventi e picture... ho preferito spendere 4-5 ore per buttar giù lo script piuttosto che dannarmi l'anima su ogni singolo effetto ogni volta che mi fosse servito. ^.^ Aurora Dreaming The Dreamer (v. 1.1) - standalone 72 MB - Il prequel ad Aurora Dreaming segui il dev-diary ufficiale di Aurora Dreaming! Bacheca Premi http://www.rpg2s.net/forum/uploads/monthly_01_2014/post-6-0-39588100-1390575633.png Link to comment Share on other sites More sharing options...
Guardian of Irael Posted February 23, 2014 Share Posted February 23, 2014 Se ti riferisci a giochi tipo "Tron", non penso. ^.^Quello dicevo con moto, ma sì, vedo che lo script non tiene conto della posizione della scia, ma bisognerebbe fare un discorso a variabili di posizioni successive... un casino! XD^ ^ Bel lavoro! E:3 (\_/)(^ ^) <----coniglietto rosso, me! (> <) Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^ http://i.imgur.com/KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^ http://i.imgur.com/FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^ REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^ 🖤http://www.rpg2s.net/dax_games/r2s_regali2s.png E:3 http://www.rpg2s.net/dax_games/xmas/gifnatale123.gifhttp://i.imgur.com/FfvHCGG.png by Testament (notare dettaglio in basso a destra)! E:3http://i.imgur.com/MpaUphY.jpg by Idriu E:3Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44) http://i.imgur.com/PgUqHPm.pngUfficiale"Ad opera della sua onestà e del suo completo appoggio alla causa dei Panda, Guardian Of Irael viene ufficialmente considerato un Membro portante del Partito, e Ambasciatore del suo Popolo presso di noi"http://i.imgur.com/TbRr4iS.png<- Grazie Testament E:3Ricorda...se rivolgi il tuo sguardo ^ ^ a Guardian anche Guardian volge il suo sguardo ^ ^ a te ^ ^http://i.imgur.com/u8UJ4Vm.gifby Flame ^ ^http://i.imgur.com/VbggEKS.gifhttp://i.imgur.com/2tJmjFJ.gifhttp://projectste.altervista.org/Our_Hero_adotta/ado2.pngGrazie Testament XD Fan n°1 ufficiale di PQ! :DVivail Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che nonavevo programmi di grafica per fare un banner su questo pc XD (ora ho dinuovo il mio PC veramente :D) Rosso Guardiano dellahttp://i.imgur.com/Os5rvhx.pngRpg2s RPG BY FORUM:Nome: Darth Reveal PV totali 2PA totali 16Descrizione: ragazzo dai lunghi capelli rossi ed occhi dello stesso colore. Indossa una elegante giacca rossa sopra ad una maglietta nera. Porta pantaloni rossi larghi, una cintura nera e degli stivali dello stesso colore. E' solito trasportare lo spadone dietro la schiena in un fodero apposito. Ha un pendente al collo e tiene ben legato un pezzo di stoffa (che gli sta particolarmente a cuore) intorno al braccio sinistro sotto la giacca, copre una cicatrice.Bozze vesti non definitive qui.Equipaggiamento:Indossa:60$ e 59$ divisi in due tasche interneLevaitanSpada a due mani elsa lungaGuanti del Defender (2PA)Anello del linguaggio animale (diventato del Richiamo)Scrinieri da lanciere (2 PA)Elmo del Leone (5 PA)Corazza del Leone in Ferro Corrazzato (7 PA) ZAINO (20) contenente:Portamonete in pelle di cinghiale contenente: 100$Scatola Sanitaria Sigillata (può contenere e tenere al sicuro fino a 4 oggetti curativi) (contiene Benda di pronto soccorso x3, Pozione di cura)CordaBottiglia di idromeleForma di formaggioTorcia (serve ad illuminare, dura tre settori)Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)Ampolla BiancaSemi di Balissa CAVALLO NORMALE + SELLA (30 +2 armi) contentente:66$Benda di pronto soccorso x3Spada a due maniFagotto per Adara (fazzoletto ricamato) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now