Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV

Apprendre
RPG Maker

Guides
Tutoriels
Making-of

Dans le
Forum

Section Entraide

Tutos: Ren'Py - Combiner les (...) / Tutos: Réaliser un pathfinder sur (...) / News: Cérémonie des Alex d'or 2020 / Jeux: Beetle Ninja / Jeux: Le Miroir de Philéas / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

106 connectés actuellement

10807039 visiteurs
depuis l'ouverture

97 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Hellsoft

Planète Glutko

Zarok

RPG Fusion

Le Studio du Chat Vert

Alex d'Or

New RPG Maker

Tous nos partenaires

Devenir
partenaire



Tremblement de l'écran amélioré
Script pour RPG Maker XP
Ecrit par zeus81
Publié par zeus81 (lui envoyer un message privé)
Signaler un script cassé

Créer un nouveau script au dessus du main et y copier tout le reste .

Version 1.2 (recommandée)

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#=================================
# Tremblement de l'écran amélioré v1.2
# Script créé par Zeus81
#=================================
#
#
# Manuel d'utilisation :
#
# Faire insérer un script et écrire :
#             $game_screen.start_shake(power, speed, duration, direction)
#
# power =     Intensité du tremblement.
#             Nombre supérieur à zéro qui n'est pas forcément un entier.
#             Par exemple pour un micro tremblement on peut mettre 0.5
#             Si la valeur est inférieure à 0.3333334 l'écran ne tremblera pas.
#             Si la valeur est trop grande le tremblement sera abusé !
 
#             Pour donner une idée de grandeur d'origine la valeur maximale est 9.
#             Si on met 0 power changera de valeur aléatoirement entre 1 et 9.
#
# speed =     Vitesse du tremblement
#             Nombre supérieur à zéro qui n'est pas forcément un entier.
#             Si la valeur est trop grande le tremblement sera abusé !
#             Pour donner une idée de grandeur d'origine la valeur maximale est 9.
#             Si on met 0 speed changera de valeur aléatoirement entre 1 et 9.
#
# duration =  Temps que durera le tremblement en nombre de frames.
#             Nombre entier supérieur à zéro.
#             Si on met -1 l'écran tremblera sans jamais s'arrêter.
#             Si on met 0 le tremblement s'arrêtera.
#
# direction = Sens dans lequel tremblera l'écran.
#             Si on met 0 l'écran tremblera dans des directions aléatoires.
#             Si on met 1 l'écran tremblera en diagonale.
 
#             Si on met 2 l'écran tremblera de haut en bas.
#             Si on met 3 l'écran tremblera dans l'autre diagonale.
#             Si on met 4 l'écran tremblera de gauche à droite.
#
# Exemple d'utilisation :
#             $game_screen.start_shake(2, 15, 200, 0)
#
# Il est aussi possible de régler la direction par défaut avec la constante SHAKE_DIRECTION_DEFAULT ci-dessous.
# Ainsi lorsque l'utilitaire d'origine pour faire trembler l'écran sera utilisé, ce sera dans cette direction.
 
class Game_Screen
  
  SHAKE_DIRECTION_DEFAULT = 0
  
  alias game_screen_initialize initialize
  def initialize
    game_screen_initialize
    @shake2 = 0
    @shake_power_random = @shake_speed_random = @shake_direction_random = false
  end
  def shake2() @shake2 ||= 0 end
  def start_shake(power, speed, duration, direction = SHAKE_DIRECTION_DEFAULT)
    @shake_duration = duration
    @shake_power_random = power == 0
    @shake_power = @shake_power_random ? rand(9) + 1 : power
    @shake_speed_random = speed == 0
    @shake_speed = @shake_speed_random ? rand(9) + 1 : speed
    @shake_direction_random = direction == 0
    if !@shake_direction_random and @shake_direction != direction and @shake_direction != (10 - direction)
      @shake_direction = direction
      @shake = @shake2 = 0
    end
  end
  def update
    if @tone_duration >= 1
      d = @tone_duration
      @tone.red = (@tone.red * (d - 1) + @tone_target.red) / d
      @tone.green = (@tone.green * (d - 1) + @tone_target.green) / d
      @tone.blue = (@tone.blue * (d - 1) + @tone_target.blue) / d
      @tone.gray = (@tone.gray * (d - 1) + @tone_target.gray) / d
      @tone_duration -= 1
    end
    if @flash_duration >= 1
      d = @flash_duration
      @flash_color.alpha = @flash_color.alpha * (d - 1) / d
      @flash_duration -= 1
    end
    if @shake_duration != 0 or @shake != 0 or @shake2 != 0
      delta = @shake_power * @shake_speed / 10.0
      if @shake.abs < delta and @shake2.abs < delta
        @shake_power = rand(9)+1 if @shake_power_random
        @shake_speed = rand(9)+1 if @shake_speed_random
        @shake_direction = rand(9)+1 if @shake_direction_random
        delta = @shake_power * @shake_speed / 10.0
        @shake = @shake2 = 0
      end
      if @shake.abs > @shake_power * 2 or @shake2.abs > @shake_power * 2
        @shake_direction = 10 - @shake_direction
      end
      @shake += delta if @shake_direction % 3 == 0
      @shake -= delta if (@shake_direction+2) % 3 == 0
      @shake2 += delta if @shake_direction < 4
      @shake2 -= delta if @shake_direction > 6
      if @shake_duration > 0
        @shake_duration -= 1
      elsif @shake.abs <= delta and @shake2.abs <= delta
        @shake = @shake2 = 0
      end
    end
    if @weather_duration >= 1
      d = @weather_duration
      @weather_max = (@weather_max * (d - 1) + @weather_max_target) / d
      @weather_duration -= 1
      @weather_type = @weather_type_target if @weather_duration == 0
    end
    for i in $game_temp.in_battle ? 51..100 : 1..50
      @pictures[i].update
    end
  end
end
 
class Spriteset_Map
  alias spriteset_map_update update
  def update
    spriteset_map_update
    @viewport1.oy = $game_screen.shake2
  end
end



Spoiler (cliquez pour afficher)



Mis à jour le 4/7/2020.





Timo - posté le 29/11/2010 à 20:13:09 (822 messages postés)

❤ 0

Pas mal, en bordure de l'écran, il met du noir lors des tremblements ?


Léopold - posté le 25/02/2012 à 13:22:37 (85 messages postés)

❤ 0

It's brillant... It's simple... It's science!

Ok, ça marche, sauf un détail.

En ligne 301, il y a @pictures.update (juste en dessous de for i in 1..50). Dès qu'on lance le jeu, ça bugue.
Faut retirer cette ligne 301, et là le script fonctionne sans problème.
Mon cher Zeus81, tu es un génie! ;)

Docteur L


Zeus81 - posté le 25/02/2012 à 20:29:06 (11071 messages postés)

❤ 0

Non dans un script faut jamais retirer des lignes pour le réparer.
Là c'est juste que les trois quarts des scripts d'oniro sont mort à cause des conneries de Nonor et TNL.
Tiens une version qui marche :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#=================================
# Tremblement de l'écran amélioré v1.2
# Script créé par Zeus81
#=================================
#
#
# Manuel d'utilisation :
#
# Faire insérer un script et écrire :
#             $game_screen.start_shake(power, speed, duration, direction)
#
# power =     Intensité du tremblement.
#             Nombre supérieur à zéro qui n'est pas forcément un entier.
#             Par exemple pour un micro tremblement on peut mettre 0.5
#             Si la valeur est inférieure à 0.3333334 l'écran ne tremblera pas.
#             Si la valeur est trop grande le tremblement sera abusé !
 
#             Pour donner une idée de grandeur d'origine la valeur maximale est 9.
#             Si on met 0 power changera de valeur aléatoirement entre 1 et 9.
#
# speed =     Vitesse du tremblement
#             Nombre supérieur à zéro qui n'est pas forcément un entier.
#             Si la valeur est trop grande le tremblement sera abusé !
#             Pour donner une idée de grandeur d'origine la valeur maximale est 9.
#             Si on met 0 speed changera de valeur aléatoirement entre 1 et 9.
#
# duration =  Temps que durera le tremblement en nombre de frames.
#             Nombre entier supérieur à zéro.
#             Si on met -1 l'écran tremblera sans jamais s'arrêter.
#             Si on met 0 le tremblement s'arrêtera.
#
# direction = Sens dans lequel tremblera l'écran.
#             Si on met 0 l'écran tremblera dans des directions aléatoires.
#             Si on met 1 l'écran tremblera en diagonale.
 
