[RPG-MAKER.FR] Oniromancie: tout l'univers de RPG Maker en français - Afficher les messages d'un membre

Oniromancie: Afficher les messages d'un membre - sanstitre


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

Jeux: Wendy Whedon / Sorties: Wendy Whedon / Jeux: Reincarnations / Jeux: Shave the Nemau 2 / News: Cinq derniers conseils (...) /

Chat  

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

121 connectés actuellement

10125841 visiteurs
depuis l'ouverture

8 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

Offgame

Level Up!

Lumen

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




Messages postés par Nérylis
Nombre de messages référencés sur Oniromancie (non supprimés): 132

Aller à la page: 1 2 3 4

Posté dans Forum - [VX Ace] Désactivation d'un script sur une map

Nérylis - posté le 17/03/2019 à 23:35:34. (136 messages postés)

Domaine concerné: Script
Logiciel utilisé: VX Ace
Bonsoir,

J'utilise le script de Yanfly - Move Restrict Region dans mon projet sur certaines cartes où j'ai de l'Overlay. Toutefois, je suis embêté sur ma WorldMap où j'utilise l'ensemble des régions numérotées et où bien sûr il n'y a pas d'Overlay. J'aurais voulu savoir s'il était possible de désactiver ce script lorsque j'entre sur la WorldMap. S'il existe une commande ou un notetag...
Dans la mesure du possible, je souhaiterais éviter de casser ce que j'ai mis en place.

Merci d'avance

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
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
#==============================================================================
#
# ▼ Yanfly Engine Ace - Move Restrict Region v1.03
# -- Last Updated: 2012.01.03
# -- Level: Normal
# -- Requires: n/a
#
#==============================================================================
 
$imported = {} if $imported.nil?
$imported["YEA-MoveRestrictRegion"] = true
 
#==============================================================================
# ▼ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2012.23.08 - Added Feature: <all restrict: x>
# 2012.01.03 - Added Feature: <all restrict: x>
# 2011.12.26 - Bug Fixed: Player Restricted Regions.
# 2011.12.15 - Started Script and Finished.
#
#==============================================================================
# ▼ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Not everybody wants NPC's to travel all over the place. With this script, you
# can set NPC's to be unable to move pass tiles marked by a specified Region.
# Simply draw out the area you want to enclose NPC's in on and they'll be
# unable to move past it unless they have Through on. Likewise, there are
# regions that you can prevent the player from moving onto, too!
#
#==============================================================================
# ▼ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
#
# -----------------------------------------------------------------------------
# Map Notetags - These notetags go in the map notebox in a map's properties.
# -----------------------------------------------------------------------------
# <all restrict: x>
# <all restrict: x, x>
# Players and NPC's on the map will be unable to move past region x even if
# they have the "through" flag set. The only thing that can go past is if the
# player is using the debug through flag. Draw out the area you want to close
# the player and NPC's in with the regions and both will be unable to move onto
# any of those tiles marked by region x. If you want to have more regions
# restrict NPC's, insert multiples of this tag.
#
# <npc restrict: x>
# <npc restrict: x, x>
# NPC's on that map will be unable to move past regions x unless they have a
# "Through" flag on. Draw out the area you want to close NPC's in with the
# regions and the NPC's will be unable to move onto any of those tiles marked
# by region x. If you want to have more regions restrict NPC's, insert
# multiples of this tag.
#
# <player restrict: x>
# <player restrict: x, x>
# Players will not be able to move on tiles marked by region x unless the
# player has a "Through" flag on. Draw out the area you want to close the
# player in with the regions and the player will be unable to move past any of
# those tiles marked by region x. If you want to have more regions restrict the
# player, insert multiples of this tag.
#
#==============================================================================
# ▼ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
#
#==============================================================================
 
module YEA
  module MOVE_RESTRICT
   
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Default Completely Restricted Regions -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # If you want there to always be a region ID that will forbid both the
    # player and NPC's from passing through, insert that region ID into the
    # array below. This effect will completely block out both players and NPC's
    # even if they have the "through" flag. However, it does not block the
    # debug_through flag for players.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    DEFAULT_ALL = [61]
   
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Default Player Restricted Regions -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # If you want there to always be a region ID that will forbid the player
    # from passing through, insert that region ID into the array below.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    DEFAULT_PLAYER = [62]
   
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Default NPC Restricted Regions -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # If you want there to always be a region ID that will forbid NPC's from
    # passing through, insert that region ID into the array below.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    DEFAULT_NPC = [63]
   
  end # MOVE_RESTRICT
end # YEA
 
#==============================================================================
# ▼ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================
 
module YEA
  module REGEXP
  module MAP
   
    ALL_RESTRICT =
      /<(?:ALL_RESTRICT|all restrict):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
    NPC_RESTRICT =
      /<(?:NPC_RESTRICT|npc restrict):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
    PLAYER_RESTRICT =
      /<(?:PLAYER_RESTRICT|player restrict):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
   
  end # MAP
  end # REGEXP
end # YEA
 
#==============================================================================
# ■ RPG::Map
#==============================================================================
 
class RPG::Map
 
  #--------------------------------------------------------------------------
  # public instance variables
  #--------------------------------------------------------------------------
  attr_accessor :all_restrict_regions
  attr_accessor :npc_restrict_regions
  attr_accessor :player_restrict_regions
 
  #--------------------------------------------------------------------------
  # common cache: load_notetags_mrr
  #--------------------------------------------------------------------------
  def load_notetags_mrr
    @all_restrict_regions = YEA::MOVE_RESTRICT::DEFAULT_ALL.clone
    @npc_restrict_regions = YEA::MOVE_RESTRICT::DEFAULT_NPC.clone
    @player_restrict_regions = YEA::MOVE_RESTRICT::DEFAULT_PLAYER.clone
    #---
    self.note.split(/[\r\n]+/).each { |line|
      case line
      #---
      when YEA::REGEXP::MAP::ALL_RESTRICT
        $1.scan(/\d+/).each { |num|
        @all_restrict_regions.push(num.to_i) if num.to_i > 0 }
      when YEA::REGEXP::MAP::NPC_RESTRICT
        $1.scan(/\d+/).each { |num|
        @npc_restrict_regions.push(num.to_i) if num.to_i > 0 }
      when YEA::REGEXP::MAP::PLAYER_RESTRICT
        $1.scan(/\d+/).each { |num|
        @player_restrict_regions.push(num.to_i) if num.to_i > 0 }
      #---
      end
    } # self.note.split
    #---
  end
 
end # RPG::Map
 
#==============================================================================
# ■ Game_Map
#==============================================================================
 
class Game_Map
 
  #--------------------------------------------------------------------------
  # alias method: setup
  #--------------------------------------------------------------------------
  alias game_map_setup_mrr setup
  def setup(map_id)
    game_map_setup_mrr(map_id)
    @map.load_notetags_mrr
  end
 
  #--------------------------------------------------------------------------
  # new method: all_restrict_regions
  #--------------------------------------------------------------------------
  def all_restrict_regions
    return @map.all_restrict_regions
  end
 
  #--------------------------------------------------------------------------
  # new method: npc_restrict_regions
  #--------------------------------------------------------------------------
  def npc_restrict_regions
    return @map.npc_restrict_regions
  end
 
  #--------------------------------------------------------------------------
  # new method: player_restrict_regions
  #--------------------------------------------------------------------------
  def player_restrict_regions
    return @map.player_restrict_regions
  end
 
end # Game_Map
 
#==============================================================================
# ■ Game_CharacterBase
#==============================================================================
 
class Game_CharacterBase
 
  #--------------------------------------------------------------------------
  # alias method: passable?
  #--------------------------------------------------------------------------
  alias game_characterbase_passable_mrr passable?
  def passable?(x, y, d)
    return false if npc_region_forbid?(x, y, d)
    return false if player_region_forbid?(x, y, d)
    return game_characterbase_passable_mrr(x, y, d)
  end
 
  #--------------------------------------------------------------------------
  # new method: npc_forbid?
  #--------------------------------------------------------------------------
  def npc_region_forbid?(x, y, d)
    return false unless self.is_a?(Game_Event)
    region = 0
    case d
    when 1; region = $game_map.region_id(x-1, y+1)
    when 2; region = $game_map.region_id(x+0, y+1)
    when 3; region = $game_map.region_id(x+1, y+1)
    when 4; region = $game_map.region_id(x-1, y+0)
    when 5; region = $game_map.region_id(x+0, y+0)
    when 6; region = $game_map.region_id(x+1, y+0)
    when 7; region = $game_map.region_id(x-1, y-1)
    when 8; region = $game_map.region_id(x+0, y-1)
    when 9; region = $game_map.region_id(x+1, y-1)
    end
    return true if $game_map.all_restrict_regions.include?(region)
    return false if @through
    return $game_map.npc_restrict_regions.include?(region)
  end
 
  #--------------------------------------------------------------------------
  # new method: player_region_forbid?
  #--------------------------------------------------------------------------
  def player_region_forbid?(x, y, d)
    return false unless self.is_a?(Game_Player)
    return false if debug_through?
    region = 0
    case d
    when 1; region = $game_map.region_id(x-1, y+1)
    when 2; region = $game_map.region_id(x+0, y+1)
    when 3; region = $game_map.region_id(x+1, y+1)
    when 4; region = $game_map.region_id(x-1, y+0)
    when 5; region = $game_map.region_id(x+0, y+0)
    when 6; region = $game_map.region_id(x+1, y+0)
    when 7; region = $game_map.region_id(x-1, y-1)
    when 8; region = $game_map.region_id(x+0, y-1)
    when 9; region = $game_map.region_id(x+1, y-1)
    end
    return true if $game_map.all_restrict_regions.include?(region)
    return false if @through
    return $game_map.player_restrict_regions.include?(region)
  end
 
end # Game_CharacterBase
 
#==============================================================================
#
# ▼ End of File
#
#==============================================================================

Posté dans Forum - [Résolu] Entrer un nombre - Mémorisation du choix

Nérylis - posté le 22/12/2018 à 19:34:05. (136 messages postés)

Bien vu. En mettant la variable à 0 avant de lancer la commande Entrer un nombre, la valeur se met à 0 par défaut, ce qui fait plus propre.

Merci du coup de pouce. :sourire2

Posté dans Forum - [Résolu] Entrer un nombre - Mémorisation du choix

Nérylis - posté le 22/12/2018 à 17:29:53. (136 messages postés)

Domaine concerné: Script
Logiciel utilisé: RPG Maker VX Ace
Bonjour,

J'utilise dans un évènement la commande Entrer un nombre, pour choisir le nombre d'heures pour se reposer. Mais j'ai remarqué que lorsque je fais cet évènement plusieurs fois de suite, le jeu garde en mémoire la valeur que j'ai entrée précédemment. Est-ce qu'il est possible de désactiver cette mémorisation de valeur ?

Posté dans Forum - [VX ACE] Immobilier le héros

Nérylis - posté le 06/07/2018 à 19:25:09. (136 messages postés)

Contractuellement parlant, je pense pouvoir te répondre par un non négatif.

Posté dans Forum - [VX ACE] Immobilier le héros

Nérylis - posté le 06/07/2018 à 15:27:34. (136 messages postés)

Pas mal l'astuce. Merci pour le tuyau. :)

Posté dans Forum - [VX ACE] Immobilier le héros

Nérylis - posté le 06/07/2018 à 14:01:49. (136 messages postés)

Domaine concerné: Event
Logiciel utilisé: VX ACE
Bonjour,

Je suis en train de créer des passages scénarisés avec des dialogues entre plusieurs personnages. Mon but est d'avoir la caméra fixe à un point défini afin qu'on puisse voir les personnages bouger et se déplacer pour donner un peu de vie à la scène. Pour cela, je place le héros en invisible sur ce point stratégique. Le problème que je rencontre, c'est que si j'appuie sur les touches directionnelles entre les fenêtres de dialogue, le héros invisible se déplace et donc bouge la caméra. Est-ce que vous avez une astuce pour éviter ce problème ?

Posté dans Forum - [VX ACE] Carreaux obsurcissants

Nérylis - posté le 16/06/2018 à 23:26:03. (136 messages postés)

Coucou,

