Oniromancie: Scripts - Animation Partout


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

Jeux: Monster World RPG / Jeux: Pif et Hercule / News: Mise à jour de RPG Maker 2003 / Tutos: Création de charset / Jeux: FAYLINAWA /

Chat  (55 connectés)

Bienvenue
visiteur !








Statistiques

Liste des
membres


Contact

82 connectés actuellement

9263197 visiteurs
depuis l'ouverture

1369 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

Ressources Naruto

FrGraph-X

HeyMakeGames

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




Animation Partout
Script pour RPG Maker XP
Ecrit par Zeus81

Normalement les animations s'affichent uniquement sur des évènements. Ce script permet d'afficher des animations n'importe où sans utiliser d'évènement. Il suffit d'indiquer les coordonnées X et Y et le tour est joué.
Si vous avez du mal avec les coordonnées, cliquez sur l'endroit où vous voulez faire l'animation.
Vous pouvez voir les coordonnées en bas à droite de votre écran.
image

Le reste est expliqué au début du script.
Le script est à mettre au dessus du main comme d'habitude.


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
#=================================
# Animation Partout v1.1
# Script créé par Zeus81
#=================================
#
#
# Manuel d'utilisation :
#
# Faire insérer un script et écrire :
#             $game_temp.animations.push([id, hit, x, y])
#
# id      =   Id de l'animation.
#
# hit     =   Animation Touché ou Manqué (Voir les réglages des animations).
#             Pour Touché -> hit = true
#             Pour Manqué -> hit = false
#
# x et y  =   Position ou sera affichée l'animation.
#             On peux mettre des nombres décimaux pour plus de précision.
#
# Exemple d'utilisation :
#             id  = 1
#             hit = true
#             x   = 14
#             y   = 7
#             $game_temp.animations.push([id, hit, x, y])
#
# Note :
#             Dans les animations seuls les "Flash" sur l'écran seront visible, pas ceux sur la cible.
#             (Forcement vu qu'il n'y a pas de cible)
#             La portée de l'animation ("Haut", "Milieu", "Bas") ne changera rien à sa position.
#             Par contre si c'est "Ecran", ce sera comme si l'animation était faite sur n'importe quel évènement.
#             Les animations s'affichent uniquement quand on est sur la map (c-à-d pas pendant les combats ou les menus).
 
class Game_Temp
  
  attr_accessor :animations
  
  alias zeus81_animation_partout_game_temp_initialize initialize
  def initialize
    zeus81_animation_partout_game_temp_initialize
    @animations = []
  end
  
end
 
 
class Spriteset_Map
  
  alias zeus81_animation_partout_spriteset_map_initialize initialize
  def initialize
    @animations_sprites = []
    zeus81_animation_partout_spriteset_map_initialize
  end
  
  alias zeus81_animation_partout_spriteset_map_dispose dispose
  def dispose
    @animations_sprites.each {|sprite| sprite.dispose}
    zeus81_animation_partout_spriteset_map_dispose
  end
  
  alias zeus81_animation_partout_spriteset_map_update update
  def update
    $game_temp.animations.each {|data| @animations_sprites.push(Sprite_Animation.new(@viewport1, data))}
    $game_temp.animations.clear
    need_compact = false
    for i in 0...@animations_sprites.size
      @animations_sprites[i].update
      if @animations_sprites[i].disposed?
        @animations_sprites[i] = nil
        need_compact = true
      end
    end
    @animations_sprites.compact! if need_compact
    zeus81_animation_partout_spriteset_map_update
  end
  
end
 
 
class Sprite_Animation < RPG::Sprite
  
  def initialize(viewport, data)
    super(viewport)
    animation($data_animations[data[0]], data[1])
    @real_x = data[2] * 128
    @real_y = data[3] * 128
  end
  
  def update
    super
    self.x = (@real_x - $game_map.display_x + 3) / 4 + 16
    self.y = (@real_y - $game_map.display_y + 3) / 4
    self.dispose if @_animation_duration == 0
  end
  
end




Erol - posté le 14/08/2010 à 18:38:09. (1 messages postés)

Zeus81, t'es un dieu!
C'est pas précisé, mais on peut utiliser les variables pour les coordonnées et l'ID de l'animation, ce qui est hyper pratique!
Exemple:

Portion de code : Tout sélectionner

1
$game_temp.animations.push([$game_variables[1], true, $game_variables[50], 7])


affichera l'animation "\V[1]" aux cordonnées "\V[50]; 7" en mode "touché".
Par contre, utiliser un interrupteur pour remplacer le booléen ne semble pas marcher (ou alors j'utilise pas la bonne commande)


loly74 - posté le 06/02/2012 à 21:55:54. (795 messages postés)

Couteau pas tout à fait Suisse Agréé

Merci, mais les animations passent sous les images chez moi, c'est assez embêtant...

Sylvan Melody, c'est par ici ! | Mes Musiques! | "Les RTP c'est quand même très limité. Quand on réalise un jeu, on réalise un univers qui va avec, et cet univers il passe beaucoup par les graphismes, et l'identité qu'on leur donne."


Zeus81 - posté le 07/02/2012 à 03:26:20. (11072 messages postés)

Ah oui, pour la peine j'ai fait une nouvelle version avec une option pour mettre des coordonnées écran (avant c'était des coordonnées map) vu que c'est ce dont t'as besoin, non ?

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
# Animation Partout v1.3 par Zeus81
#
# Faire insérer un script et écrire :
#             $game_temp.animations << [id, hit, x, y, screen]
# id      =   Id de l'animation.
# hit     =   Animation Touché ou Manqué (Voir les réglages des animations).
#             Pour Touché -> hit = true
#             Pour Manqué -> hit = false
# x et y  =   Position ou sera affichée l'animation.
#             On peux mettre des nombres décimaux pour plus de précision.
# screen  =   true pour considérer la position en pixels par rapport à l'écran.
#             false pour la considérer en carreaux par rapport à la map.
# Exemple :
#             $game_temp.animations << [1, true, 14, 7, false]
# Note :
#             Dans les animations seuls les "Flash" sur l'écran seront visible,
#             pas ceux sur la cible (forcement vu qu'il n'y en a pas).
#             La portée de l'animation "Haut", "Milieu", "Bas" ne changera rien
#             à sa position et si c'est "Ecran", ce sera comme si l'animation
#             était faite sur n'importe quel évènement.
#             Les animations s'affichent uniquement quand on est sur la map.
 
class Game_Temp
  attr_accessor :animations
  alias zeus81_animation_partout_game_temp_initialize initialize
  def initialize
    zeus81_animation_partout_game_temp_initialize
    @animations = []
  end
end
 
class Spriteset_Map
  alias zeus81_animation_partout_spriteset_map_initialize initialize
  def initialize
    @animations_sprites = []
    zeus81_animation_partout_spriteset_map_initialize
  end
  alias zeus81_animation_partout_spriteset_map_dispose dispose
  def dispose
    @animations_sprites.each {|sprite| sprite.dispose}
    zeus81_animation_partout_spriteset_map_dispose
  end
  alias zeus81_animation_partout_spriteset_map_update update
  def update
    $game_temp.animations.each {|data| @animations_sprites << Sprite_Animation.new(@viewport3, *data)}
    $game_temp.animations.clear
    @animations_sprites.each {|sprite| sprite.update}
    @animations_sprites.delete_if {|sprite| sprite.disposed?}
    zeus81_animation_partout_spriteset_map_update
  end
end
  
class Sprite_Animation
  def initialize(viewport, animation, hit, x, y, screen=false)
    return unless @animation = $data_animations[animation]
    @viewport, @hit, @x, @y, @screen, @frame, @sprites, @bitmap =
      viewport, hit, x, y, screen, -1, [], 
      RPG::Cache.animation(@animation.animation_name, @animation.animation_hue)
  end
  def dispose
    @sprites.each {|sprite| sprite.dispose} if @sprites
    @sprites = @animation = nil
  end
  def disposed?() !@animation end
  def update
    return unless @animation and Graphics.frame_count % 2 == 0
    if (@frame += 1) < @animation.frame_max
      if @animation.position == 3
        x, y = @viewport.rect.width/2, @viewport.rect.height/2
      elsif @screen
        x, y = @x, @y
      else
        x, y = (@x*128-$game_map.display_x+3)/4+16, (@y*128-$game_map.display_y+3)/4
      end
      sprite_count, cell_data = -1, @animation.frames[@frame].cell_data
      @sprites.each {|sprite| sprite.visible = false}
      16.times do |i|
        next unless pattern = cell_data[i, 0] and pattern != -1
        @sprites << Sprite.new(@viewport) unless @sprites[sprite_count+=1]
        sprite = @sprites[sprite_count]
        sprite.bitmap = @bitmap
        sprite.src_rect.set(pattern%5*192, pattern/5*192, 192, 192)
        sprite.x = x + cell_data[i, 1]
        sprite.y = y + cell_data[i, 2]
        sprite.z = 2000
        sprite.ox = sprite.oy = 96
        sprite.zoom_x = sprite.zoom_y = cell_data[i, 3] / 100.0
        sprite.angle = cell_data[i, 4]
        sprite.mirror = (cell_data[i, 5] == 1)
        sprite.opacity = cell_data[i, 6]
        sprite.blend_type = cell_data[i, 7]
        sprite.visible = true
      end
      for timing in @animation.timings
        if timing.frame == @frame and (timing.condition == 0 or @hit == (timing.condition == 1))
          $game_system.se_play(timing.se)
          @viewport.flash(timing.flash_color, timing.flash_duration*2) if timing.flash_scope == 2
        end
      end
    else dispose
    end
  end
end

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