[RPG-MAKER.FR] Oniromancie: tout l'univers de RPG Maker en français - Scripts - [RMXP]Sélection horizontale des personnages dans le menu.

Oniromancie: Scripts - [RMXP]Sélection horizontale des personnages dans le menu.


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace

Apprendre
RPG Maker

Guides
Tutoriels
Astuces
Making-of


Comment ça marche?

Aëdemphia
Par Sylvanor

Fighting Robots Quest
Par Boulon

Geex
Par roys

Inexistence
Par Falco

La Légende d'Ibabou
Par Zaitan

Nylu
Par NanakyTim

Sarcia
Par Kaëlar

Super Mario RPG - Lost Souls
Par Omegabowser

News: Game design: ouvrir son jeu aux (...) / News: Des jeux et des screens / News: Alex 2019 : tests et nominations (...) / Jeux: Wendy Whedon / Sorties: Wendy Whedon /

Chat  

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

141 connectés actuellement

10202702 visiteurs
depuis l'ouverture

3304 visiteurs
aujourd'hui

Groupe Facebook

Barre de séparation

Partenaires






TOP
GAMEMAKING


Les 5 plus
visités

Akademiya RPG Maker

Alex d'Or

Blog of Chaos17

BloGecko

ConsoleFun

Au hasard

Le bazar à Omega

Zarok

Akademiya RPG Maker

Les deux derniers

Zarok

Akademiya RPG Maker

Nos autres partenaires

Devenir
partenaire


Barre de séparation

Un site du réseau
War Paradise

Annuaires référenceurs




[RMXP]Sélection horizontale des personnages dans le menu.
Script pour RPG Maker XP
Ecrit par Tasslehoff

Script à placer comme d'habitude au-dessus du script main.

