Oniromancie: Scripts - Tremblement de l'écran amélioré


Comment ça marche?

Aëdemphia
Par Sylvanor

Fighting Robots Quest
Par Boulon

Forstale
Par Ødd Clock

Geex
Par roys

Inexistence
Par Falco

La Légende d'Ibabou
Par Zaitan

Lije
Par Gaetz

LoveMaster
Par Cuddlefox

Sarcia
Par Kaëlar

Super Mario RPG - Lost Souls
Par Omegabowser

News: Concours des Alex d'Or 2017-18: (...) / News: MegaMaker : créez votre propre (...) / News: Test de Tinker Quarry / Sorties: Leave the Room / Jeux: Leave the Room /

Chat  (49 connectés)

Bienvenue
visiteur !






publicité RPG Maker!

Statistiques

Liste des
membres


Contact

76 connectés actuellement

9178700 visiteurs
depuis l'ouverture

1314 visiteurs
aujourd'hui

Groupe Facebook

Barre de séparation

Partenaires




TOP
GAMEMAKING


Les 5 plus
visités

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Pixelandgame

Tashiroworld

HeyMakeGames

Au hasard

Univers RPG Maker XP

Le Blog d'Exaheva

RPG Architect

Les deux derniers

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Nos autres partenaires

Devenir
partenaire


Barre de séparation

Un site du réseau
War Paradise

Annuaires référenceurs





Tremblement de l'écran amélioré
Script pour RPG Maker XP
Ecrit par zeus81

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


Portion de code:



#=================================

# Tremblement de l'écran amélioré
# 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 = false
@shake_speed_random = false
@shake_direction_random = false
end

def shake2
@shake2 = 0 if @shake2 == nil
return @shake2
end

def start_shake(power, speed, duration, direction = SHAKE_DIRECTION_DEFAULT)
@shake_duration = duration
if power == 0
@shake_power = rand(9) + 1
@shake_power_random = true
else
@shake_power = power
@shake_power_random = false
end
if speed == 0
@shake_speed = rand(9) + 1
@shake_speed_random = true
else
@shake_speed = speed
@shake_speed_random = false
end
if direction == 0
@shake_direction_random = true
else
if @shake_direction != direction and @shake_direction != (10 - direction)
@shake_direction = direction
@shake = 0
@shake2 = 0
end
@shake_direction_random = false
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
if @shake_power_random == true
@shake_power = rand(9) + 1
end
if @shake_speed_random == true
@shake_speed = rand(9) + 1
end
if @shake_direction_random == true
@shake_direction = rand(8) + 1
@shake_direction += 1 if @shake_direction > 4
end
delta = (@shake_power * @shake_speed) / 10.0
@shake = 0
@shake2 = 0
end
if @shake.abs > @shake_power * 2 or @shake2.abs > @shake_power * 2
@shake_direction = 10 - @shake_direction
end
if @shake_duration > 0
@shake_duration -= 1
end
if @shake_duration == 0 and @shake.abs < delta and @shake2.abs < delta
@shake = 0
@shake2 = 0
else
@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
end
end
if @weather_duration >= 1
d = @weather_duration
@weather_max = (@weather_max * (d - 1) + @weather_max_target) / d
@weather_duration -= 1
if @weather_duration == 0
@weather_type = @weather_type_target
end
end
if $game_temp.in_battle
for i in 51..100
@pictures.update
end
else
for i in 1..50
@pictures.update
end
end
end

end

class Spriteset_Map

alias spriteset_map_update update
def update
spriteset_map_update
@viewport1.oy = $game_screen.shake2
end

end




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

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)

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. (11072 messages postés) - bocauxharam

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)

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)

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

Plan du site:

Activité: Accueil | News | Forum | Flash-news | Chat | Commentaires | Galerie | Screen de la semaine | Sorties | Articles perso | Livre d'or | Recherche
Jeux: Index jeux séparés | Top Classiques | Top Originaux | Les autres | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Jeux complets | Proposer
Rubriques: Le Wiki | Collection Oniro | Tutoriaux | Scripts | Guides | Gaming-Live | Tests | Making-of | Interviews | Articles perso | OST | L'Annuaire | Divers | Palmarès
Hébergés: Aëdemphia | Fighting Robots Quest | Forstale | Geex | Inexistence | La Légende d'Ibabou | Lije | LoveMaster | Sarcia | Super Mario RPG - Lost Souls
Ressources: Jeux | Programmes | Packs de ressources | Midis | Eléments séparés | Sprites
RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis