Accueil du SiteAccueil du Site  AccueilAccueil  Dernières imagesDernières images  RechercherRechercher  ConnexionConnexion  S'enregistrerS'enregistrer  



Le Deal du moment :
Fnac : 2 jeux de société achetés ...
Voir le deal

Partagez
 

 Tressaillement à la Golden Sun

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Eekoun
Chevalier (niveau 1)
Chevalier (niveau 1)
Eekoun

Messages postés : 74
Date d'inscription : 30/01/2014
Jauge LPC :
Tressaillement à la Golden Sun 891527140070 / 10070 / 100Tressaillement à la Golden Sun 8915271400


Tressaillement à la Golden Sun Empty
MessageSujet: Tressaillement à la Golden Sun   Tressaillement à la Golden Sun EmptyLun 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 Razz !).

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
Revenir en haut Aller en bas
 
Tressaillement à la Golden Sun
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Golden sun ds
» Golden Sun 3 annoncé!
» [XP] Système de combat Golden Sun

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Le Palais Créatif :: ~ PARTAGE ~ :: Scripts et plugins :: RPG Maker VXAce :: Autres-
Sauter vers: