Eekoun Chevalier (niveau 1)
Messages postés : 74 Date d'inscription : 30/01/2014 Jauge LPC :
| Sujet: Tressaillement à la Golden Sun 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. InstallationCopiez 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 !). Faire tressaillir des évènementsIl 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 tressaillementIl 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 tressaillementAdmettons 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 officielleLieu 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 |
|