❤ 1Gari 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é :
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 :
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 :
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:
# http://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 :
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
|