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

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Tutos: Traduire son jeu du français (...) / Tests: SPZ : Déclarations / Scripts: MV Core Script / Jeux: Proud To Be A Vile / Programmes: Générateur de mots / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

151 connectés actuellement

10953730 visiteurs
depuis l'ouverture

93 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Hellsoft

Planète Glutko

Le Temple de Valor

Le Comptoir Du clickeur

New RPG Maker

Tous nos partenaires

Devenir
partenaire



Animation quand on obtient un objet

Afficher une petite animation sur le héros lorsqu'on gagne un objet

Script pour RPG Maker XP
Ecrit par Roi of the Suisse
Publié par Roi of the Suisse (lui envoyer un message privé)
Signaler un script cassé

L'intérêt de ce script est qu'une animation sera jouée automatiquement dès que le héros gagne un objet dans le jeu. Pas besoin de concevoir une animation pour chaque objet du jeu, pas besoin de lancer cette animation à chaque fois que vous ajoutez un objet.

Illustration

Un exemple tiré du jeu Kujira no Hara, où ce script est utilisé :

image

Dans le code évènementiel du coffre, je me contente d'ajouter l'objet "Radis". L'animation s'affiche automatiquement.

Préparatifs

Il vous faudra :
- Réserver une animation dans votre base de données. Moi, par exemple, je vais utiliser l'animation n°45 de la base de données. Je n'utiliserai jamais l'animation n°45 dans le jeu. Elle servira uniquement pour ce script. Je nomme l'animation n°45 : "OBJET OBTENU", et je la laisse toujours vide.
- Une image nommée "tous les objets.png" située dans votre dossier "Graphics/Animations/". Cette image contient les icônes de tous vos objets, dans l'ordre. S'il y a un objet pour lequel vous ne voulez pas afficher l'animation, laissez une case vide. Comme toutes les images d'animations, elle est formée de grandes cases carrées de 192 pixels, rangées par lignes de 5. L'icone de l'objet est au centre de chaque case. Voici l'image que j'utilise personnellement :

image

Dans mon cas, le vase est l'objet 1. Je n'affiche pas d'animation pour l'objet 2. Les potions bleue/rouge/verte sont les objets 3/4/5. Le ticket est l'objet 6. Les clés sont les objets 7 et 8. Je n'affiche pas d'animation pour les objets 9 et 10.
- De la même façon, des images nommées "toutes les armes.png" et "toutes les armures.png" avec les icônes des armes et des armures.

Le code à rajouter

Insérez une page au dessus de Main, que vous nommerez "ROTS objet obtenu".

Le code est le suivant :

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
# ------------------------------------------------------------------------------
# Display a quick animation when obtaining an item
# ------------------------------------------------------------------------------
# by Roi of the Suisse
# You can come here to complain:
# https://www.rpg-maker.fr/scripts-545-animation-quand-on-obtient-un-objet.html
# ------------------------------------------------------------------------------
# - Keep an animation slot in your RPG Maker XP database for this script
# Fill the number of this animation in ROTS_ANIMATION_NUMBER constant below
# - Prepare an animation picture with the icons of the impacted items
# Fill the name of this picture in ROTS_IMAGE_NAME_ITEMS constant below
# Same for WEAPONS and ARMORS
# ------------------------------------------------------------------------------
class Interpreter
  
  # Customization
  ROTS_ANIMATION_NUMBER = 45
  ROTS_ANIMATION_DURATION = 30
  ROTS_ANIMATION_HEIGHT = 16
  ROTS_TWINKLING_START = 19
  ROTS_ASCENDING_DURATION = 5.0 # floating number!
  ROTS_IMAGE_NAME_ITEMS = "tous les objets" # no file extension!
  ROTS_IMAGE_NAME_WEAPONS = "toutes les armes" # no file extension!
  ROTS_IMAGE_NAME_ARMORS = "toutes les armures" # no file extension!
 
  # Item obtained
  alias_method :rots_animation_item_obtained_command_126, :command_126
  def command_126
    # Call the usual method
    result = rots_animation_item_obtained_command_126
    display_animation_item_obtained(ROTS_IMAGE_NAME_ITEMS)
    return result
  end
  
  # Weapon obtained
  alias_method :rots_animation_item_obtained_command_127, :command_127
  def command_127
    # Call the usual method
    result = rots_animation_item_obtained_command_127
    display_animation_item_obtained(ROTS_IMAGE_NAME_WEAPONS)
    return result
  end
  
  # Armor obtained
  alias_method :rots_animation_item_obtained_command_128, :command_128
  def command_128
    # Call the usual method
    result = rots_animation_item_obtained_command_128
    display_animation_item_obtained(ROTS_IMAGE_NAME_ARMORS)
    return result
  end
  
  # Display animation
  def display_animation_item_obtained(image_name)
    
    # Is this an item obtained or removed?
    if @parameters[1] == 0
      
      # Is there an animation already playing?
      if $game_player.animation_id == 0
      
        # Display the icon animation on the hero
        item_number = @parameters[0] - 1
        my_animation = RPG::Animation.new
        my_animation.id = ROTS_ANIMATION_NUMBER
        my_animation.name = "OBJET OBTENU"
        my_animation.animation_name = image_name
        my_animation.frame_max = ROTS_ANIMATION_DURATION
        for i in 0..ROTS_ANIMATION_DURATION
          y_animation = (0 - ROTS_ANIMATION_HEIGHT)
          if i<ROTS_ASCENDING_DURATION
            # At the beginning, the item is ascending
            y_animation *= i/ROTS_ASCENDING_DURATION
            y_animation = y_animation.round
          end
          if i<ROTS_TWINKLING_START or (i-ROTS_TWINKLING_START)/2%2==1
            my_frame = RPG::Animation::Frame.new
            my_frame.cell_max = 1  
            my_frame.cell_data = ::Table.new(1,8)
            my_frame.cell_data[0,0] = item_number #pattern
            my_frame.cell_data[0,1] = 0 #X-coordinate
            my_frame.cell_data[0,2] = y_animation #Y-coordinate
            my_frame.cell_data[0,3] = 100 #zoom level
            my_frame.cell_data[0,4] = 0 #angle of rotation
            my_frame.cell_data[0,5] = 0 #horizontal flip
            my_frame.cell_data[0,6] = 255 #opacity
            my_frame.cell_data[0,7] = 0 #blending mode
            my_animation.frames.push(my_frame)
          else 
            # In the end, the item is twinkling
            my_frame.cell_max = 0
            my_frame = RPG::Animation::Frame.new
            my_animation.frames.push(my_frame)
          end
        end
        $data_animations[ROTS_ANIMATION_NUMBER] = my_animation
        $game_player.animation_id = ROTS_ANIMATION_NUMBER
        # Voila
      end
    end
  end
  