J'ai testé aussi de mon côté durant plusieurs heures. J'ai résolu le problème en agrandissant de plusieurs pixels la taille des blocs d'herbe, puis en recoupant ce qui dépassait. A la base, j'avais récupéré les ressources MV sur un seul et même site, puis tout redimensionné suivant les standards VX Ace. Du coup, c'est bizarre parce que c'est comme si les blocs d'herbe n'étaient pas assez gros et que c'est pour ça que ça a causé ce souci ? Niveau transparence, j'ai rien touché, j'ai juste changé la taille des fichiers et conservé le PNG.

Posté dans Forum - [VX ACE] Carreaux obsurcissants

Nérylis - posté le 16/06/2018 à 13:22:38. (136 messages postés)

Aucun script, et oui, le tileset est paramétré sur Carreaux obscurcissants.

Edit : Voici une démo, ça sera certainement plus parlant : http://www.mediafire.com/file/zo8soaqdba8ha58/Test.exe/file

Marcher dans l'herbe pour s'apercevoir du problème sur les bords inférieurs gauche et droit.

J'ai remarqué que j'ai le problème pour les trois premiers types d'herbe. Par contre, pour le quatrième type avec la neige, le souci ne se produit pas. Il faudrait chercher du côté de l'image Outside_A2 mais je ne vois pas comment identifier le problème pour le résoudre.

Posté dans Forum - [VX ACE] Carreaux obsurcissants

Nérylis - posté le 16/06/2018 à 12:35:39. (136 messages postés)

Domaine concerné: Tileset
Logiciel utilisé: VX ACE
Bonjour,

J'ai un petit problème. Lorsque je marche sur des tilesets obscurcissants comme les herbes, le personnage apparaît entièrement dans les coins d'herbe inférieurs. Comprenez que si je fais un carré d'herbe de 3x3 cases, les jambes du personnage disparaissent bien sur la première et la deuxième rangée. Par contre, sur la troisième rangée en bas, ça marche au centre, mais pas à droite ni à gauche. Quelqu'un a une idée du problème ?

Posté dans Forum - [VX ACE] Nouveau skill appris (Son SE)

Nérylis - posté le 30/04/2018 à 18:06:41. (136 messages postés)

Merci bien.

Posté dans Forum - [VX ACE] Nouveau skill appris (Son SE)

Nérylis - posté le 29/04/2018 à 19:46:09. (136 messages postés)

Domaine concerné: Script
Logiciel utilisé: VX ACE
Bonjour,

Question simple : comment on fait pour ajouter un son SE quand, en fin de combat, un personnage a appris un nouveau skill suite à son level-up ?

Posté dans Forum - [VX Ace] Espacement entre icône et nom

Nérylis - posté le 25/03/2018 à 15:20:40. (136 messages postés)

Domaine concerné: Script
Logiciel utilisé: VX Ace
Bonjour,

J'aimerais savoir dans quelle partie des scripts on peut changer l'espacement entre les icônes d'objets/armes/armures et le nom associé dans les menus.

Merci d'avance.

Posté dans Forum - [VX ACE] Aéronef atterrissage

Nérylis - posté le 13/03/2018 à 06:45:33. (136 messages postés)

Oui, les carreaux obscurcissants provoquent l'effet des forêts et après avoir testé, c'est ce paramétrage qui empêche le vaisseau de se poser. Donc, ce n'est pas possible de mettre cette option sur des collines. Du coup, je n'ai pas d'autre choix que de réutiliser le script de Galv en jouant sur les régions, et pas sur les numéros de tag terrain.

Merci pour ton aide.

Posté dans Forum - [VX ACE] Aéronef atterrissage

Nérylis - posté le 12/03/2018 à 23:11:48. (136 messages postés)

Sauf qu'après, je pourrais poser l'aéronef sur les forêts.

Ce que tu dis sur les positions, c'est forcément paramétré quelque part. Ça ne se fait pas tout seul sur les positions 5 et 7.

Posté dans Forum - [VX ACE] Aéronef atterrissage

Nérylis - posté le 12/03/2018 à 22:42:57. (136 messages postés)

Merci pour les explication, mais j'utilise déjà les numéros de terrain pour un event général dans mon projet. Là, on en revient à utiliser le script indiqué plus haut que j'utilisais à une époque et que je ne souhaite plus avoir.

Ce que je ne comprends pas, c'est qu'il doit bien y avoir quelque chose qui définit que les forêts empêchent l'atterrissage de l'aéronef. Je pense que le mieux serait de saisir comment c'est défini et l'étendre aux collines (certainement un paramètre à modifier quelque part, mais lequel ?).

Posté dans Forum - [VX ACE] Aéronef atterrissage

Nérylis - posté le 12/03/2018 à 20:21:38. (136 messages postés)

Je suis censé faire quoi avec ces lignes de script ? Je ne comprends pas ce que je dois faire.

Posté dans Forum - [VX ACE] Aéronef atterrissage

Nérylis - posté le 12/03/2018 à 06:29:23. (136 messages postés)

Pourtant, ça doit être configuré quelque part dans les scripts de base qu'on ne peut pas se poser sur les forêts. En théorie, il suffirait de rajouter les tiles des collines. Reste à savoir où est-ce que ça se trouve dans les scripts.

Posté dans Forum - [VX ACE] Aéronef atterrissage

Nérylis - posté le 11/03/2018 à 22:32:36. (136 messages postés)

Domaine concerné: Event
Logiciel utilisé: VX ACE
Bonsoir,

J'ai une question de débutant.^^
Comment faire pour que l'aéronef ne puisse pas se poser sur les collines ?
J'aimerais en gros que les collines soient comme les forêts (que le personnage puisse marcher dessus mais qu'on ne puisse pas s'y poser en aéronef).

Posté dans Forum - Dragon's Power - Trailer

Nérylis - posté le 04/05/2017 à 19:06:06. (136 messages postés)

Oui, merci le mirudien. Tu as parfaitement compris l'objectif du projet.
Je compte me servir de cette base technique pour me lancer dans un vrai jeu soigné.

Posté dans Forum - Dragon's Power - Trailer

Nérylis - posté le 03/05/2017 à 22:45:02. (136 messages postés)

Oups, en effet. Ça devrait être mieux maintenant.

Posté dans Forum - Dragon's Power - Trailer

Nérylis - posté le 03/05/2017 à 18:07:55. (136 messages postés)

Coucou tout le monde,

Après 2 ans et demi de manipulations et de tests sur RPG Maker, j'ai enfin pu réaliser et finir mon jeu test.

A l'origine, il s'agissait de faire un test grandeur nature pour apprendre à me servir du logiciel et de ses multiples fonctions. Je voulais créer mon propre système avec des menus spécifiques, diverses méthodes pour améliorer ses personnages... Bref, je voulais me faire une démo complète avec un temps de jeu réaliste pour comprendre comment gérer les heures de partie.

Et aujourd'hui, c'est fait. J'ai terminé mon test, procédé aux derniers réglages et j'en ai profité pour créer un trailer dans lequel on voit un peu la tête du jeu et ses possibilités.

Le lien est ici : http://www.youtube.com/watch?v=6oAQc6uiZoE

J'aimerais connaître votre avis, vos ressentis sur cet aperçu.

A la base, je n'ai pas prévu de le proposer en test. Comme il s'agit d'un test fonctionnel, la partie scénaristique n'est pas développée. En gros, c'est du pex à 90-95% du temps, donc pas forcément intéressant. Cela dit, si plusieurs d'entre vous insistent pour essayer le jeu, je peux le proposer avec une véritable présentation.

Voilà. :)
A+

Posté dans Forum - [RPG Maker VX Ace] Jauge ATB pour LNX Battle

Nérylis - posté le 17/01/2017 à 20:05:08. (136 messages postés)

Mes astuces et mes remerciements sont réservés à ceux qui m'aident. Je regarde un peu les projets des autres mais c'est souvent loin de ce que j'aime.
Un financement ? Sur un forum d'entraide ouvert à tous ? Je ne suis pas un pigeon.

Edit : Je voulais présenter un projet, mais je me suis réservé à un test strictement fermé parmi des gens rigoureux, qui savent tester un jeu dans tous les recoins. La communauté de RPG Maker ne rime pas avec rigueur malheureusement.

Posté dans Forum - [RPG Maker VX Ace] Jauge ATB pour LNX Battle

Nérylis - posté le 17/01/2017 à 19:06:18. (136 messages postés)

Merci.
Vous pouvez clore le topic, si la communauté principale FR n'a pas les compétences pour traiter cette demande. Dommage qu'un si bon outil comme RPG Maker ne soit pas mieux exploité par sa communauté. La vision qu'en ont les gens serait tout autre.

Posté dans Forum - [RPG Maker VX Ace] Jauge ATB pour LNX Battle

Nérylis - posté le 17/01/2017 à 17:41:29. (136 messages postés)

Vous servez à rien alors.

Posté dans Forum - [RPG Maker VX Ace] Jauge ATB pour LNX Battle

Nérylis - posté le 17/01/2017 à 06:29:18. (136 messages postés)

J'attends toujours une réponse et une solution.

Posté dans Forum - [RPG Maker VX Ace] Maîtrise des types d'armes [Résolu]

Nérylis - posté le 04/08/2016 à 14:17:17. (136 messages postés)

Solution donnée en externe. La voici pour info :

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
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
=begin
##############################################################
Weapon_Upgrade
####
Vincent26
####
Description:
Ce script permet de monter en level pour l'utilisation de catégorie d'armes.
Le principe est que chaque coup donné avec un type d'armes particulier augmente
son expérience. Une fois un niveau passé, le personnage reçoit une amélioration
définitive d'une de ses caractéristiques.
Un menu secondaire est ajouté au menu status à l'appui de la touche Shift.
Le niveau de compétence pour une arme du héros est associé à un nom descriptif.
####
Utilisation :
Configurer le module suivant pour mettre en place ce script.
=end
module Weapon_Upgrade
 
  #Ne pas modifier
  CARACTERISTIQUE = {:max_hp => 0,:max_mp => 1,:force => 2,:defense => 3,
                    :magic_atk => 4,:magic_def => 5,:agilité => 6,:chance => 7}
 
  #LISTE DES TYPES D'ARMES DANS LE LEXIQUE DE LA BDD
  #
  #
  # Liste des upgrades des types d'armes :
  # TYPE => [[NBR_COUP,VALEUR,CARACTERISTIQUE,[ID_PERSONNAGE]],...]
  #
  # TYPE est le type d'arme (l'id associé dans la BDD)
  # VALEUR est la valeur à ajouter à la caractéristique du perso
  # CARACTERISTIQUE est la caractéristique à modifier
  # ID_PERSONNAGE est la liste des personnages à qui peut s'appliquer cet upgrade
  UPGRADE_LIST = {
    1 => [[75,2,:force,[1,2,3,4,5,6,7,8,9,10]],                  #Hache
        [350,3,:force,[1,2,3,4,5,6,7,8,9,10]],
        [1000,5,:force,[1,2,3,4,5,6,7,8,9,10]],
        [1800,10,:force,[1,2,3,4,5,6,7,8,9,10]],
        [3000,15,:force,[1,2,3,4,5,6,7,8,9,10]],
        [4500,20,:force,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:force,[1,2,3,4,5,6,7,8,9,10]]],
    2 => [[150,1,:agilité,[1,2,3,4,5,6,7,8,9,10]],               #Griffes
        [800,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [2100,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [3400,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [5100,8,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [7500,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [9999,20,:force,[1,2,3,4,5,6,7,8,9,10]]],
    3 => [[110,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],               #Lance
        [525,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [1300,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [2200,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [3300,15,:agilité,[1,2,3,4,5,6,7,8,9,10]],        
        [5250,20,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:agilité,[1,2,3,4,5,6,7,8,9,10]]],
    4 => [[115,2,:force,[1,2,3,4,5,6,7,8,9,10]],                 #Epée
        [550,3,:force,[1,2,3,4,5,6,7,8,9,10]],
        [1325,5,:force,[1,2,3,4,5,6,7,8,9,10]],
        [2300,10,:force,[1,2,3,4,5,6,7,8,9,10]],
        [3500,15,:force,[1,2,3,4,5,6,7,8,9,10]],        
        [5350,20,:force,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:force,[1,2,3,4,5,6,7,8,9,10]]],
    5 => [[100,2,:force,[1,2,3,4,5,6,7,8,9,10]],                 #Katana
        [500,3,:force,[1,2,3,4,5,6,7,8,9,10]],
        [1200,5,:force,[1,2,3,4,5,6,7,8,9,10]],
        [2000,10,:force,[1,2,3,4,5,6,7,8,9,10]],
        [3250,15,:force,[1,2,3,4,5,6,7,8,9,10]],
        [5000,20,:force,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:force,[1,2,3,4,5,6,7,8,9,10]]],
    6 => [[120,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],               #Arc
        [600,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [1400,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [2400,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [3800,15,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [5500,20,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:agilité,[1,2,3,4,5,6,7,8,9,10]]],
    7 => [[135,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],               #Dague
        [750,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [1600,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [2800,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [4400,15,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [6500,20,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:agilité,[1,2,3,4,5,6,7,8,9,10]]],
    8 => [[65,2,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],              #Massue
        [300,3,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [900,5,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [1650,10,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [2450,15,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],        
        [3750,20,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:magic_atk,[1,2,3,4,5,6,7,8,9,10]]],
    9 => [[50,2,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],              #Bâton
        [250,3,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [850,5,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [1500,10,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [2350,15,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],        
        [3450,20,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:magic_atk,[1,2,3,4,5,6,7,8,9,10]]],
  10 => [[125,1,:agilité,[1,2,3,4,5,6,7,8,9,10]],                #Arme à feu
        [650,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [1450,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [2500,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [4000,8,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [6000,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [9999,20,:force,[1,2,3,4,5,6,7,8,9,10]]],
    }
 
  #Nombre de types d'armes
  NBR_TYPE_ARME = 10
 
  #Liste des types d'armes
  LIST_TYPE_ARME = ["Hache","Griffes","Lance","Epée","Katana","Arc","Dague",
                    "Massue","Bâton","Arme à feu"]
 
  #Description des levels de maitrîse
  LVL_DESCRIPTION = { 1 => {0=>"Néophyte",                       #Hache 
                            75=>"Initié",                
                            350=>"Apprenti",
                            1000=>"Confirmé",            
                            1800=>"Expert",
                            3000=>"Prodige",
                            4500=>"Maître",
                            9999=>"Légende"},
 
                      2 => {0=>"Néophyte",                       #Griffes 
                            150=>"Initié",                  
                            800=>"Apprenti",                                       
                            2100=>"Confirmé",                                                   
                            3400=>"Expert",              
                            5100=>"Prodige",             
                            7500=>"Maître",                                                    
                            9999=>"Légende"},           
 
                      3 => {0=>"Néophyte",                       #Lance
                            110=>"Initié",                
                            525=>"Apprenti",
                            1300=>"Confirmé",            
                            2200=>"Expert",
                            3300=>"Prodige",
                            5250=>"Maître",
                            9999=>"Légende"},
      
                      4 => {0=>"Néophyte",                       #Epée
                            115=>"Initié",                
                            550=>"Apprenti",
                            1325=>"Confirmé",            
                            2300=>"Expert",
                            3500=>"Prodige",
                            5350=>"Maître",
                            9999=>"Légende"},
       
                      5 => {0=>"Néophyte",                       #Katana
                            100=>"Initié",                
                            500=>"Apprenti",
                            1200=>"Confirmé",            
                            2000=>"Expert",
                            3250=>"Prodige",
                            5000=>"Maître",
                            9999=>"Légende"},
                      
                      6 => {0=>"Néophyte",                       #Arc
                            120=>"Initié",                
                            600=>"Apprenti",
                            1400=>"Confirmé",            
                            2400=>"Expert",
                            3800=>"Prodige",
                            5500=>"Maître",
                            9999=>"Légende"},
      
                      7 => {0=>"Néophyte",                       #Dague
                            135=>"Initié",                
                            750=>"Apprenti",
                            1600=>"Confirmé",            
                            2800=>"Expert",
                            4400=>"Prodige",
                            6500=>"Maître",
                            9999=>"Légende"},
      
                      8 => {0=>"Néophyte",                       #Massue
                            65=>"Initié",                
                            300=>"Apprenti",
                            900=>"Confirmé",            
                            1650=>"Expert",
                            2450=>"Prodige",
                            3750=>"Maître",
                            9999=>"Légende"},
      
                      9 => {0=>"Néophyte",                       #Bâton
                            50=>"Initié",                
                            250=>"Apprenti",
                            850=>"Confirmé",            
                            1500=>"Expert",
                            2350=>"Prodige",
                            3450=>"Maître",
                            9999=>"Légende"},
                      
                     10 => {0=>"Néophyte",                       #Arme à feu
                            125=>"Initié",                
                            650=>"Apprenti",
                            1450=>"Confirmé",            
                            2500=>"Expert",
                            4000=>"Prodige",
                            6000=>"Maître",
                            9999=>"Légende"}}
                                           
  #Pour définir une autre attaque que celle de base pour le décompte des points,
  #ajouter cela dans la note d'un personnage :
  #<Basic_Skill = ID>
  #ID est l'id de la compétence prise pour base
 
end
class Scene_Battle
 
  alias start_weapon_upgrade start
  def start
    @attaque_standard = false
    start_weapon_upgrade
  end
 
  alias use_item_weapon_upgrade use_item
  def use_item
    @attaque_standard = false
    item = @subject.current_action.item
    if @subject.actor?
      if @subject.actor.note =~ /<Basic_Skill = (\d+)>/
        skill_id = $1.to_i
        @attaque_standard = true if item.id == skill_id
      else
        @attaque_standard = true if item.animation_id < 0
      end
    end
    use_item_weapon_upgrade
  end
 
  alias apply_item_effects_weapon_uprade apply_item_effects
  def apply_item_effects(target, item)
    apply_item_effects_weapon_uprade(target, item)
    if target.result.hit? && target.result.success && @attaque_standard
      if @subject.actor?
        @subject.upgrade_weapon_skill
      end
    end
  end
 
end
module BattleManager
 
  class << self
  
    alias gain_exp_weapon_update gain_exp
    alias process_abort_weapon_update process_abort
  
    def gain_exp
      gain_exp_weapon_update
      new = false
      for i in $game_party.members
        for j in i.texte_fin_combat
          $game_message.new_page if new = false
          new = true
          $game_message.add(j)
          $game_message.set_options_on_last_add(:sound=> RPG::SE.new("Wind10"), :wait=>60, :input=>true)
        end
        i.texte_fin_combat = []
      end
    end
  
    def process_abort
      new = false
      for i in $game_party.members
        for j in i.texte_fin_combat
          $game_message.new_page if new = false
          new = true
          $game_message.add(j)
          $game_message.set_options_on_last_add(:sound=> RPG::SE.new("Wind10"), :wait=>60, :input=>true)
        end
        i.texte_fin_combat = []
      end
      process_abort_weapon_update
    end
  end
end
class Game_Actor
 
  attr_reader :upgrade_list
  attr_accessor :texte_fin_combat
 
  alias initialize_weapon_upgrade initialize
  def initialize(actor_id)
    initialize_weapon_upgrade(actor_id)
    @weapon_upgrade = {}
    @texte_fin_combat = []
    @upgrade_list = {}
    Weapon_Upgrade::UPGRADE_LIST.each do |key,value|
      li = []
      for list in value
        if list[3].include?(actor_id)
          li.push([list[0],list[1],list[2],true])
        end
      end
      @upgrade_list[key] = li if li != []
    end
  end
 
  def upgrade_weapon_skill
    for i in 1..Weapon_Upgrade::NBR_TYPE_ARME
      if wtype_equipped?(i)
        @weapon_upgrade[i.to_s] = 0 if !@weapon_upgrade.include?(i.to_s)
        @weapon_upgrade[i.to_s] += 1
        test_upgrade_weapon(i)
      end
    end
  end
 
  def level_up_weapon(name,lvl)
    id = (Weapon_Upgrade::LIST_TYPE_ARME.index(name)+1).to_s
    @weapon_upgrade[id] = 0 if !@weapon_upgrade.include?(id)
    @weapon_upgrade[id] += lvl
    @upgrade_list.each do |key,lis|
    next if key.to_s != id
      for j in 0..lis.length-1
      liste = lis[j]
        if liste[3]
          if @weapon_upgrade[id.to_s] >= liste[0]
          param = Weapon_Upgrade::CARACTERISTIQUE[liste[2]]
          add_param(param, liste[1])
          @upgrade_list[key][j][3] = false
          end
        end
      end
    end
  end
 
  def weapon_upgrade
    return @weapon_upgrade
  end
 
  def test_upgrade_weapon(id)
    @upgrade_list.each do |key,lis|
      next if key != id
      for j in 0..lis.length-1
        liste = lis[j]
        if liste[3]
          if @weapon_upgrade[id.to_s] >= liste[0]
            param = Weapon_Upgrade::CARACTERISTIQUE[liste[2]]
            add_param(param, liste[1])
                    #NOMPERSO          |              NOUVEAU RANG                  |        |        NOM ARME              |                      | NOM DU PARAMETRE|    | VALEUR AUG |
            @texte_fin_combat.push(@name +" devient "+Weapon_Upgrade::LVL_DESCRIPTION[id][liste[0]].to_s+" en "+Weapon_Upgrade::LIST_TYPE_ARME[id-1]+ ", "+Vocab.param(param)+" +"+liste[1].to_s+".")
            @upgrade_list[key][j][3] = false
          end
        end
      end
    end
  end
end
class Scene_Status
 
 
  alias update_weapon_upgrade update
  def update
    if Input.trigger?(:UP) && @item_window.menu == 1
      Sound.play_cursor
      @item_window.ligne_actuel -= 1
      @item_window.refresh
    elsif Input.trigger?(:DOWN) && @item_window.menu == 1
      Sound.play_cursor
      @item_window.ligne_actuel += 1
      @item_window.refresh
    end
    if Input.trigger?(:B) && @item_window.menu == 1
      Sound.play_cancel
      @item_window.menu = 0
      @command_window.activate
    else
      update_weapon_upgrade
    end
  end
 
  alias terminate_vincent26_weapon_type terminate
  def terminate
    terminate_vincent26_weapon_type
    $game_temp.scene_status_index = nil
  end
 
  def maitrise_commande
    if @item_window.line_nbr_max == 0
      @item_window.menu = 0
      @command_window.activate
    else
      @item_window.menu = 1
    end
  end
 
end
class Window_StatusItem < Window_Base
 
  attr_accessor :menu
  attr_reader :ligne_actuel
 
  NRB_LINE = 7
 
 
  alias initialize_weapon_upgrade initialize
  def initialize(*args)
    @ligne_actuel = 0
    @table_upgrade = []
    @menu = 0
    initialize_weapon_upgrade(*args)
  end
 
  def ligne_actuel=(value)
    table = []
    for feat in @actor.class.features
      if feat.code == 51
        table.push(feat.data_id)
      end
    end
    table.uniq!
    @ligne_actuel = [[value,table.length-NRB_LINE].min,0].max
  end
 
  def line_nbr_max
    table = []
    for feat in @actor.class.features
      if feat.code == 51
        table.push(feat.data_id)
      end
    end
    table.uniq!
    [table.length-NRB_LINE,0].max
  end
 
  alias contents_height_weapon_upgrade contents_height
  def contents_height
    if @upgrade_weapon_contents
      @table_upgrade.length*24+24
    else
      contents_height_weapon_upgrade
    end
  end
 
  alias refresh_weapon_upgrade refresh
  def refresh
    @upgrade_weapon_contents = false
    create_contents
    refresh_weapon_upgrade
  end
 
  def maitrise_enable
    actif = self.line_nbr_max() != 0
    return actif
  end
  
  def draw_maitrise_block
    if @actor_save != @actor
      @ligne_actuel = 0
      @actor_save = @actor
    end
    
    table = []
    for feat in @actor.class.features
      if feat.code == 51
        table.push(feat.data_id)
      end
    end
    table.uniq!
    @table_upgrade = table
    @upgrade_weapon_contents = true
    create_contents
    y = @ligne_actuel*24
    self.oy = y
    draw_arme_usable(32,y,table)
    draw_arme_lvl(270,y,table)
    draw_arme_param(380,y,table)
    draw_arme_rang(150,y,table)
  end
 
 
  def draw_arme_rang(x,y,table)
    for i in 0..table.length
      next if i > NRB_LINE
      if i != 0
        nbr = @actor.weapon_upgrade[table[i-1+@ligne_actuel].to_s] || 0
        rang = Weapon_Upgrade::LVL_DESCRIPTION[table[i-1+@ligne_actuel]][0]
        Weapon_Upgrade::LVL_DESCRIPTION[table[i-1+@ligne_actuel]].each do |key , value|
          break if nbr < key
          rang = value
        end
        rang = "" if !Weapon_Upgrade::UPGRADE_LIST.has_key?(table[i-1+@ligne_actuel])
      else
        rang = "Rang"
      end
      if rang == "Rang"
        change_color(system_color)
        draw_text(126, y+i*line_height, 140, line_height, rang, 1)
      else
        if rang == "Légende"
          change_color(text_color(17))
          draw_text(126, y+i*line_height, 140, line_height, rang, 1)
        else
          change_color(normal_color)
          draw_text(126, y+i*line_height, 140, line_height, rang, 1)
        end
      end
    end
  end
 
  def draw_arme_param(x,y,table)
    for i in 0..table.length
      next if i > NRB_LINE
      if i != 0
        if @actor.upgrade_list.has_key?(table[i-1+@ligne_actuel])
          for j in @actor.upgrade_list[table[i-1+@ligne_actuel]]
            if j[3] == true
              value = j[1]
              param = Weapon_Upgrade::CARACTERISTIQUE[j[2]]
              texte = Vocab::param(param)+" +"+value.to_s
              break
            end
            texte = "-"
          end
        else
          texte = "-"
        end
      else
        texte = "Obtention"
      end
      if texte == "Obtention"
        change_color(system_color)
        draw_text(378, y+i*line_height, 140, line_height, texte, 1)
      else
        if texte == "-"
          change_color(text_color(17))
          draw_text(378, y+i*line_height, 140, line_height, texte, 1)
        else
          change_color(normal_color)
          draw_text(378, y+i*line_height, 140, line_height, texte, 1)          
        end
      end
    end
  end
 
  def draw_arme_usable(x,y,table)
    for i in 0..table.length
      if i != 0
        next if i > NRB_LINE
        texte = Weapon_Upgrade::LIST_TYPE_ARME[table[i-1+@ligne_actuel]-1]
        nbr = @actor.weapon_upgrade[table[i-1+@ligne_actuel].to_s] || 0
        rang = Weapon_Upgrade::LVL_DESCRIPTION[table[i-1+@ligne_actuel]][0]
        Weapon_Upgrade::LVL_DESCRIPTION[table[i-1+@ligne_actuel]].each do |key , value|
          break if nbr < key
          rang = value
        end
      else
        texte = "Type arme"
      end
      if texte == "Type arme"
        change_color(system_color)
        draw_text(0, y+i*line_height, 140, line_height, texte, 1)
      else
        if rang == "Légende"
          change_color(text_color(17))
          draw_text(0, y+i*line_height, 140, line_height, texte, 1)
        else
          change_color(normal_color)
          draw_text(0, y+i*line_height, 140, line_height, texte, 1)          
        end
      end
    end
  end
 
  def draw_arme_lvl(x,y,table)
    for i in 0..table.length
      if i != 0
        next if i > NRB_LINE
        nbr = @actor.weapon_upgrade[table[i-1+@ligne_actuel].to_s] || 0
        if @actor.upgrade_list.has_key?(table[i-1+@ligne_actuel])
          for j in @actor.upgrade_list[table[i-1+@ligne_actuel]]
            if j[3] == true
              lvl = j[0]
              texte = nbr.to_s+"/"+lvl.to_s
              break
            end
            texte = "Max"
          end
        else
          texte = "Max"
        end
      else
        texte = "Points"
      end
      if texte == "Points"
        change_color(system_color)
        draw_text(252, y+i*line_height, 140, line_height , texte, 1)
      else
        if texte == "Max"
          change_color(text_color(17))
          draw_text(252, y+i*line_height, 140, line_height, texte, 1)
        else
          change_color(normal_color)
          draw_text(252, y+i*line_height, 140, line_height, texte, 1)
        end
      end
    end
  end
  
end
 
class Game_Interpreter
 
  def get_rang_lvl_actor(id, weapon_id)
    nbr = $game_actors[id].weapon_upgrade[weapon_id.to_s] || 0
    rang = Weapon_Upgrade::LVL_DESCRIPTION[weapon_id][0]
    Weapon_Upgrade::LVL_DESCRIPTION[weapon_id].each do |key , value|
      break if nbr < key
      rang = value
    end
    rang = "" if !Weapon_Upgrade::UPGRADE_LIST.has_key?(weapon_id)
    return rang
  end
 
  def get_rang_lvl_member(id, weapon_id)
    nbr = $game_party.members[id].weapon_upgrade[weapon_id.to_s] || 0
    rang = Weapon_Upgrade::LVL_DESCRIPTION[weapon_id][0]
    Weapon_Upgrade::LVL_DESCRIPTION[weapon_id].each do |key , value|
      break if nbr < key
      rang = value
    end
    rang = "" if !Weapon_Upgrade::UPGRADE_LIST.has_key?(weapon_id)
    return rang
  end
 
end

Posté dans Forum - [RPG Maker VX Ace] Maîtrise des types d'armes [Résolu]

Nérylis - posté le 02/08/2016 à 16:21:33. (136 messages postés)

Effectivement, on peut essayer.

Donc voilà ce que arttroy avait commencé. Si quelqu'un sait comment finaliser.

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
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
=begin
##############################################################
Weapon_Upgrade
####
Vincent26
####
Description:
Ce script permet de monter en level pour l'utilisation de catégorie d'armes.
Le principe est que chaque coup donné avec un type d'armes particulier augmente
son expérience. Une fois un niveau passé, le personnage reçoit une amélioration
définitive d'une de ses caractéristiques.
Un menu secondaire est ajouté au menu status à l'appui de la touche Shift.
Le niveau de compétence pour une arme du héros est associé à un nom descriptif.
####
Utilisation :
Configurer le module suivant pour mettre en place ce script.
=end
module Weapon_Upgrade
 
  #Ne pas modifier
  CARACTERISTIQUE = {:max_hp => 0,:max_mp => 1,:force => 2,:defense => 3,
                    :magic_atk => 4,:magic_def => 5,:agilité => 6,:chance => 7}
 
  #LISTE DES TYPES D'ARMES DANS LE LEXIQUE DE LA BDD
  #
  #
  # Liste des upgrades des types d'armes :
  # TYPE => [[NBR_COUP,VALEUR,CARACTERISTIQUE,[ID_PERSONNAGE]],...]
  #
  # TYPE est le type d'arme (l'id associé dans la BDD)
  # VALEUR est la valeur à ajouter à la caractéristique du perso
  # CARACTERISTIQUE est la caractéristique à modifier
  # ID_PERSONNAGE est la liste des personnages à qui peut s'appliquer cet upgrade
  UPGRADE_LIST = {
    1 => [[75,2,:force,[1,2,3,4,5,6,7,8,9,10]],                  #Hache
        [350,3,:force,[1,2,3,4,5,6,7,8,9,10]],
        [1000,5,:force,[1,2,3,4,5,6,7,8,9,10]],
        [1800,10,:force,[1,2,3,4,5,6,7,8,9,10]],
        [3000,15,:force,[1,2,3,4,5,6,7,8,9,10]],
        [4500,20,:force,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:force,[1,2,3,4,5,6,7,8,9,10]]],
    2 => [[150,1,:agilité,[1,2,3,4,5,6,7,8,9,10]],               #Griffes
        [800,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [2100,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [3400,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [5100,8,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [7500,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [9999,20,:force,[1,2,3,4,5,6,7,8,9,10]]],
    3 => [[110,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],               #Lance
        [525,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [1300,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [2200,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [3300,15,:agilité,[1,2,3,4,5,6,7,8,9,10]],        
        [5250,20,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:agilité,[1,2,3,4,5,6,7,8,9,10]]],
    4 => [[115,2,:force,[1,2,3,4,5,6,7,8,9,10]],                 #Epée
        [550,3,:force,[1,2,3,4,5,6,7,8,9,10]],
        [1325,5,:force,[1,2,3,4,5,6,7,8,9,10]],
        [2300,10,:force,[1,2,3,4,5,6,7,8,9,10]],
        [3500,15,:force,[1,2,3,4,5,6,7,8,9,10]],        
        [5350,20,:force,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:force,[1,2,3,4,5,6,7,8,9,10]]],
    5 => [[100,2,:force,[1,2,3,4,5,6,7,8,9,10]],                 #Katana
        [500,3,:force,[1,2,3,4,5,6,7,8,9,10]],
        [1200,5,:force,[1,2,3,4,5,6,7,8,9,10]],
        [2000,10,:force,[1,2,3,4,5,6,7,8,9,10]],
        [3250,15,:force,[1,2,3,4,5,6,7,8,9,10]],
        [5000,20,:force,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:force,[1,2,3,4,5,6,7,8,9,10]]],
    6 => [[120,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],               #Arc
        [600,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [1400,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [2400,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [3800,15,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [5500,20,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:agilité,[1,2,3,4,5,6,7,8,9,10]]],
    7 => [[135,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],               #Dague
        [750,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [1600,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [2800,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [4400,15,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [6500,20,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:agilité,[1,2,3,4,5,6,7,8,9,10]]],
    8 => [[65,2,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],              #Massue
        [300,3,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [900,5,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [1650,10,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [2450,15,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],        
        [3750,20,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:magic_atk,[1,2,3,4,5,6,7,8,9,10]]],
    9 => [[50,2,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],              #Bâton
        [250,3,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [850,5,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [1500,10,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [2350,15,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],        
        [3450,20,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:magic_atk,[1,2,3,4,5,6,7,8,9,10]]],
  10 => [[125,1,:agilité,[1,2,3,4,5,6,7,8,9,10]],                #Arme à feu
        [650,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [1450,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [2500,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [4000,8,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [6000,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [9999,20,:force,[1,2,3,4,5,6,7,8,9,10]]],
    }
 
  #Nombre de type d'arme
  NBR_TYPE_ARME = 10
 
  #Liste des types d'armes
  LIST_TYPE_ARME = ["Hache","Griffes","Lance","Epée","Katana","Arc","Dague",
                    "Massue","Bâton","Arme à feu"]
 
  #Description des levels de maitrisse
  LVL_DESCRIPTION = {1 => {0=>"Néophyte",            
                      75=>"Initié",                
                      350=>"Apprenti",
                      1000=>"Confirmé",            #Hache
                      1800=>"Expert",
                      3000=>"Prodige",
                      4500=>"Maître",
                      9999=>"Légende"},
                      
                      2 => {0=>"Néophyte", 
                      150=>"Initié",                  
                      800=>"Apprenti",                                       
                      2100=>"Confirmé",            #Griffes                                        
                      3400=>"Expert",              
                      5100=>"Prodige",             
                      7500=>"Maître",                                                    
                      9999=>"Légende"},
                      
                      3 => {0=>"Néophyte",            
                      110=>"Initié",                
                      525=>"Apprenti",
                      1300=>"Confirmé",            #Lance
                      2200=>"Expert",
                      3300=>"Prodige",
                      5250=>"Maître",
                      9999=>"Légende"},
                      
                      4 => {0=>"Néophyte",            
                      115=>"Initié",                
                      550=>"Apprenti",
                      1325=>"Confirmé",            #Epée
                      2300=>"Expert",
                      3500=>"Prodige",
                      5350=>"Maître",
                      9999=>"Légende"},
                      
                      5 => {0=>"Néophyte",            
                      100=>"Initié",                
                      500=>"Apprenti",
                      1200=>"Confirmé",            #Katana
                      2000=>"Expert",
                      3250=>"Prodige",
                      5000=>"Maître",
                      9999=>"Légende"},
                                            
                      6 => {0=>"Néophyte",            
                      120=>"Initié",                
                      600=>"Apprenti",
                      1400=>"Confirmé",            #Arc
                      2400=>"Expert",
                      3800=>"Prodige",
                      5500=>"Maître",
                      9999=>"Légende"},
                      
                      7 => {0=>"Néophyte",            
                      135=>"Initié",                
                      750=>"Apprenti",
                      1600=>"Confirmé",            #Dague
                      2800=>"Expert",
                      4400=>"Prodige",
                      6500=>"Maître",
                      9999=>"Légende"},
 
                      8 => {0=>"Néophyte",            
                      65=>"Initié",                
                      300=>"Apprenti",
                      900=>"Confirmé",            #Massue
                      1650=>"Expert",
                      2450=>"Prodige",
                      3750=>"Maître",
                      9999=>"Légende"},
                      
                      9 => {0=>"Néophyte",            
                      50=>"Initié",                
                      250=>"Apprenti",
                      850=>"Confirmé",            #Bâton
                      1500=>"Expert",
                      2350=>"Prodige",
                      3450=>"Maître",
                      9999=>"Légende"},
                      
                      10 => {0=>"Néophyte",            
                      125=>"Initié",                
                      650=>"Apprenti",
                      1450=>"Confirmé",            #Arme à feu
                      2500=>"Expert",
                      4000=>"Prodige",
                      6000=>"Maître",
                      9999=>"Légende"}}           
                     
  #Pour définir une autre attaque que celle de base pour le décompte des point
  #ajouter cela dans la note d'un personnage :
  #<Basic_Skill = ID>
  #ID est l'id de la compétence prise pour base
 
end
class Scene_Battle
 
  alias start_weapon_upgrade start
  def start
    @attaque_standard = false
    start_weapon_upgrade
  end
 
  alias use_item_weapon_upgrade use_item
  def use_item
    @attaque_standard = false
    item = @subject.current_action.item
    if @subject.actor?
      if @subject.actor.note =~ /<Basic_Skill = (\d+)>/
        skill_id = $1.to_i
        @attaque_standard = true if item.id == skill_id
      else
        @attaque_standard = true if item.animation_id < 0
      end
    end
    use_item_weapon_upgrade
  end
 
  alias apply_item_effects_weapon_uprade apply_item_effects
  def apply_item_effects(target, item)
    apply_item_effects_weapon_uprade(target, item)
    if target.result.hit? && target.result.success && @attaque_standard
      if @subject.actor?
        @subject.upgrade_weapon_skill
      end
    end
  end
 
end
module BattleManager
 
  class << self
  
    alias gain_exp_weapon_update gain_exp
    alias process_abort_weapon_update process_abort
  
    def gain_exp
      new = false
      for i in $game_party.members
        for j in i.texte_fin_combat
          $game_message.new_page if new = false
          new = true
          $game_message.add(j)
       #   $game_message.set_options_on_last_add(:sound=> RPG::SE.new("Wind10"), :wait=>60, :input=>true)
        end
        i.texte_fin_combat = []
      end
      gain_exp_weapon_update
    end
  
    def process_abort
      new = false
      for i in $game_party.members
        for j in i.texte_fin_combat
          $game_message.new_page if new = false
          new = true
          $game_message.add(j)
        #  $game_message.set_options_on_last_add(:sound=> RPG::SE.new("Wind10"), :wait=>60, :input=>true)
        end
        i.texte_fin_combat = []
      end
      process_abort_weapon_update
    end
  end
end
class Game_Actor
 
  attr_reader :upgrade_list
  attr_accessor :texte_fin_combat
 
  alias initialize_weapon_upgrade initialize
  def initialize(actor_id)
    initialize_weapon_upgrade(actor_id)
    @weapon_upgrade = {}
    @texte_fin_combat = []
    @upgrade_list = {}
    Weapon_Upgrade::UPGRADE_LIST.each do |key,value|
      li = []
      for list in value
        if list[3].include?(actor_id)
          li.push([list[0],list[1],list[2],true])
        end
      end
      @upgrade_list[key] = li if li != []
    end
  end
 
  def upgrade_weapon_skill
    for i in 1..Weapon_Upgrade::NBR_TYPE_ARME
      if wtype_equipped?(i)
        @weapon_upgrade[i.to_s] = 0 if !@weapon_upgrade.include?(i.to_s)
        @weapon_upgrade[i.to_s] += 1
        test_upgrade_weapon(i)
      end
    end
  end
 
  def level_up_weapon(name,lvl)
    id = (Weapon_Upgrade::LIST_TYPE_ARME.index(name)+1).to_s
    @weapon_upgrade[id] = 0 if !@weapon_upgrade.include?(id)
    @weapon_upgrade[id] += lvl
    @upgrade_list.each do |key,lis|
    next if key.to_s != id
      for j in 0..lis.length-1
      liste = lis[j]
        if liste[3]
          if @weapon_upgrade[id.to_s] >= liste[0]
          param = Weapon_Upgrade::CARACTERISTIQUE[liste[2]]
          add_param(param, liste[1])
          @upgrade_list[key][j][3] = false
          end
        end
      end
    end
  end
 
  def weapon_upgrade
    return @weapon_upgrade
  end
 
  def test_upgrade_weapon(id)
    @upgrade_list.each do |key,lis|
      next if key != id
      for j in 0..lis.length-1
        liste = lis[j]
        if liste[3]
          if @weapon_upgrade[id.to_s] >= liste[0]
            param = Weapon_Upgrade::CARACTERISTIQUE[liste[2]]
            add_param(param, liste[1])
                    #NOMPERSO          |              NOUVEAU RANG                  |        |        NOM ARME              |                      | NOM DU PARAMETRE|    | VALEUR AUG |
            @texte_fin_combat.push(@name +" devient "+Weapon_Upgrade::LVL_DESCRIPTION[id][0].to_s+" en "+Weapon_Upgrade::LIST_TYPE_ARME[id-1]+ ", "+Vocab.param(param)+" +"+liste[1].to_s+".")
            @upgrade_list[key][j][3] = false
          end
        end
      end
    end
  end
end
class Scene_Status
 
 
  alias update_weapon_upgrade update
  def update
    if Input.trigger?(:UP) && @item_window.menu == 1
      Sound.play_cursor
      @item_window.ligne_actuel -= 1
      @item_window.refresh
    elsif Input.trigger?(:DOWN) && @item_window.menu == 1
      Sound.play_cursor
      @item_window.ligne_actuel += 1
      @item_window.refresh
    end
    if Input.trigger?(:B) && @item_window.menu == 1
      Sound.play_cancel
      @item_window.menu = 0
      @command_window.activate
    else
      update_weapon_upgrade
    end
  end
 
  alias terminate_vincent26_weapon_type terminate
  def terminate
    terminate_vincent26_weapon_type
    $game_temp.scene_status_index = nil
  end
 
  def maitrise_commande
    if @item_window.line_nbr_max == 0
      @item_window.menu = 0
      @command_window.activate
    else
      @item_window.menu = 1
    end
  end
 
end
class Window_StatusItem < Window_Base
 
  attr_accessor :menu
  attr_reader :ligne_actuel
 
  NRB_LINE = 7
 
 
  alias initialize_weapon_upgrade initialize
  def initialize(*args)
    @ligne_actuel = 0
    @table_upgrade = []
    @menu = 0
    initialize_weapon_upgrade(*args)
  end
 
  def ligne_actuel=(value)
    table = []
    for feat in @actor.class.features
      if feat.code == 51
        table.push(feat.data_id)
      end
    end
    table.uniq!
    @ligne_actuel = [[value,table.length-NRB_LINE].min,0].max
  end
 
  def line_nbr_max
    table = []
    for feat in @actor.class.features
      if feat.code == 51
        table.push(feat.data_id)
      end
    end
    table.uniq!
    [table.length-NRB_LINE,0].max
  end
 
  alias contents_height_weapon_upgrade contents_height
  def contents_height
    if @upgrade_weapon_contents
      @table_upgrade.length*24+24
    else
      contents_height_weapon_upgrade
    end
  end
 
  alias refresh_weapon_upgrade refresh
  def refresh
    @upgrade_weapon_contents = false
    create_contents
    refresh_weapon_upgrade
  end
 
  def maitrise_enable
    actif = self.line_nbr_max() != 0
    return actif
  end
  
  def draw_maitrise_block
    if @actor_save != @actor
      @ligne_actuel = 0
      @actor_save = @actor
    end
    
    table = []
    for feat in @actor.class.features
      if feat.code == 51
        table.push(feat.data_id)
      end
    end
    table.uniq!
    @table_upgrade = table
    @upgrade_weapon_contents = true
    create_contents
    y = @ligne_actuel*24
    self.oy = y
    draw_arme_usable(32,y,table)
    draw_arme_lvl(270,y,table)
    draw_arme_param(380,y,table)
    draw_arme_rang(150,y,table)
  end
 
 
  def draw_arme_rang(x,y,table)
    for i in 0..table.length
      next if i > NRB_LINE
      if i != 0
        nbr = @actor.weapon_upgrade[table[i-1+@ligne_actuel].to_s] || 0
        rang = Weapon_Upgrade::LVL_DESCRIPTION[i][0]
        Weapon_Upgrade::LVL_DESCRIPTION[i].each do |key , value|
          break if nbr < key
          rang = value
        end
        rang = "" if !Weapon_Upgrade::UPGRADE_LIST.has_key?(table[i-1+@ligne_actuel])
      else
        rang = "Rang"
      end
      if rang == "Rang"
        change_color(system_color)
        draw_text(126, y+i*line_height, 140, line_height, rang, 1)
      else
        if rang == "Légende"
          change_color(text_color(17))
          draw_text(126, y+i*line_height, 140, line_height, rang, 1)
        else
          change_color(normal_color)
          draw_text(126, y+i*line_height, 140, line_height, rang, 1)
        end
      end
    end
  end
 
  def draw_arme_param(x,y,table)
    for i in 0..table.length
      next if i > NRB_LINE
      if i != 0
        if @actor.upgrade_list.has_key?(table[i-1+@ligne_actuel])
          for j in @actor.upgrade_list[table[i-1+@ligne_actuel]]
            if j[3] == true
              value = j[1]
              param = Weapon_Upgrade::CARACTERISTIQUE[j[2]]
              texte = Vocab::param(param)+" +"+value.to_s
              break
            end
            texte = "-"
          end
        else
          texte = "-"
        end
      else
        texte = "Obtention"
      end
      if texte == "Obtention"
        change_color(system_color)
        draw_text(378, y+i*line_height, 140, line_height, texte, 1)
      else
        if texte == "-"
          change_color(text_color(17))
          draw_text(378, y+i*line_height, 140, line_height, texte, 1)
        else
          change_color(normal_color)
          draw_text(378, y+i*line_height, 140, line_height, texte, 1)          
        end
      end
    end
  end
 
  def draw_arme_usable(x,y,table)
    for i in 0..table.length
      if i != 0
        next if i > NRB_LINE
        texte = Weapon_Upgrade::LIST_TYPE_ARME[table[i-1+@ligne_actuel]-1]
        nbr = @actor.weapon_upgrade[table[i-1+@ligne_actuel].to_s] || 0
        rang = Weapon_Upgrade::LVL_DESCRIPTION[i][0]
        Weapon_Upgrade::LVL_DESCRIPTION[i].each do |key , value|
          break if nbr < key
          rang = value
        end
      else
        texte = "Type arme"
      end
      if texte == "Type arme"
        change_color(system_color)
        draw_text(0, y+i*line_height, 140, line_height, texte, 1)
      else
        if rang == "Légende"
          change_color(text_color(17))
          draw_text(0, y+i*line_height, 140, line_height, texte, 1)
        else
          change_color(normal_color)
          draw_text(0, y+i*line_height, 140, line_height, texte, 1)          
        end
      end
    end
  end
 
  def draw_arme_lvl(x,y,table)
    for i in 0..table.length
      if i != 0
        next if i > NRB_LINE
        nbr = @actor.weapon_upgrade[table[i-1+@ligne_actuel].to_s] || 0
        if @actor.upgrade_list.has_key?(table[i-1+@ligne_actuel])
          for j in @actor.upgrade_list[table[i-1+@ligne_actuel]]
            if j[3] == true
              lvl = j[0]
              texte = nbr.to_s+"/"+lvl.to_s
              break
            end
            texte = "Max"
          end
        else
          texte = "Max"
        end
      else
        texte = "Points"
      end
      if texte == "Points"
        change_color(system_color)
        draw_text(252, y+i*line_height, 140, line_height , texte, 1)
      else
        if texte == "Max"
          change_color(text_color(17))
          draw_text(252, y+i*line_height, 140, line_height, texte, 1)
        else
          change_color(normal_color)
          draw_text(252, y+i*line_height, 140, line_height, texte, 1)
        end
      end
    end
  end
   
end
 
class Game_Interpreter
 
  def get_rang_lvl_actor(id, weapon_id)
    nbr = $game_actors[id].weapon_upgrade[weapon_id.to_s] || 0
    rang = Weapon_Upgrade::LVL_DESCRIPTION[weapon_id][0]
    Weapon_Upgrade::LVL_DESCRIPTION[weapon_id].each do |key , value|
      break if nbr < key
      rang = value
    end
    rang = "" if !Weapon_Upgrade::UPGRADE_LIST.has_key?(weapon_id)
    return rang
  end
 
  def get_rang_lvl_member(id, weapon_id)
    nbr = $game_party.members[id].weapon_upgrade[weapon_id.to_s] || 0
    rang = Weapon_Upgrade::LVL_DESCRIPTION[weapon_id][0]
    Weapon_Upgrade::LVL_DESCRIPTION[weapon_id].each do |key , value|
      break if nbr < key
      rang = value
    end
    rang = "" if !Weapon_Upgrade::UPGRADE_LIST.has_key?(weapon_id)
    return rang
  end
 
end



Edit : Notez que vous pouvez utiliser un event comme les hexagrammes blancs en haut à droite sur ma démo pour monter manuellement les points de maîtrise sans avoir besoin de combattre. Ainsi, vous pouvez vérifier que le grade et le bonus sont corrects via le menu Statut - Maîtrise.

Posté dans Forum - [RPG Maker VX Ace] Maîtrise des types d'armes [Résolu]

Nérylis - posté le 29/07/2016 à 16:48:14. (136 messages postés)

Domaine concerné: Script
Logiciel utilisé: RPG Maker VX Ace
Coucou,

J'aurais besoin d'une petite modification sur un script que j'utilise pour gérer les différents rangs de maîtrise des types d'armes.

L'idée du script, c'est que chaque coup de base donné donne un point de maîtrise pour le type de l'arme équipée. A la base, j'avais mis des valeurs communes pour chaque type d'arme. En gros, peu importe le type d'arme utilisé, à 500 points, on avait tel rang, à 1000 points, tel rang... Sauf que c'était pas pratique. Alors, j'ai décidé de mettre des valeurs différentes et séparer chaque type d'arme.

Dans l'upgrade list, entre la ligne 34 et la ligne 104, j'ai juste changé les valeurs pour lesquelles on gagne le bonus. Maintenant, chaque type d'arme a ses propres valeurs (pour la hache, après 75 attaques données, on gagne 2 points en force, etc...). Cette partie-là marche bien. On gagne bien le bonus quand on franchit le palier.

Là où ça marche moins bien, c'est le lvl description à partir de la ligne 115. Le script ne distingue pas les différents types d'armes. Il prend la valeur la plus basse et attribue le nom du rang. Exemple : un personnage qui utilise les griffes doit monter à 150 points pour passer au rang Initié. Sauf que lorsqu'il aura atteint 50 points, bien qu'il ne gagne pas encore le bonus (ce qui est normal), on verra affiché Initié car il ne faut que 50 points pour passer Initié avec le type d'arme bâton. Mon souci se trouve là. Je pense qu'il faut modifier cette partie-là. Quelqu'un saurait faire ça svp ?

Une démo pour ceux que ça intéresse : http://www.mediafire.com/download/x1815hxc839h6wa/Ace+menu+-+Type+arme.exe

Le script ci-dessous :

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
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
=begin
##############################################################
Weapon_Upgrade
####
Vincent26
####
Description:
Ce script permet de monter en level pour l'utilisation de catégorie d'armes.
Le principe est que chaque coup donné avec un type d'armes particulier augmente
son expérience. Une fois un niveau passé, le personnage reçoit une amélioration
définitive d'une de ses caractéristiques.
Un menu secondaire est ajouté au menu status à l'appui de la touche Shift.
Le niveau de compétence pour une arme du héros est associé à un nom descriptif.
####
Utilisation :
Configurer le module suivant pour mettre en place ce script.
=end
module Weapon_Upgrade
 
  #Ne pas modifier
  CARACTERISTIQUE = {:max_hp => 0,:max_mp => 1,:force => 2,:defense => 3,
                    :magic_atk => 4,:magic_def => 5,:agilité => 6,:chance => 7}
 
  #LISTE DES TYPES D'ARMES DANS LE LEXIQUE DE LA BDD
  #
  #
  # Liste des upgrades des types d'armes :
  # TYPE => [[NBR_COUP,VALEUR,CARACTERISTIQUE,[ID_PERSONNAGE]],...]
  #
  # TYPE est le type d'arme (l'id associé dans la BDD)
  # VALEUR est la valeur à ajouter à la caractéristique du perso
  # CARACTERISTIQUE est la caractéristique à modifier
  # ID_PERSONNAGE est la liste des personnages à qui peut s'appliquer cet upgrade
  UPGRADE_LIST = {
    1 => [[75,2,:force,[1,2,3,4,5,6,7,8,9,10]],                  #Hache
        [350,3,:force,[1,2,3,4,5,6,7,8,9,10]],
        [1000,5,:force,[1,2,3,4,5,6,7,8,9,10]],
        [1800,10,:force,[1,2,3,4,5,6,7,8,9,10]],
        [3000,15,:force,[1,2,3,4,5,6,7,8,9,10]],
        [4500,20,:force,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:force,[1,2,3,4,5,6,7,8,9,10]]],
    2 => [[150,1,:agilité,[1,2,3,4,5,6,7,8,9,10]],               #Griffes
        [800,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [2100,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [3400,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [5100,8,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [7500,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [9999,20,:force,[1,2,3,4,5,6,7,8,9,10]]],
    3 => [[110,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],               #Lance
        [525,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [1300,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [2200,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [3300,15,:agilité,[1,2,3,4,5,6,7,8,9,10]],        
        [5250,20,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:agilité,[1,2,3,4,5,6,7,8,9,10]]],
    4 => [[115,2,:force,[1,2,3,4,5,6,7,8,9,10]],                 #Epée
        [550,3,:force,[1,2,3,4,5,6,7,8,9,10]],
        [1325,5,:force,[1,2,3,4,5,6,7,8,9,10]],
        [2300,10,:force,[1,2,3,4,5,6,7,8,9,10]],
        [3500,15,:force,[1,2,3,4,5,6,7,8,9,10]],        
        [5350,20,:force,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:force,[1,2,3,4,5,6,7,8,9,10]]],
    5 => [[100,2,:force,[1,2,3,4,5,6,7,8,9,10]],                 #Katana
        [500,3,:force,[1,2,3,4,5,6,7,8,9,10]],
        [1200,5,:force,[1,2,3,4,5,6,7,8,9,10]],
        [2000,10,:force,[1,2,3,4,5,6,7,8,9,10]],
        [3250,15,:force,[1,2,3,4,5,6,7,8,9,10]],
        [5000,20,:force,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:force,[1,2,3,4,5,6,7,8,9,10]]],
    6 => [[120,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],               #Arc
        [600,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [1400,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [2400,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [3800,15,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [5500,20,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:agilité,[1,2,3,4,5,6,7,8,9,10]]],
    7 => [[135,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],               #Dague
        [750,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [1600,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [2800,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [4400,15,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [6500,20,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:agilité,[1,2,3,4,5,6,7,8,9,10]]],
    8 => [[65,2,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],              #Massue
        [300,3,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [900,5,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [1650,10,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [2450,15,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],        
        [3750,20,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:magic_atk,[1,2,3,4,5,6,7,8,9,10]]],
    9 => [[50,2,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],              #Bâton
        [250,3,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [850,5,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [1500,10,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [2350,15,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],        
        [3450,20,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
        [9999,50,:magic_atk,[1,2,3,4,5,6,7,8,9,10]]],
  10 => [[125,1,:agilité,[1,2,3,4,5,6,7,8,9,10]],                #Arme à feu
        [650,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [1450,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [2500,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [4000,8,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [6000,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
        [9999,20,:force,[1,2,3,4,5,6,7,8,9,10]]],
    }
 
  #Nombre de type d'arme
  NBR_TYPE_ARME = 10
 
  #Liste des types d'armes
  LIST_TYPE_ARME = ["Hache","Griffes","Lance","Epée","Katana","Arc","Dague",
                    "Massue","Bâton","Arme à feu"]
 
  #Description des levels de maitrisse
  LVL_DESCRIPTION = {0=>"Néophyte",             #Commun
  
                      50=>"Initié",                #Bâton
                        65=>"Initié",                #Massue
                          75=>"Initié",                #Hache
                            100=>"Initié",               #Katana
                              110=>"Initié",               #Lance
                                115=>"Initié",               #Epée
                                  120=>"Initié",               #Arc
                                    125=>"Initié",               #Arme à feu
                                      135=>"Initié",               #Dague
                                        150=>"Initié",               #Griffes
                                        
                      250=>"Apprenti",             #Bâton
                        300=>"Apprenti",             #Massue
                          350=>"Apprenti",             #Hache
                            500=>"Apprenti",             #Katana
                              525=>"Apprenti",             #Lance
                                550=>"Apprenti",             #Epée
                                  600=>"Apprenti",             #Arc
                                    650=>"Apprenti",             #Arme à feu
                                      750=>"Apprenti",             #Dague
                                        800=>"Apprenti",             #Griffes
                                        
                      850=>"Confirmé",             #Bâton
                        900=>"Confirmé",             #Massue
                          1000=>"Confirmé",            #Hache
                            1200=>"Confirmé",            #Katana
                              1300=>"Confirmé",            #Lance
                                1325=>"Confirmé",            #Epée
                                  1400=>"Confirmé",            #Arc
                                    1450=>"Confirmé",            #Arme à feu
                                      1600=>"Confirmé",            #Dague
                                        2100=>"Confirmé",            #Griffes
                                        
                      1500=>"Expert",              #Bâton
                        1650=>"Expert",              #Massue
                          1800=>"Expert",              #Hache
                            2000=>"Expert",              #Katana
                              2200=>"Expert",              #Lance
                                2300=>"Expert",              #Epée
                                  2400=>"Expert",              #Arc
                                    2500=>"Expert",              #Arme à feu
                                      2800=>"Expert",              #Dague
                                        3400=>"Expert",              #Griffes
                                        
                      2350=>"Prodige",             #Bâton
                        2450=>"Prodige",             #Massue
                          3000=>"Prodige",             #Hache
                            3250=>"Prodige",             #Katana
                              3300=>"Prodige",             #Lance
                                3500=>"Prodige",             #Epée
                                  3800=>"Prodige",             #Arc
                                    4000=>"Prodige",             #Arme à feu
                                      4400=>"Prodige",             #Dague
                                        5100=>"Prodige",             #Griffes
                                        
                      3450=>"Maître",              #Bâton
                        3750=>"Maître",              #Massue
                          4500=>"Maître",              #Hache
                            5000=>"Maître",              #Katana
                              5250=>"Maître",              #Lance
                                5350=>"Maître",              #Epée
                                  5500=>"Maître",              #Arc
                                    6000=>"Maître",              #Arme à feu
                                      6500=>"Maître",              #Dague
                                        7500=>"Maître",              #Griffes
                                        
                     9999=>"Légende"}           #Commun
                     
  #Pour définir une autre attaque que celle de base pour le décompte des point
  #ajouter cela dans la note d'un personnage :
  #<Basic_Skill = ID>
  #ID est l'id de la compétence prise pour base
 
end
class Scene_Battle
 
  alias start_weapon_upgrade start
  def start
    @attaque_standard = false
    start_weapon_upgrade
  end
 
  alias use_item_weapon_upgrade use_item
  def use_item
    @attaque_standard = false
    item = @subject.current_action.item
    if @subject.actor?
      if @subject.actor.note =~ /<Basic_Skill = (\d+)>/
        skill_id = $1.to_i
        @attaque_standard = true if item.id == skill_id
      else
        @attaque_standard = true if item.animation_id < 0
      end
    end
    use_item_weapon_upgrade
  end
 
  alias apply_item_effects_weapon_uprade apply_item_effects
  def apply_item_effects(target, item)
    apply_item_effects_weapon_uprade(target, item)
    if target.result.hit? && target.result.success && @attaque_standard
      if @subject.actor?
        @subject.upgrade_weapon_skill
      end
    end
  end
 
end
module BattleManager
 
  class << self
  
    alias gain_exp_weapon_update gain_exp
    alias process_abort_weapon_update process_abort
  
    def gain_exp
      gain_exp_weapon_update
      new = false
      for i in $game_party.members
        for j in i.texte_fin_combat
          $game_message.new_page if new = false
          new = true
          $game_message.add(j)
          $game_message.set_options_on_last_add(:sound=> RPG::SE.new("Wind10"), :wait=>60, :input=>true)
        end
        i.texte_fin_combat = []
      end
    end
  
    def process_abort
      new = false
      for i in $game_party.members
        for j in i.texte_fin_combat
          $game_message.new_page if new = false
          new = true
          $game_message.add(j)
          $game_message.set_options_on_last_add(:sound=> RPG::SE.new("Wind10"), :wait=>60, :input=>true)
        end
        i.texte_fin_combat = []
      end
      process_abort_weapon_update
    end
  end
end
class Game_Actor
 
  attr_reader :upgrade_list
  attr_accessor :texte_fin_combat
 
  alias initialize_weapon_upgrade initialize
  def initialize(actor_id)
    initialize_weapon_upgrade(actor_id)
    @weapon_upgrade = {}
    @texte_fin_combat = []
    @upgrade_list = {}
    Weapon_Upgrade::UPGRADE_LIST.each do |key,value|
      li = []
      for list in value
        if list[3].include?(actor_id)
          li.push([list[0],list[1],list[2],true])
        end
      end
      @upgrade_list[key] = li if li != []
    end
  end
 
  def upgrade_weapon_skill
    for i in 1..Weapon_Upgrade::NBR_TYPE_ARME
      if wtype_equipped?(i)
        @weapon_upgrade[i.to_s] = 0 if !@weapon_upgrade.include?(i.to_s)
        @weapon_upgrade[i.to_s] += 1
        test_upgrade_weapon(i)
      end
    end
  end
 
  def level_up_weapon(name,lvl)
    id = (Weapon_Upgrade::LIST_TYPE_ARME.index(name)+1).to_s
    @weapon_upgrade[id] = 0 if !@weapon_upgrade.include?(id)
    @weapon_upgrade[id] += lvl
    @upgrade_list.each do |key,lis|
    next if key.to_s != id
      for j in 0..lis.length-1
      liste = lis[j]
        if liste[3]
          if @weapon_upgrade[id.to_s] >= liste[0]
          param = Weapon_Upgrade::CARACTERISTIQUE[liste[2]]
          add_param(param, liste[1])
          @upgrade_list[key][j][3] = false
          end
        end
      end
    end
  end
 
  def weapon_upgrade
    return @weapon_upgrade
  end
 
  def test_upgrade_weapon(id)
    @upgrade_list.each do |key,lis|
      next if key != id
      for j in 0..lis.length-1
        liste = lis[j]
        if liste[3]
          if @weapon_upgrade[id.to_s] >= liste[0]
            param = Weapon_Upgrade::CARACTERISTIQUE[liste[2]]
            add_param(param, liste[1])
                    #NOMPERSO          |              NOUVEAU RANG                  |        |        NOM ARME              |                      | NOM DU PARAMETRE|    | VALEUR AUG |
            @texte_fin_combat.push(@name +" devient "+Weapon_Upgrade::LVL_DESCRIPTION[liste[0]].to_s+" en "+Weapon_Upgrade::LIST_TYPE_ARME[id-1]+ ", "+Vocab.param(param)+" +"+liste[1].to_s+".")
            @upgrade_list[key][j][3] = false
          end
        end
      end
    end
  end
end
class Scene_Status
 
 
  alias update_weapon_upgrade update
  def update
    if Input.trigger?(:UP) && @item_window.menu == 1
      Sound.play_cursor
      @item_window.ligne_actuel -= 1
      @item_window.refresh
    elsif Input.trigger?(:DOWN) && @item_window.menu == 1
      Sound.play_cursor
      @item_window.ligne_actuel += 1
      @item_window.refresh
    end
    if Input.trigger?(:B) && @item_window.menu == 1
      Sound.play_cancel
      @item_window.menu = 0
      @command_window.activate
    else
      update_weapon_upgrade
    end
  end
 
  alias terminate_vincent26_weapon_type terminate
  def terminate
    terminate_vincent26_weapon_type
    $game_temp.scene_status_index = nil
  end
 
  def maitrise_commande
    if @item_window.line_nbr_max == 0
      @item_window.menu = 0
      @command_window.activate
    else
      @item_window.menu = 1
    end
  end
 
end
class Window_StatusItem < Window_Base
 
  attr_accessor :menu
  attr_reader :ligne_actuel
 
  NRB_LINE = 7
 
 
  alias initialize_weapon_upgrade initialize
  def initialize(*args)
    @ligne_actuel = 0
    @table_upgrade = []
    @menu = 0
    initialize_weapon_upgrade(*args)
  end
 
  def ligne_actuel=(value)
    table = []
    for feat in @actor.class.features
      if feat.code == 51
        table.push(feat.data_id)
      end
    end
    table.uniq!
    @ligne_actuel = [[value,table.length-NRB_LINE].min,0].max
  end
 
  def line_nbr_max
    table = []
    for feat in @actor.class.features
      if feat.code == 51
        table.push(feat.data_id)
      end
    end
    table.uniq!
    [table.length-NRB_LINE,0].max
  end
 
  alias contents_height_weapon_upgrade contents_height
  def contents_height
    if @upgrade_weapon_contents
      @table_upgrade.length*24+24
    else
      contents_height_weapon_upgrade
    end
  end
 
  alias refresh_weapon_upgrade refresh
  def refresh
    @upgrade_weapon_contents = false
    create_contents
    refresh_weapon_upgrade
  end
 
  def maitrise_enable
    actif = self.line_nbr_max() != 0
    return actif
  end
  
  def draw_maitrise_block
    if @actor_save != @actor
      @ligne_actuel = 0
      @actor_save = @actor
    end
    
    table = []
    for feat in @actor.class.features
      if feat.code == 51
        table.push(feat.data_id)
      end
    end
    table.uniq!
    @table_upgrade = table
    @upgrade_weapon_contents = true
    create_contents
    y = @ligne_actuel*24
    self.oy = y
    draw_arme_usable(32,y,table)
    draw_arme_lvl(270,y,table)
    draw_arme_param(380,y,table)
    draw_arme_rang(150,y,table)
  end
 
 
  def draw_arme_rang(x,y,table)
    for i in 0..table.length
      next if i > NRB_LINE
      if i != 0
        nbr = @actor.weapon_upgrade[table[i-1+@ligne_actuel].to_s] || 0
        rang = Weapon_Upgrade::LVL_DESCRIPTION[0]
        Weapon_Upgrade::LVL_DESCRIPTION.each do |key , value|
          break if nbr < key
          rang = value
        end
        rang = "" if !Weapon_Upgrade::UPGRADE_LIST.has_key?(table[i-1+@ligne_actuel])
      else
        rang = "Rang"
      end
      if rang == "Rang"
        change_color(system_color)
        draw_text(126, y+i*line_height, 140, line_height, rang, 1)
      else
        if rang == "Légende"
          change_color(text_color(17))
          draw_text(126, y+i*line_height, 140, line_height, rang, 1)
        else
          change_color(normal_color)
          draw_text(126, y+i*line_height, 140, line_height, rang, 1)
        end
      end
    end
  end
 
  def draw_arme_param(x,y,table)
    for i in 0..table.length
      next if i > NRB_LINE
      if i != 0
        if @actor.upgrade_list.has_key?(table[i-1+@ligne_actuel])
          for j in @actor.upgrade_list[table[i-1+@ligne_actuel]]
            if j[3] == true
              value = j[1]
              param = Weapon_Upgrade::CARACTERISTIQUE[j[2]]
              texte = Vocab::param(param)+" +"+value.to_s
              break
            end
            texte = "-"
          end
        else
          texte = "-"
        end
      else
        texte = "Obtention"
      end
      if texte == "Obtention"
        change_color(system_color)
        draw_text(378, y+i*line_height, 140, line_height, texte, 1)
      else
        if texte == "-"
          change_color(text_color(17))
          draw_text(378, y+i*line_height, 140, line_height, texte, 1)
        else
          change_color(normal_color)
          draw_text(378, y+i*line_height, 140, line_height, texte, 1)          
        end
      end
    end
  end
 
  def draw_arme_usable(x,y,table)
    for i in 0..table.length
      if i != 0
        next if i > NRB_LINE
        texte = Weapon_Upgrade::LIST_TYPE_ARME[table[i-1+@ligne_actuel]-1]
        nbr = @actor.weapon_upgrade[table[i-1+@ligne_actuel].to_s] || 0
        rang = Weapon_Upgrade::LVL_DESCRIPTION[0]
        Weapon_Upgrade::LVL_DESCRIPTION.each do |key , value|
          break if nbr < key
          rang = value
        end
      else
        texte = "Type arme"
      end
      if texte == "Type arme"
        change_color(system_color)
        draw_text(0, y+i*line_height, 140, line_height, texte, 1)
      else
        if rang == "Légende"
          change_color(text_color(17))
          draw_text(0, y+i*line_height, 140, line_height, texte, 1)
        else
          change_color(normal_color)
          draw_text(0, y+i*line_height, 140, line_height, texte, 1)          
        end
      end
    end
  end
 
  def draw_arme_lvl(x,y,table)
    for i in 0..table.length
      if i != 0
        next if i > NRB_LINE
        nbr = @actor.weapon_upgrade[table[i-1+@ligne_actuel].to_s] || 0
        if @actor.upgrade_list.has_key?(table[i-1+@ligne_actuel])
          for j in @actor.upgrade_list[table[i-1+@ligne_actuel]]
            if j[3] == true
              lvl = j[0]
              texte = nbr.to_s+"/"+lvl.to_s
              break
            end
            texte = "Max"
          end
        else
          texte = "Max"
        end
      else
        texte = "Points"
      end
      if texte == "Points"
        change_color(system_color)
        draw_text(252, y+i*line_height, 140, line_height , texte, 1)
      else
        if texte == "Max"
          change_color(text_color(17))
          draw_text(252, y+i*line_height, 140, line_height, texte, 1)
        else
          change_color(normal_color)
          draw_text(252, y+i*line_height, 140, line_height, texte, 1)
        end
      end
    end
  end
   
end
 
class Game_Interpreter
 
  def get_rang_lvl_actor(id, weapon_id)
    nbr = $game_actors[id].weapon_upgrade[weapon_id.to_s] || 0
    rang = Weapon_Upgrade::LVL_DESCRIPTION[0]
    Weapon_Upgrade::LVL_DESCRIPTION.each do |key , value|
      break if nbr < key
      rang = value
    end
    rang = "" if !Weapon_Upgrade::UPGRADE_LIST.has_key?(weapon_id)
    return rang
  end
 
  def get_rang_lvl_member(id, weapon_id)
    nbr = $game_party.members[id].weapon_upgrade[weapon_id.to_s] || 0
    rang = Weapon_Upgrade::LVL_DESCRIPTION[0]
    Weapon_Upgrade::LVL_DESCRIPTION.each do |key , value|
      break if nbr < key
      rang = value
    end
    rang = "" if !Weapon_Upgrade::UPGRADE_LIST.has_key?(weapon_id)
    return rang
  end
 
end

Posté dans Forum - [RPG Maker VX Ace] Jauge ATB pour LNX Battle

Nérylis - posté le 29/07/2016 à 12:05:00. (136 messages postés)

Oui, c'est vrai, c'est un peu la même chose que ce qu'on trouve dans les FF.

Edit :

Démo à jour du 11/11/2016 : http://www.mediafire.com/file/oxrneq1iwmcmxrb/Battle+test+ATB+-+11+Nov+2016.exe

Liste des bugs à corriger :

- Problème 1 :
Le bug le plus contraignant, au niveau du ciblage lorsqu'on utilise des objets et des magies. Quand on est en train de sélectionner une cible, la barre de chargement se remplit avant qu'on ait validé la cible. Et l'objet ou le sort est lancé sur la cible sur laquelle on se trouve au moment où la barre est à fond. Et je crois que ça a une conséquence sur les sorts qu'on peut utiliser depuis le menu (comme Premiers soins par exemple qui est un heal hors combat). Là, je ne peux pas l'utiliser depuis le menu, c'est grisé.

- Problème 2 :
Concernant le combat face aux Esprits et le fameux événement "A chaque tour". Lorsqu'un adversaire est KO, l'événement se déclenche en fin de tour. Dans ce cas, les barres ATB des personnages se figent. Mais si l'une d'elles est pleine, le personnage en question peut agir. Et s'il agit pendant l'événement (à savoir la résurrection d'un adversaire), l'action doit être revalidée dès que l'événement s'est terminé. Il faudrait améliorer ce point, je pense en désactivant la fenêtre de commande pour les personnages ayant leur barre ATB pleine, et en la remettant une fois l'événement terminé.

- Problème 3 :
Un point qui n'a plus l'air de fonctionner, c'est sur les statuts combinés comme Booster et Lenteur. Dans la config sur les statuts, ceux qui ont comme troisième terme "true" ne peuvent se combiner. Le nouveau statut remplace le statut précédent (ce qui est le cas des statuts Booster et Lenteur, donc ils ne sont pas censés se combiner). Or c'est le cas maintenant. Pourtant, avant ça marchait bien.

- Problème 4 :
Le bug le moins important mais à signaler. J'ai eu un plantage à un moment avec un message d'erreur mais je n'ai pas réussi à le reproduire une nouvelle fois. J'utilisais un sort de zone et au moment où le dernier ennemi mourait, je suis revenu dans le menu Combattre / S'enfuir / Combat auto et j'ai eu ceci :

image

Posté dans Forum - [RPG Maker VX Ace] Jauge ATB pour LNX Battle

Nérylis - posté le 26/07/2016 à 20:55:37. (136 messages postés)

Domaine concerné: Script
Logiciel utilisé: RPG Maker VX Ace
Bonsoir,

J'aurais besoin d'une âme généreuse pour m'aider à la dernière étape de mon système de combat, à savoir l'intégration de la jauge ATB. Pour ceux qui ne connaissent pas, il s'agit d'une évolution du tour par tour classique, qui consiste à intégrer une barre d'action qui se remplit progressivement. Lorsque celle-ci est remplie, le personnage peut agir. Au fur et à mesure que le joueur progresse, la barre ATB se remplit de plus en plus vite.

Je précise que j'utilise le LNX Battle qui est une refonte globale esthétique du système par défaut. J'ai déjà essayé d'utiliser les scripts ATB existants mais j'ai constaté de nombreux dysfonctionnements ou incompatibilités. Je ne sais pas s'il serait plus simple de s'inspirer d'un système existant ou de partir d'une feuille blanche (je ne m'y connais pas assez en script pour dire ça).

Tout d'abord, voici une démo avec simplement les scripts du LNX Battle : http://www.mediafire.com/download/a01l8y0jhfbk28a/Test+ATB.exe

Voici mes spécifications :

- Pour l'emplacement de la barre ATB, je pense à une barre verticale sur la gauche de l'avatar (voir ma Capture ici : http://www.servimg.com/view/11188066/132#). La barre se remplirait du bas vers le haut.
- Pour la représentation de la barre ATB, je dirais une barre noire aux extrémités et jaune à l'intérieur, avec la mention ATB à son sommet.

- Pour les ennemis, la barre ATB doit être invisible (je suis un habitué des FF). Donc, aucune possibilité de la rendre visible. Je considère que ça fait partie des "stats" de l'adversaire. Donc comme à la base, le joueur n'a pas d'infos sur les stats de ses adversaires, on reste cohérent.

- Pour la vitesse minimale de remplissage de la barre ATB, quand l'agilité est à 1, la barre se remplit en 10s.
- Pour la vitesse maximale, quand l'agilité atteint 200, la barre se remplit en 1s. Il faut prendre cette valeur comme une valeur fixe et non comme une valeur max. En d'autres termes, on considèrera qu'aller au-delà de 200 devient inutile pour remplir plus rapidement la jauge ATB. Comme je ne suis pas sûr de cette valeur, j'aimerais bien la possibilité de configurer ces éléments dans le script (valeur mini AGI et valeur maxi AGI).
- Lorsque l'ennemi a l'avantage, il doit agir aussitôt tandis que la barre ATB des personnages doit démarrer de 0. Lorsque le joueur a l'avantage, la même chose mais inversement.

- Facteur agissant sur la barre ATB : comme ça de tête, je ne pense qu'à des skills comme Booster ou Lenteur. J'ai dans l'idée de configurer des skills dans la BDD aboutissant sur des statuts d'état dans lesquels on mettrait un notetag du style "ATB : x2" ou "ATB : x0.5". Si par exemple, un personnage sous l'effet Booster devait subir Lenteur ou l'inverse, le nouveau statut prendrait le pas sur l'ancien.
- Pour les statuts d'état comme Paralysie, plusieurs possibilités : Barre ATB figée et elle reste remplie comme elle est au moment où le skill touche sa cible, c'est-à-dire que quand elle repartira, ça sera là où elle s'est arrêtée. Barre ATB figée et elle se met à 0, c'est-à-dire que quand elle repartira, ça sera du début. Pourquoi pas avoir les deux.

- Le LNX Battle propose une fonction pour accélérer le combat mais je ne souhaite pas conserver cette option avance rapide. Quand je joue au tour par tour classique, le côté aléatoire m'irrite souvent au point qu'une option pour accélérer le combat ne me gêne pas. En revanche, avec l'ATB, je n'ai pas besoin d'une telle option. Par contre, il existe une option "Combat auto" qui s'active en appuyant sur une touche et qui a pour conséquence de faire lancer l'attaque de base de chaque personnage sans que le joueur n'agisse par lui-même, tout en accélérant la vitesse du combat. Le combat devient automatique jusqu'à ce que le joueur désactive le mode "Combat auto", chose qu'il sera obligé de faire s'il veut lancer une autre compétence. Cette option est mémorisée sur le combat suivant si elle n'a pas été désactivée lors du combat précédent. Mais elle ne sera pas persistante au point d'être conservé à travers une sauvegarde de jeu. La touche pour activer/désactiver ce mode en combat sera Z dans la config RPG Maker. Dans le cas du Combat Auto, le ciblage se fera sur le premier adversaire.

- Ajout d'un menu pour laisser le choix au joueur de sélectionner "Actif" (le temps continue de défiler normalement quand le joueur décide des actions), "Semi-Actif" (le temps défile quatre fois moins vite, valeur par défaut, quand le joueur décide des actions) ou "Passif" (le temps se fige quand le joueur décide des actions). A voir plus tard pour mettre d'autres options de réglage.

- Un point essentiel pour finir : la possibilité de switcher entre les personnages dont la barre ATB est remplie (non applicable en mode Passif). C'est ce qui, à mes yeux, fait la grande différence entre le tour par tour classique et le système ATB. Cette fonction serait réalisable à tout moment en combat avec la touche Y (dans la config RPG Maker). On passerait directement au personnage suivant dont la jauge ATB est remplie. S'il n'y a qu'un seule personnage avec la jauge ATB remplie (c'est-à-dire que le joueur est sur les commandes de ce personnage forcément), cette fonction ne s'applique pas.
Pour résumer, un appui sur la touche permet de skip vers :
- soit le personnage suivant dont la barre ATB est pleine.
- soit on revient sur le personnage actuel si aucun autre personnage a la barre ATB pleine.
- il ne se passe rien si aucun personnage a sa barre ATB pleine.
Dans tous les cas :
- un appui sur cette touche laisse la barre ATB du personnage actuel à 100%
- on peut appuyer sur cette touche à n'importe quel moment, peu importe la fenêtre de commande sur laquelle on navigue
- quand on passe au personnage suivant ou qu'on revient sur le personnage actuel, c'est sur la fenêtre de commande de base par défaut et non celle qu'on a quitté précédemment.

Voilà, si vous avez des questions, n'hésitez pas.

Posté dans Forum - [RPG Maker VX Ace] Coordonnées X et Y moyen de transport [Résolu]

Nérylis - posté le 01/07/2016 à 16:55:17. (136 messages postés)

On m'a répondu sur un autre forum avec ça :
$game_map.vehicles[n].x
$game_map.vehicles[n].y
n désignant le moyen de transport (0, 1 ou 2).

J'ai testé, ça marche bien on dirait.
Merci quand même.

Posté dans Forum - [RPG Maker VX Ace] Coordonnées X et Y moyen de transport [Résolu]

Nérylis - posté le 30/06/2016 à 18:05:02. (136 messages postés)

Domaine concerné: Script
Logiciel utilisé: RPG Maker VX Ace
Coucou,

J'ai une question assez simpliste : comment on fait pour récupérer les coordonnées X et Y des moyens de transport (aéronef, bâteau, radeau) afin de les stocker dans des variables ? J'imagine qu'il faut utiliser le dernier champ "Script" dans la commande "Modifier une variable"mais comment doit-on formuler ce champ ?

Posté dans Forum - [RPG Maker VX Ace] Centrage de texte [Résolu]

Nérylis - posté le 23/06/2016 à 22:07:54. (136 messages postés)

Non, il n'y a pas de ligne avec super.

Posté dans Forum - [RPG Maker VX Ace] Centrage de texte [Résolu]

Nérylis - posté le 23/06/2016 à 21:04:00. (136 messages postés)

Citation:

Pour le problème en question, est-ce que la zone qui accueille le texte est assez large pour voir une différence entre les alignements possibles ?



Comment on sait ça ?

Posté dans Forum - [RPG Maker VX Ace] Centrage de texte [Résolu]

Nérylis - posté le 23/06/2016 à 20:14:39. (136 messages postés)

Mon projet est terminé. C'est mon dernier souci actuellement, c'est de l'optimisation. Du détail certes, mais ça a son importance en terme de rigueur.

Posté dans Forum - [RPG Maker VX Ace] Centrage de texte [Résolu]

Nérylis - posté le 22/06/2016 à 17:59:51. (136 messages postés)

Domaine concerné: Script
Logiciel utilisé: RPG Maker VX Ace
Coucou,

J'utilise le script de BlackMorning - Ace status addon pour optimiser l'Ace status menu de Yanfly. Dans le menu Statut, on retrouve un onglet Biographie qui permet d'afficher une bio plus développée des personnages. Par contre, le texte est justifié à gauche. J'aurais voulu le centrer.

Voici le lien du script : https://drive.google.com/file/d/0B1cW_5YDc5H_QXl3YU5sMWRReTQ/edit

En changeant le 2 à la fin de la parenthèse du draw_text(x + cw, y, width-cw, line_height, text2, 2) présent dans le def draw_actor_bio_info(id, x, y, width = 100), ça ne change rien. Quelqu'un saurait m'aider ?

Posté dans Forum - [RPG Maker VX Ace] Problème position personnages [Résolu]

Nérylis - posté le 19/06/2016 à 20:58:04. (136 messages postés)

Cette fois, ça marche bien. Merci Zeus, effectivement t'es un tueur pour ces trucs là.^^

Posté dans Forum - [RPG Maker VX Ace] Problème position personnages [Résolu]

Nérylis - posté le 19/06/2016 à 10:12:42. (136 messages postés)

Je viens de tester, ça a l'air de bien marcher. Merci. :)

Par contre, j'ai un petit souci sur un event. Sur mon donjon à plusieurs équipes, lors de la création des équipes, j'ai plusieurs appels de script. Et là en l'occurence, j'obtiens un message d'erreur qui est le suivant :

image

Ce message apparaît après avoir créé la première équipe après le script call_party qu'on peut voir dans mon event sur ce screenshot :

image

Je pense que ça doit être dû aux appels de scripts qui suivent puisque le plantage a lieu avant le message "Créez l'équipe 2". Est-ce que tu vois d'où vient le problème ? Sinon, au pire, je peux réécrire mon event sans faire d'appel de script mais pour l'avoir déjà fait, ça donne quelque chose de super long et quand on m'avait donné cette méthode avec les appels de script, j'étais content.^^

Edit : Je pense que ça sera peut-être plus facile pour toi avec la démo de ce mini projet pour corriger les appels de script : http://www.mediafire.com/download/d87ern13stlad81/Teams.exe

Posté dans Forum - [RPG Maker VX Ace] Problème position personnages [Résolu]

Nérylis - posté le 18/06/2016 à 21:16:44. (136 messages postés)

En testant les deux possibilités, on perd effectivement le positionnement des combattants en première position. Il faudrait garder cette fonctionnalité, et juste changer le positionnement des non combattants. Si c'est possible.

Edit : Arttroy, j'ai testé en mettant (3) mais je n'ai pas vu de différence.

Posté dans Forum - [RPG Maker VX Ace] Problème position personnages [Résolu]

Nérylis - posté le 18/06/2016 à 15:52:46. (136 messages postés)

Non, ça ne marche pas.

Aller à la page: 1 2 3 4

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