La largeur de la sélection est automatique, mais vous pouvez désactiver ça pour spécifier une largeur.

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
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
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
#=====================================================================
# ■ Window_MenuStatus redéfini
# Permet d'avoir une séléction vérticale des personnages dans le menu.
#=====================================================================
# Auteur:  Tasslehoff
# Version: 2.0
# Date:    14/05/2011
#=====================================================================
# 
# La taille de la séléction est réglée automatiquement selon le nombre de 
# personnages dans l'équipe.
# Vous pouvez cependant désactiver cette option à la ligne 30 et choisir 
# une largeur à la ligne 33. 
# Vous pouvez également activer ou désactiver les barres de séparation entre 
# les personnages à la ligne 36.
#
#======================================================================
 
 
#Définit la classe (Window_MenuStatus) et la classe parente (Window_Selectable).
#Window_MenuStatus hérite ainsi des variables de classes et des méthodes de Window_Selectable.
class Window_MenuStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # * Initialize (ce qui se passe au début)
  #--------------------------------------------------------------------------
  
  def initialize
    ######################
    #                    #  
      largeur_auto = true    # Taille automatique de la séléction.
    #                    #  # true = activé    et    false = désactivé
    #                    #  
      @largeur = 114        # Largeur de la séléction (conseillé : entre 76 et 448
    #                    #  # selon le nombre de personnages maximum dans l'équipe)
    #                    #    
      @lignes = true        # Barres de séparation entre les personnages
    #                    #  # true = activé    et    false = désactivé
    ######################
    
    #Crée la fenêtre.
    super(0, 0, 480, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
  
    if largeur_auto
      largeur = (width - 32) / $game_party.actors.size
      @largeur = largeur.to_i
    end
      
    #Si @largeur est impair, ajoute 1.
    if @largeur%2 == 1
      @largeur += 1
    end
    
    #Spécifie le nombre maximum de colonnes (=le nombre de personnages dans l'équipe).
    @column_max = $game_party.actors.size
    
    #Appel la méthode refresh.
    refresh
    
    #Désactive le clignotement du curseur.
    self.active = false
    
    #Place le curseur sur -1.
    self.index = -1 
    
  end
  
  #--------------------------------------------------------------------------
  # * Refresh (ce qui se passe à chaque frame, 1 seconde = 20 frames)
  #--------------------------------------------------------------------------
  def refresh
    
    #Efface le contenu.
    self.contents.clear
    
    #Rends le nombre d'item (de séléctions) égal au nombre de personnages dans l'équipe.
    @item_max = $game_party.actors.size
    
    #Affiche les informations du personnage i en remplacant chaque fois i par un nombre 
    #compris entre 0 et le nombre de personnages dans l'équipe. 
    for i in 0...$game_party.actors.size
      x = i * @largeur
      actor = $game_party.actors[i]                                                     #Rend "actor" égal au personnage numéro i.
      draw_actor_graphic(actor, x + @largeur/2, 112)                                    #Déssine le sprite de "actor".  
      draw_actor_name(actor, x + @largeur/2-32, 0)                                      #Ecrit le nom de "actor".
      draw_actor_class(actor, x + @largeur/2-32, 32)                                    #Ecrit la classe de "actor".
      self.contents.draw_text(x+6+@largeur/2, 86, @largeur/2-32, 32, actor.level.to_s)  #Ecrit le niveau de "actor".
      draw_actor_state(actor, x + @largeur/2-32, 112)                                   #Ecrit l'état de "actor". 
      draw_actor_exp_bis(actor, x, 244)                                                 #Ecrit l'expérience de "actor".
      draw_actor_hp_bis(actor, x, 156)                                                  #Ecrit les pv de "actor".
      draw_actor_sp_bis(actor, x, 200)                                                  #Ecrit les mp de "actor".
      draw_actor_equipement(actor, x, 300)
      if @lignes
       self.contents.fill_rect((i + 1) * @largeur, 0, 1, 480, Color.new(255, 255, 255))
      end
    
    end
    
  end
  #--------------------------------------------------------------------------
  # * Update Cursor Rect (met à jour le rectangle du curseur)
  #--------------------------------------------------------------------------
  def update_cursor_rect
    
    #Si le curseur est en dessous de 0, l'éfface, sinon le met au bon endroit.
    if @index < 0
      self.cursor_rect.empty
    else
      self.cursor_rect.set(@index * @largeur, 0, @largeur, self.height - 32)
    end
    
  end
  #--------------------------------------------------------------------------
  # * Modifications de l'affichage des informations
  #--------------------------------------------------------------------------
  
  
  ############################
  #Affichage de l'expérience.#
  ############################
  
  def draw_actor_exp_bis(actor, x, y)
    
    #Fixe la couleur à system_color.
    self.contents.font.color = system_color 
    
    #Ecrit "Exp :". Entre parenthèses : (position x, position y, largeur, hauteur, texte). 
    self.contents.draw_text(x+4, y, contents.text_size("Exp :").width, 32, "Exp :")
 
    #Fixe la couleur à normal_color.
    self.contents.font.color = normal_color
    
    
    #Ecrit l'expérience. Entre parenthèses : (position x, position y, largeur, hauteur, texte, alignement).
    self.contents.draw_text(x+contents.text_size("Exp :").width+6, y, @largeur-contents.text_size("Exp :").width - 14, 32, actor.exp_s, 2)
    
    #Dessine la barre d'expérience.
    self.contents.fill_rect(x+5, y+25, @largeur - 11, 6, Color.new(20, 20, 20, 150))
    self.contents.fill_rect(x+4, y+24, @largeur - 12, 5, Color.new(0, 0, 0, 200))
    self.contents.fill_rect(x+5, y+25, (@largeur-14)*actor.exp_s.to_i/actor.next_exp_s.to_i, 3, Color.new(100, 100, 220, 255))
    
  end
 
 
  ###################
  #Affichage des PV.#
  ###################
  
  def draw_actor_hp_bis(actor, x, y)
    
    self.contents.font.color = system_color
    self.contents.draw_text(x+4, y, contents.text_size($data_system.words.hp+" :").width, 32, $data_system.words.hp+" :")
     
    
    self.contents.font.color = actor.hp == 0 ? knockout_color :
      actor.hp <= actor.maxhp / 3 ? crisis_color : normal_color
    self.contents.draw_text(x+contents.text_size($data_system.words.hp+" :").width+6, y, @largeur-contents.text_size($data_system.words.hp+" :").width - 14, 32, actor.hp.to_s, 2)
    
    if actor.hp <= actor.maxhp / 3 
    couleur_barre = Color.new(230, 230, 0, 255) 
    else 
    couleur_barre = Color.new(80, 230, 20, 255)
    end
      
    self.contents.fill_rect(x+5, y+25, @largeur - 11, 6, Color.new(20, 20, 20, 150))
    self.contents.fill_rect(x+4, y+24, @largeur - 12, 5, Color.new(0, 0, 0, 200))
    self.contents.fill_rect(x+5, y+25, (@largeur-14)*actor.hp/actor.maxhp, 3, couleur_barre)
    
  end
  
  ###################
  #Affichage des SP.#
  ###################
  
  def draw_actor_sp_bis(actor, x, y)
    
    self.contents.font.color = system_color
    self.contents.draw_text(x+4, y, contents.text_size($data_system.words.sp+" :").width, 32, $data_system.words.sp+" :")
     
    
    self.contents.font.color = actor.sp == 0 ? knockout_color :
      actor.sp <= actor.maxhp / 3 ? crisis_color : normal_color
    self.contents.draw_text(x+contents.text_size($data_system.words.sp+" :").width+6, y, @largeur-contents.text_size($data_system.words.sp+" :").width - 14, 32, actor.sp.to_s, 2)
    
    if actor.sp <= actor.maxsp / 3 
    couleur_barre = Color.new(165, 118, 100, 255) 
    else 
    couleur_barre = Color.new(100, 40, 160, 255)
    end
      
    self.contents.fill_rect(x+5, y+25, @largeur - 11, 6, Color.new(20, 20, 20, 150))
    self.contents.fill_rect(x+4, y+24, @largeur - 12, 5, Color.new(0, 0, 0, 200))
    self.contents.fill_rect(x+5, y+25, (@largeur-14)*actor.sp/actor.maxsp, 3, couleur_barre)
    
  end
  
  
  ############################
  #Affichage de l'équipement.#
  ############################
  
  def draw_actor_equipement(actor, x, y)
    
    draw_item($data_weapons[actor.weapon_id], x, y)
    draw_item($data_armors[actor.armor1_id], x+48, y)
    draw_item($data_armors[actor.armor2_id], x, y+48)
    draw_item($data_armors[actor.armor3_id], x+48, y+48)
    draw_item($data_armors[actor.armor4_id], x+24, y+96)
    
  end
  
  def draw_item(item, x, y)
    
    if item == nil
      return
    end
    bitmap = RPG::Cache.icon(item.icon_name)
    self.contents.blt(x+@largeur/2-36, y, bitmap, Rect.new(0, 0, 24, 24))
    
  end
  
end



Screen :

Spoiler (cliquez pour afficher)


Enjoy ! (ou pas)




Alkanédon - posté le 11/06/2011 à 10:57:29. (7616 messages postés)

Citoyen d'Alent

Sympa :)
Ca change bien!

Allez-y voir donc. Et followez-moi


popizizi - posté le 12/06/2011 à 00:00:26. (39 messages postés)

Dragon Quest Crystal Légend, dispo dès le 30 avril 2017

Très bon script, et il marche.
Merci à toi.

Projet en cours: Dragon Quest Crystal Légend. (Old School)

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 | News | Forum | Flash-news | Sorties | Chat | Commentaires | Galerie | Blogs | Articles perso | Screen de la semaine | Palmarès | Livre d'or | Recherche | Interviews | OST | L'Annuaire | Divers
Apprendre: Le Wiki | Tutoriels | Guides | Gaming-Live | Tests | Making-of
Télécharger: Programmes | Scripts | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Index jeux séparés | Top Classiques | Top Originaux | Les autres | Collection Oniro | 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
Hébergés: Aëdemphia | Fighting Robots Quest | Geex | Inexistence | La Légende d'Ibabou | Nylu | Sarcia | Super Mario RPG - Lost Souls
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