end



Personnalisation

Voici la zone que vous pouvez personnaliser à vos risques et périls :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
  # Customization
  ROTS_ANIMATION_NUMBER = 45
  ROTS_ANIMATION_DURATION = 30
  ROTS_ANIMATION_HEIGHT = 16
  ROTS_TWINKLING_START = 19
  ROTS_ASCENDING_DURATION = 5.0 # floating number!
  ROTS_IMAGE_NAME_ITEMS = "tous les objets" # no file extension!
  ROTS_IMAGE_NAME_WEAPONS = "toutes les armes" # no file extension!
  ROTS_IMAGE_NAME_ARMORS = "toutes les armures" # no file extension!


ROTS_ANIMATION_NUMBER : le numéro de l'animation que vous avez réservé dans la base de données
ROTS_ANIMATION_DURATION : durée totale (en frames) de l'animation
ROTS_ANIMATION_HEIGHT : nombre de pixel que l'objet va parcourir en allant vers le haut
ROTS_TWINKLING_START : durée (en frames) pendant laquelle l'objet va clignoter à la fin de l'animation
ROTS_ASCENDING_DURATION : durée (en frames) pendant laquelle l'objet va monter
ROTS_IMAGE_NAME_ITEMS : nom de l'image contenant tous les icônes, sans l'extension ".png" à la fin
ROTS_IMAGE_NAME_WEAPONS : nom de l'image contenant toutes les armes, sans l'extension ".png" à la fin
ROTS_IMAGE_NAME_ARMORS : nom de l'image contenant toutes les armures, sans l'extension ".png" à la fin




Gari - posté le 18/12/2020 à 14:49:43 (3647 messages postés) - staff -

❤ 0

Je pense que tu aurais gagné à dire que l'animation en question était du type de celle de Golden Sun (en gros, l'icône apparaît au-dessus de la tête du héros), et encore plus à expliquer pourquoi utiliser cette méthode : en l'état, je suppose que c'est parce qu'elle est automatique (pas besoin d'autre manipulation que l'édition de l'image).

Pour ceux qui ne comprendraient pas (il m'a fallu un peu de temps) : le script lit l'animation comme les numéros id de votre inventaire.
Premier emplacement = première entrée dans la base de données. On va vers la droite, puis on descend en bas à gauche, et c'est reparti (sens de lecture d'un livre).

Je pense que ce script n'a été prévu que pour les objets (?), mais il y a sans doute moyen de le rendre valable pour les armes et armures à partir de cette ligne ?

Portion de code : Tout sélectionner

1
    numero_de_l_objet = @parameters[0] - 1


Et sans doute d'autres lignes ? (ou dupliquer la portion de code en changeant l'image, pour ceux avec les gros inventaires (je n'imagine pas l'enfer que serait la création d'une image avec 999 icônes...).


Roi of the Suisse - posté le 18/12/2020 à 14:56:51 (25129 messages postés) - admin

❤ 1

Si le Sylvanor se réveille, Omnirancie disparaîtra ! Hou hou !

Voilà, j'en ai fait une version qu'il suffit d'ajouter au dessus de Main.

J'en ferai probablement une version améliorée plus tard. Une version qui gère également les armes et armures.
En attendant, je me contente de partager généreusement mon invention, que j'utilise telle quelle dans mon jeu :zorro

Plante 300 arbres et tu ne pollues plus ! | Es-tu une star ? | Kujira no Hara | Polaris 03 | Planète Glutko


NanakyTim - posté le 18/12/2020 à 17:30:41 (23619 messages postés) - staff

❤ 0

Leader Bocaliste Floodeur Légendaire

Un peu complexe à mettre en place je trouve (au niveau des images), mais bravo pour l'idée et le partage.

Ça me donne envie de partager le script que j'utilise (basé sur un de Zeus81).
Il est plus facile à mettre en place vu qu'il ne nécessite pas d'animation et va directement chercher l'image de l'objet dans l'éditeur de RM (icon).
Et il fonctionne pour les armes & armures.

Héros ou Fléau ? Devenez le Roi de Quineroy ! ~ Plongez dans l'univers sombre du Darkans ! ~ Dimens Reis... Allez y faire un tour. ~ Rangez votre chambre ! ~ Avez-vous peur du noir ? ~ Sauvez le futur, en allant dans le passé: BOCALATOR...


Roi of the Suisse - posté le 18/12/2020 à 18:15:27 (25129 messages postés) - admin

❤ 0

Si le Sylvanor se réveille, Omnirancie disparaîtra ! Hou hou !

Dans l'idéal, il ne faudrait pas passer par une animation comme je fais actuellement, mais directement utiliser l'icône de l'objet et l'afficher avec un viewport je suppose. Ainsi on peut se passer de l'image du dossier Animations. Zeus fait sûrement comme ça.
Je vais encore l'améliorer dans le futur de toutes façons.

Plante 300 arbres et tu ne pollues plus ! | Es-tu une star ? | Kujira no Hara | Polaris 03 | Planète Glutko


Alkanédon - posté le 19/12/2020 à 08:23:15 (7871 messages postés) -

❤ 0

Citoyen d'Alent

Je savais pas que tu scriptais c'est top !
Je trouve l'animation et le temps d'attente pour l'animation un peu longuet.
Merci pour le partage !

Rejoignez la LOVE MACHINE


Roi of the Suisse - posté le 20/12/2020 à 10:29:57 (25129 messages postés) - admin

❤ 0

Si le Sylvanor se réveille, Omnirancie disparaîtra ! Hou hou !

À mon niveau c’est plus de la bidouille que du script pour l’instant :F
Heureusement, on peut personnaliser le rythme de l’animation.

Plante 300 arbres et tu ne pollues plus ! | Es-tu une star ? | Kujira no Hara | Polaris 03 | Planète Glutko


xvw - posté le 21/12/2020 à 12:25:33 (718 messages postés)

❤ 0

yo

Il vaut mieux utiliser

Portion de code : Tout sélectionner

1
alias_method :rots_animation_objet_obtenu_command_126, :command_126



mon blog


Roi of the Suisse - posté le 21/12/2020 à 22:49:23 (25129 messages postés) - admin

❤ 0

Si le Sylvanor se réveille, Omnirancie disparaîtra ! Hou hou !

Ah bon ? Pourquoi ? Je suis curieux !
Parce que cet alias cible plus particulièrement une méthode ?

Plante 300 arbres et tu ne pollues plus ! | Es-tu une star ? | Kujira no Hara | Polaris 03 | Planète Glutko


xvw - posté le 22/12/2020 à 11:51:19 (718 messages postés)

❤ 1

yo

Parce que alias_method est une méthode, alors que alias est une sorte d'instruction magique.
Y'a aussi des nuances au niveau du scope.
https://bigbinary.com/blog/alias-vs-alias-method

mon blog


Roi of the Suisse - posté le 19/01/2021 à 22:29:04 (25129 messages postés) - admin

❤ 1

Si le Sylvanor se réveille, Omnirancie disparaîtra ! Hou hou !

:avert2 J'ai modifié le script pour inclure les armes et armures.

Plante 300 arbres et tu ne pollues plus ! | Es-tu une star ? | Kujira no Hara | Polaris 03 | Planète Glutko

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 | 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