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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
| #============================================================================
# SCRIPT COMPTEUR
# Stephane Roys, Royer
# Fevrier 2007
# Projet: Petite Boite à outils pour aider les event maker
# Ce script permet de gèrer en event l'apparition d'un compteur sours forme d'une icone avec un nombre et un titre
# 1- Créer un compteur en event
# Faire inserer script: $compteur = Compteur.new(x,y,var,"icone","texte")
# Remplacer $compteur par $le_nom_de_votre_compteur
# x et y par les coordonnées ecran ou s'affichent votre compteur
# var par le numéro de votre variable qui contrôle la compteur
# "icone" par le nom de votre icone que vou savez importé dans le dossier Icons,
# texte par un texte entre "guillement" court portant le nom de votre compteur (par ex "Ammo").
# exemple: $ammo=compteur.new(0,0,2,"005-Weapon05","Fleches")
# ici on créé un compteur $ammo qui s'affiche en 0,0 (coin haut gauche)
# , gèrer par la variable002 avec le texte "Fleches" devant
# 2- Mise à jour de la compteur
# La mise à jour est automatique, vous n'avez qu'à changer la valeur de la variable de votre compteur
# Ainsi que l'effacement quand vous allez sur votre menu
# 3- Effacer une compteur
# Faire simplement $le_nom_de_votre_compteur.off
# Recommandations à lire
#------------------------
# 1- Vous pouvez changer la taille de la Police et la couleur de tous les compteurs ici:
FONT="Arial"
TAILLE=16
COLOR=Color.new(0,0,0,255)
#2- Prenez soin de donner des noms différents à vos compteurs sinon vous risquez d'avoir des conflits
#3- Ne crééez pas une compteur en processus parallèle sinon vous allez créér une nouvelle compteur à chaque frame
# jusqu'a ce que RM bug
#4- La sauvergarde est comprise dans le script. Donc apres un load votre compteur sera dans l'etat ou il a été sauvé
#5- Les compteurs s'effacent tous seul quand vous sortez de la map vers un menu, et il se recrée seul quand vous revenez sur la map
#============================================================================
#============================================================================
# COMPTEURS
# Créé le tableau des compteurs de Jeu
#============================================================================
class Game_Party
attr_accessor:compteurs
alias compteur_game_party_initialize initialize
#--------------------------------------------------------------------------
# INITIALIZE
#--------------------------------------------------------------------------
def initialize
compteur_game_party_initialize
# Tableau des compteurs
@compteurs=[]
end
end
#============================================================================
# COMPTEUR
#============================================================================
class Compteur
attr_accessor:x # Coordonnées d'affichage
attr_accessor:y
attr_accessor:var # Numéro de la variable RMXP
attr_accessor:value # Valeur de la variable RMXP
attr_accessor:texte # Texte devant l'icone
attr_accessor:icone # nom de l'icone dans le dossier Icons
attr_accessor:fin_compteur # Indique la fin du compteur
#--------------------------------------------------------------------------
# INITIALIZE
#--------------------------------------------------------------------------
def initialize(x,y,var,icone,texte)
@x=x;@y=y;@var=var;@icone=icone;@texte=texte
@fin_compteur=false
$game_party.compteurs.push(self)
@visible=true
@value=$game_variables[@var]
end
#--------------------------------------------------------------------------
# UPDATE
#--------------------------------------------------------------------------
def update
@value=$game_variables[@var]
end
#--------------------------------------------------------------------------
# OFF
# Termine le compteur
#--------------------------------------------------------------------------
def off
@fin_compteur=true
end
end
#============================================================================
# ¦ Spriteset Map
# Mise à jour de la class Spriteset_Map afin de gérer l'affichage graphique
#============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
alias compteur_spriteset_map_initialize initialize
alias compteurspriteset_map_dispose dispose
alias compteur_spriteset_map_update update
#--------------------------------------------------------------------------
# INITIALIZE
#--------------------------------------------------------------------------
def initialize
# Créé les compteurs
@compteur_sprite=[]
for compteur in $game_party.compteurs
setup_compteur(compteur)
end
compteur_spriteset_map_initialize
end
#--------------------------------------------------------------------------
# SETUP
#--------------------------------------------------------------------------
def setup_compteur(compteur)
# Créé le sprite en fonction de la taille de la police
sprite=Sprite.new
sprite.bitmap=Bitmap.new(24+3*TAILLE+compteur.texte.size*TAILLE,[TAILLE,24].max)
# Récupère l'icone
bitmap=Bitmap.new(24,24)
bitmap = RPG::Cache.icon(compteur.icone)
# Construit le sprite
sprite.bitmap.blt(compteur.texte.size*TAILLE,0,bitmap,Rect.new(0,0,24,24))
sprite.bitmap.font.color= Color.new(0,0,0)
sprite.z = 3000
sprite.x = compteur.x
sprite.y = compteur.y
sprite.bitmap.font.name = FONT
sprite.bitmap.font.size = TAILLE
sprite.bitmap.font.color= COLOR
sprite.bitmap.draw_text(0,0,compteur.texte.size*TAILLE, [TAILLE,24].max,compteur.texte,0)
@compteur_sprite.push(sprite)
end
#--------------------------------------------------------------------------
# UPDATE
#--------------------------------------------------------------------------
def update
compteur_spriteset_map_update
#-----------------------------
# Cherche si une nouvelle compteur a été créée
for key in @compteur_sprite.size..$game_party.compteurs.size-1
setup_compteur($game_party.compteurs[key])
end
#-----------------------------
# Update la compteur
delete_sprite=[]
delete_compteur=[]
for key in 0..$game_party.compteurs.size-1
compteur=$game_party.compteurs[key]
sprite=@compteur_sprite[key]
# Récupère la valeur du compteur
compteur.update
# Rafraichit le sprite
sprite.bitmap.clear
bitmap=Bitmap.new(24,24)
bitmap = RPG::Cache.icon(compteur.icone)
# Affiche l'icone
sprite.bitmap.blt(compteur.texte.size*TAILLE,0,bitmap,Rect.new(0,0,24,24))
# Affiche le titre
sprite.bitmap.draw_text(0,0,compteur.texte.size*TAILLE, [TAILLE,24].max,compteur.texte,1)
# Affiche le Compteur
sprite.bitmap.draw_text(compteur.texte.size*TAILLE+24,0,compteur.texte.size*TAILLE, [TAILLE,24].max,compteur.value.to_s,1)
# Observe si la compteur est disposée
if compteur.fin_compteur
delete_sprite.push(sprite)
delete_compteur.push(compteur)
end
end
#-----------------------------
# Dispose la compteur
for sprite in delete_sprite
sprite.dispose
@compteur_sprite.delete(sprite)
end
for compteur in delete_compteur
$game_party.compteurs.delete(compteur)
end
end
#--------------------------------------------------------------------------
# DISPOSE
#--------------------------------------------------------------------------
def dispose
compteur_spriteset_map_dispose
for sprite in @compteur_sprite
sprite.dispose
end
end
end |