#             Si on met 2 l'écran tremblera de haut en bas.
#             Si on met 3 l'écran tremblera dans l'autre diagonale.
#             Si on met 4 l'écran tremblera de gauche à droite.
#
# Exemple d'utilisation :
#             $game_screen.start_shake(2, 15, 200, 0)
#
# Il est aussi possible de régler la direction par défaut avec la constante SHAKE_DIRECTION_DEFAULT ci-dessous.
# Ainsi lorsque l'utilitaire d'origine pour faire trembler l'écran sera utilisé, ce sera dans cette direction.
 
class Game_Screen
  
  SHAKE_DIRECTION_DEFAULT = 0
  
  alias game_screen_initialize initialize
  def initialize
    game_screen_initialize
    @shake2 = 0
    @shake_power_random = @shake_speed_random = @shake_direction_random = false
  end
  def shake2() @shake2 ||= 0 end
  def start_shake(power, speed, duration, direction = SHAKE_DIRECTION_DEFAULT)
    @shake_duration = duration
    @shake_power_random = power == 0
    @shake_power = @shake_power_random ? rand(9) + 1 : power
    @shake_speed_random = speed == 0
    @shake_speed = @shake_speed_random ? rand(9) + 1 : speed
    @shake_direction_random = direction == 0
    if !@shake_direction_random and @shake_direction != direction and @shake_direction != (10 - direction)
      @shake_direction = direction
      @shake = @shake2 = 0
    end
  end
  def update
    if @tone_duration >= 1
      d = @tone_duration
      @tone.red = (@tone.red * (d - 1) + @tone_target.red) / d
      @tone.green = (@tone.green * (d - 1) + @tone_target.green) / d
      @tone.blue = (@tone.blue * (d - 1) + @tone_target.blue) / d
      @tone.gray = (@tone.gray * (d - 1) + @tone_target.gray) / d
      @tone_duration -= 1
    end
    if @flash_duration >= 1
      d = @flash_duration
      @flash_color.alpha = @flash_color.alpha * (d - 1) / d
      @flash_duration -= 1
    end
    if @shake_duration != 0 or @shake != 0 or @shake2 != 0
      delta = @shake_power * @shake_speed / 10.0
      if @shake.abs < delta and @shake2.abs < delta
        @shake_power = rand(9)+1 if @shake_power_random
        @shake_speed = rand(9)+1 if @shake_speed_random
        @shake_direction = rand(9)+1 if @shake_direction_random
        delta = @shake_power * @shake_speed / 10.0
        @shake = @shake2 = 0
      end
      if @shake.abs > @shake_power * 2 or @shake2.abs > @shake_power * 2
        @shake_direction = 10 - @shake_direction
      end
      @shake += delta if @shake_direction % 3 == 0
      @shake -= delta if (@shake_direction+2) % 3 == 0
      @shake2 += delta if @shake_direction < 4
      @shake2 -= delta if @shake_direction > 6
      if @shake_duration > 0
        @shake_duration -= 1
      elsif @shake.abs <= delta and @shake2.abs <= delta
        @shake = @shake2 = 0
      end
    end
    if @weather_duration >= 1
      d = @weather_duration
      @weather_max = (@weather_max * (d - 1) + @weather_max_target) / d
      @weather_duration -= 1
      @weather_type = @weather_type_target if @weather_duration == 0
    end
    for i in $game_temp.in_battle ? 51..100 : 1..50
      @pictures[i].update
    end
  end
end
 
class Spriteset_Map
  alias spriteset_map_update update
  def update
    spriteset_map_update
    @viewport1.oy = $game_screen.shake2
  end
end


Léopold - posté le 18/03/2012 à 13:53:25 (85 messages postés)

❤ 0

It's brillant... It's simple... It's science!

C'est bon, tout marche impec'. Merci Zeus! ;)

Docteur L


BuddhaDBaguavat - posté le 30/04/2014 à 18:08:38 (1 messages postés)

❤ 0

Salut! je sais que le post date d'un moment maintenant, mais j'ai un problème avec la ligne "alias spriteset_map_update update"(L 118 de la version 1.2 du script).
Sa m'affiche "Script'Game_Screen" line 73: NameError occured.
undefined method 'update' for class 'Spriteset_Map'

Si vous pouviez m'aider sa serai génial les mec^^

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Articles perso | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Jeux complets | Tous les jeux | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers