Partagez
Aller en bas
avatar
Eekoun
Membre

Nombre de messages : 86
Distinction : aucune
Date d'inscription : 06/03/2014

Tressaillement à la Golden Sun

le Lun 14 Avr 2014 - 2:25
[VXAce] Tressailleur d'évènements (Buzzer)
Refonte (et amélioration) d'un script réalisé par Fabien, de la Factory (R.I.P) pour RPG Maker XP. Premièrement réécrit par XHTMLBoy pour VX et réécrit par moi pour VXAce (avec beaucoup des options en plus). Il s'agit d'un outil pour faire vibrer les évènements comme dans Golden Sun.

Installation
Copiez le script dans votre éditeur de script Au dessus de Main, dans la rubrique Materials. Vous pouvez lui attribuer un emplacement réservé. Et le nommer comme vous l'entendez. Personnellement, j'ai choisi le nom Buzzer (original :P !).

Faire tressaillir des évènements

Il suffit d'appeller les commandes décrites ci dessous dans un appel de script et au moment où l'appel de script sera exécuté, le tressaillement aura lieu.


  • buzz 1 : fera tressaillir l'évènement 1
  • buzz 0 : fera tressaillir le héros
  • buzz 1, 7, 2, 10, 0 fera tressaillir les évènements 1, 7, 2, 10 et le héros. (comme vous pouvez le voir, vous pouvez combiner les tressaillements).
  • buzz_followers fera tressaillir tous les followers (dans la chenille)
  • buzz_followers 0 ne fera tressaillir que le premier des followers
  • buzz_followers 1, 2, 3 ne fera tressaillir que les followers de 1 à 3 (le premier étant le 0)



Paramétrer le tressaillement
Il est possible de paramétrer un tressaillement par sa durée, son amplitude et sa longueur.
buzz_config(durée, amplitude, longueur).buzz 0, 1, 2 Vous pouvez utilisé n'importer quelle méthode énoncée ci-dessus. Je vous invite à tester des valeur pour la configuration pour adapter vos tressaillement au milimètre près. Les valeurs par défaut sont buzz_config(16, 0.1, 16).

Chainage des tressaillement
Admettons que vous ayez créer votre tressaillement personnalisé, vous pouvez chainer les tressaillements. Par exemple :

  • buzz_config(18, 0.1, 16).buzz_followers.buzz 0 pour faire tressaillir tous les followers et le héros de la même manère.
  • ou encore buzz_config(18, 0.2, 160).buzz_followers.buzz 0, 1, 2, 3


Page officielle
Lieu ou sera mis le script à jours (si MAJ il y a)
https://github.com/nukiFW/RPGMaker/tree/master/Buzzer#vxace-tressailleur-d%C3%A9v%C3%A8nements-buzzer

Code complet
Code:
# Buzzer à la Golden Sun
# Par Fabien, Nuki


#==============================================================================
# ** Buzzer_Prop
#------------------------------------------------------------------------------
#  Renvoi les propriétés d'un buzzer
#==============================================================================

class Buzzer_Prop < Struct.new(:duration, :amplitude, :length)
  #--------------------------------------------------------------------------
  # * Applique un buzzer sur un event
  #--------------------------------------------------------------------------
  def apply_buzz(event)
    event.buzz            = self.duration
    event.buzz_length     = self.length
    event.buzz_amplitude  = self.amplitude
  end
  #--------------------------------------------------------------------------
  # * Buzz event
  #--------------------------------------------------------------------------
  def buzz(*ids)
    ids.each do |id|
      event = (id == 0 ? $game_player : $game_map.events[id])
      apply_buzz(event) if event
    end
    return self
  end
  #--------------------------------------------------------------------------
  # * Buzz follower
  #--------------------------------------------------------------------------
  def buzz_followers(*ids)
    return if !$game_player.followers.visible
    if ids.length == 0
      $game_player.followers.each{|flw|apply_buzz(flw)}
      return self
    end
    ids.each do |id|
      event = $game_player.followers[id]
      apply_buzz(event) if event
    end
    return self
  end
end

#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
#  Ajout de l'API de tressaillement
#==============================================================================

class Game_Interpreter
  #--------------------------------------------------------------------------
  # * Constantes
  #--------------------------------------------------------------------------
  BUZZER_STD_PROPP = Buzzer_Prop.new(16, 0.1, 16)
  #--------------------------------------------------------------------------
  # * buzz
  #--------------------------------------------------------------------------
  def buzz(*ids)
    BUZZER_STD_PROPP.buzz(*ids)
  end
  #--------------------------------------------------------------------------
  # * buzz des followers
  #--------------------------------------------------------------------------
  def buzz_followers(*ids)
    BUZZER_STD_PROPP.buzz_followers(*ids)
  end
  #--------------------------------------------------------------------------
  # * buzz avec configuration
  #--------------------------------------------------------------------------
  def buzz_config(duration, amplitude, length)
    Buzzer_Prop.new(duration, amplitude, length)
  end
end

#==============================================================================
# ** Game_Character
#------------------------------------------------------------------------------
#  Ajout des informations de tressaillement
#==============================================================================

class Game_Character
  #--------------------------------------------------------------------------
  # * Variables d'instances
  #--------------------------------------------------------------------------
  attr_accessor :buzz
  attr_accessor :buzz_amplitude
  attr_accessor :buzz_length
  #--------------------------------------------------------------------------
  # * Initialisation du Buzzer
  #--------------------------------------------------------------------------
  def  setup_buzzer
    @buzz           = 0
    @buzz_amplitude = 0.1
    @buzz_length    = 16
  end
end

#==============================================================================
# ** Sprite_Character
#------------------------------------------------------------------------------
#  Ajout de l'effet de tressaillement
#==============================================================================

class Sprite_Character
  #--------------------------------------------------------------------------
  # * Alias
  #--------------------------------------------------------------------------
  alias buzzer_initialize initialize
  alias buzzer_update update
  #--------------------------------------------------------------------------
  # * Instanciation d'un caractère
  #--------------------------------------------------------------------------
  def initialize(*args)
    buzzer_initialize(*args)
    self.character.setup_buzzer if self.character
    @old_buzz = 0
  end
  #--------------------------------------------------------------------------
  # * Frame update
  #--------------------------------------------------------------------------
  def update
    buzzer_update
    update_buzz
  end
  #--------------------------------------------------------------------------
  # * Update buzzer
  #--------------------------------------------------------------------------
  def update_buzz
    return if !self.character.buzz || self.character.buzz == 0
    if @old_buzz == 0
      @origin_len_x = self.zoom_x
      @origin_len_y = self.zoom_y
    end
    @old_buzz             = self.character.buzz
    len                   = self.character.buzz_length
    transformation        = Math.sin(@old_buzz*6.283/len)
    transformation        *= self.character.buzz_amplitude
    self.zoom_x           = @origin_len_x + transformation
    self.zoom_y           = @origin_len_y - transformation
    self.character.buzz   -= 1
    if self.character.buzz == 0
      self.zoom_x = @origin_len_x
      self.zoom_y = @origin_len_y
      @old_buzz = 0
    end
  end
end

avatar
Joke
Membre

Nombre de messages : 120
Age : 27
Localisation : Paris
Distinction : aucune
Date d'inscription : 02/06/2013
http://www.biloucorp.com

Re: Tressaillement à la Golden Sun

le Lun 14 Avr 2014 - 13:16
Un script qui m'a fait tressaillir.

Juste un conseil : utilisez le.
avatar
Spytje
Administrateur

Nombre de messages : 5899
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Re: Tressaillement à la Golden Sun

le Lun 14 Avr 2014 - 13:20

Merci pour ce script et ton partage, je te donne 3 points de participations pour le travail fournis sur celui-ci et tes autres scripts.

...
avatar
Joke
Membre

Nombre de messages : 120
Age : 27
Localisation : Paris
Distinction : aucune
Date d'inscription : 02/06/2013
http://www.biloucorp.com

Re: Tressaillement à la Golden Sun

le Lun 14 Avr 2014 - 13:28
Félicitation !
avatar
Eekoun
Membre

Nombre de messages : 86
Distinction : aucune
Date d'inscription : 06/03/2014

Re: Tressaillement à la Golden Sun

le Lun 14 Avr 2014 - 14:25
J'en suis tout émoustillé :/

Une petite capture d'écran
Mini exemple (le FPS pue un peu mais bon)
Contenu sponsorisé

Re: Tressaillement à la Golden Sun

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum