Oniromancie: Scripts - Difficulté des combats changeant en fonction de la moyenne de niveau


Comment ça marche?

Aëdemphia
Par Sylvanor

Fighting Robots Quest
Par Boulon

Forstale
Par Ødd Clock

Geex
Par roys

Inexistence
Par Falco

La Légende d'Ibabou
Par Zaitan

Lije
Par Gaetz

LoveMaster
Par Cuddlefox

Sarcia
Par Kaëlar

Super Mario RPG - Lost Souls
Par Omegabowser

News: Concours des Alex d'Or 2017-18: (...) / News: MegaMaker : créez votre propre (...) / News: Test de Tinker Quarry / Sorties: Leave the Room / Jeux: Leave the Room /

Chat  (27 connectés)

Bienvenue
visiteur !






publicité RPG Maker!

Statistiques

Liste des
membres


Contact

64 connectés actuellement

9180016 visiteurs
depuis l'ouverture

1090 visiteurs
aujourd'hui

Groupe Facebook

Barre de séparation

Partenaires




TOP
GAMEMAKING


Les 5 plus
visités

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Pixelandgame

Tashiroworld

HeyMakeGames

Au hasard

Ton-PC

EventGame

Red Moonlight

Les deux derniers

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Nos autres partenaires

Devenir
partenaire


Barre de séparation

Un site du réseau
War Paradise

Annuaires référenceurs





Difficulté des combats changeant en fonction de la moyenne de niveau
Script pour RPG Maker VX
Ecrit par nouillera

Ce script n'est pas de moi mais de DrakoShade. Mettez son nom dans vos crédits.


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

# ** Dynamic Difficulty
#------------------------------------------------------------------------------
# By:  DrakoShade
# Version 1.1
# Last Updated:  17 March, 2008
#------------------------------------------------------------------------------
# Version History:
# V. 1.1:  Updated the note-parsing methodology to work as described by "loam"
#          of RMXP.org.  This script's use of the Note field will no longer
#          interfere with or be confused by other notes.  Also, pointless
#          methods for the difficulty setting have been removed.
#==============================================================================
=begin
Here, you get a chance to set the defaults for your creatures.  Any creature
for which the Note tab doesn't include a modification will use the numbers
you set here.  Instructions follow.
=end
module RPG
  class Enemy
    def get_default_gains
      @maxhp_gain = 50            #Default 50
      @maxmp_gain = 10            #Default 10
      @atk_gain   = 1.25          #Default 1.25
      @def_gain   = 1.25          #Default 1.25
      @spi_gain   = 2.5           #Default 2.5
      @agi_gain   = 2.5           #Default 2.5
      @hit_gain   = 0             #Default 0
      @eva_gain   = 0             #Default 0
      @exp_gain   = 0             #Default 0
      @gold_gain  = 0             #Default 0
      @variance   = 15            #Default 15
      @min_level  = 1             #Default 1
      @max_level  = 99            #Default 99
    end
  end
end
 
=begin ========================================================================
||  Using the Note Field to your advantage.                                  ||
===============================================================================
The defaults that you set above are fine if you want every single enemy in the
game to follow the same growth pattern.  If that's the case, you don't have to
use the Note field at all for this script.  If you want your enemies to grow
in different ways from one another, then the Note field is where you make it
happen.
 
To do anything in the Notes with this script, you will need to include two
special lines in the box:
"=begin dynamic difficulty"
"=end dynamic difficulty"
Don't put quotes around them.  Those are simply here so that this explanation
won't mess with the commenting in the script itself.
Anything that falls between those two lines will be evaluated just after the
individual enemy looks up the defaults above.  Thus, if you include
 
@gold_gain = 200
 
then that specific enemy will be worth an extra 200 gold for every level it
gains, no matter what default you have set.  If, instead, you use the line
 
@gold_gain *= 2
 
then the enemy is worth twice the gold-per-level of your standard.  If the
standard stays at 0, of course, then it's still worth 0 a level, but you
know what I mean.
 
===============================================================================
||  The Minimum and Maximum Levels                                           ||
===============================================================================
In the defaults, you may have noticed the defaults for @min_level and
@max_level.  A creature for which @min_level = 1 and @max_level = 99 will gain
power as long as your party's average level is above 1, and won't stop gaining
power until level 99, which can't normally be exceeded anyway.  This works
well if you intend the enemy to scale no matter what level it's encountered at,
but you can do it differently.
 
An enemy for which @min_level = 10, for extestle, will be at the power you set
in the database any time it's encountered by a party of level 10 or lower.
When said party hits level 11, that enemy will gain only 1 level, rather than
the 10 that anything else would gain.  In this way, you can create enemies that
are never incredibly weak, but still get stronger.
 
@max_level is similar, but for the other end of the spectrum.  An enemy for
which @max_level = 30, for instance, would scale as normal up until the party
reached that level.  but if the party were level 40, it would still only grow
as if the party were level 30.  Thus, this enemy stops gaining power when the
party's average level hits it's @max_level.
 
===============================================================================
||  Game Difficulty                                                          ||
===============================================================================
At any point, you can set the value of the game's difficulty with a simple
script call.  Since it's an attr_accessor, all you have to do is one of these:
$game_system.difficulty = x
$game_system.difficulty += x
$game_system.difficulty -= x
Etcetera, so on, and so forth.
 
This script uses the difficulty to determine the level of the enemies, mostly
like the party's average level, but with a small difference.
When setting how powerful a monster is, for its maximum HP, attack and defense,
etc. the script will add the difficulty to the party's level.  However, when
determining the rewards of experience and gold returns, the script ignores
this value.
 
Extestle:
An enemy at level 8 and game difficulty of 2 will be just as hard to beat as
the same enemy at level 10 and game difficulty 0, but will give rewards the
same as if you'd beat it at level 8 and difficulty 0.
 
===============================================================================
||  General Advice                                                           ||
===============================================================================
When designing your enemies, take into account the level at which you want them
to be a real challenge for your party.  Their stats should be roughly similar
to those of a party member at their @min_level wearing the equipment you'd
expect your party to have at the target level.
 
In this way, although the enemy scales down to match a party whose level is
lower than expected, he still fights as if he were equipped to take on the
stronger party.  The ability to defeat him will, at this point, hinge more
on your party's equipment than their level.
Of course, the act of balancing is purely up to you.  My default numbers are
set so that enemies will scale with a new actor's default gains in the
database.  You could retool them to scale with equipment as well, or factor
how well-equipped your enemy is into his stats at minimum level.  The choice
is yours.
 
I hope you enjoy using this script.  Happy creating.
 
===============================================================================
||  That's it.  On to the rest of the script.                                ||
===============================================================================
=end
#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
# The actual difficulty of the game as a whole is added into this class.
#==============================================================================
class Game_System
 attr_accessor :difficulty     #New public instance variable.
 
 #----------------------------------------------------------------------------
 # * Aliasing the Initialize method.
 #----------------------------------------------------------------------------
 alias drakoshade_dynamic_difficulty_initialize initialize
 def initialize
   drakoshade_dynamic_difficulty_initialize
   @difficulty = 0
 end
end
#==============================================================================
# End modifications to Game_System.
#==============================================================================
 
#==============================================================================
# ** RPG::Enemies
#------------------------------------------------------------------------------
# Most of the magic happens here.  New methods are created which allow the
# enemies to gain levels, based on a combination of both the party's average
# level and the new $game_system.difficulty.
#==============================================================================
module RPG
 class Enemy
   #--------------------------------------------------------------------------
   # * Public Instance Variables
   #--------------------------------------------------------------------------
   attr_accessor :base_maxhp, :base_maxmp, :base_atk, :base_def, :base_spi
   attr_accessor :base_agi, :base_hit, :base_eva, :base_exp, :base_gold
   attr_accessor :maxhp_gain, :maxmp_gain, :atk_gain, :def_gain, :spi_gain
   attr_accessor :agi_gain, :hit_gain, :eva_gain, :exp_gain, :gold_gain
   attr_accessor :min_level, :max_level
   
   #--------------------------------------------------------------------------
   # * Set_Bases
   #--------------------------------------------------------------------------
   def set_bases
     @base_maxhp, @base_maxmp = @maxhp, @maxmp
     @base_atk, @base_def = @atk, @def
     @base_spi, @base_agi = @spi, @agi
     @base_hit, @base_eva = @hit, @eva
     @base_exp, @base_gold = @exp, @gold
     get_default_gains
     eval(@note[/(?<==begin dynamic difficulty)(.*?)(?==end dynamic difficulty)/m].to_s)
   end
   
   #--------------------------------------------------------------------------
   # * Update Level
   #--------------------------------------------------------------------------
   def update_level
     levels = [([$game_party.ave_level, @max_level].min - @min_level), 0].max
     diff = $game_system.difficulty
     @maxhp = generate_stat(@base_maxhp-1, @maxhp_gain, (levels + diff)) + 1
     @maxmp = generate_stat(@base_maxmp-1, @maxmp_gain, (levels + diff)) + 1
     @atk = generate_stat(@base_atk-1, @atk_gain, (levels + diff)) + 1
     @def = generate_stat(@base_def-1, @def_gain, (levels + diff)) + 1
     @spi = generate_stat(@base_spi-1, @spi_gain, (levels + diff)) + 1
     @agi = generate_stat(@base_agi-1, @agi_gain, (levels + diff)) + 1
     @hit = generate_stat(@base_agi, @agi_gain, (levels + diff))
     @eva = generate_stat(@base_eva, @eva_gain, (levels + diff))
     @exp = generate_stat(@base_exp, @exp_gain, levels)
     @gold = generate_stat(@base_gold, @gold_gain, levels)
   end
     
   #--------------------------------------------------------------------------
   # * Generate Stat
   #--------------------------------------------------------------------------
   def generate_stat(base, gain, levels)
     result = base + (gain * levels)
     result *= (rand(@variance*2)+(100-@variance))
     result /= 100
     result = [result.to_i, 0].max
     return result
   end
 end
end
 
#==============================================================================
# ** Game_Party
#------------------------------------------------------------------------------
# I'm adding a method here that will allow this script (or any other) to
# determine the average party level.
#==============================================================================
class Game_Party
 def ave_level
   level = 0
   for i in @actors
     actor = $game_actors
     level += actor.level
   end
   level /= @actors.size
   return level.round
 end
end
 
#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
# Methods that load the database need to be altered so that the enemies set
# their bases.
#==============================================================================
class Scene_Title
 #----------------------------------------------------------------------------
 # *Alias the Load Database method.
 #----------------------------------------------------------------------------
 alias drakoshade_dynamic_difficulty_load_database load_database
 def load_database
   drakoshade_dynamic_difficulty_load_database
   for i in 1...$data_enemies.size
     $data_enemies.set_bases
   end
 end
 
 #----------------------------------------------------------------------------
 # *Alias the Load Battle Test Database method.
 #----------------------------------------------------------------------------
 alias drakoshade_dynamic_difficulty_load_bt_database load_bt_database
 def load_bt_database
   drakoshade_dynamic_difficulty_load_bt_database
   for i in 1...$data_enemies.size
     $data_enemies.set_bases
   end
 end
end
 
#==============================================================================
# ** Game_Troop
#------------------------------------------------------------------------------
# The modification here allows for greater versitility than modifying the
# battle scene in this situation.  Enemies will load into the troop with
# updated stats.
#==============================================================================
class Game_Troop
 #----------------------------------------------------------------------------
 # *Alias the Setup method.
 #----------------------------------------------------------------------------
 alias drakoshade_dynamic_difficulty_setup setup
 def setup(troop_id)
   for i in 1...$data_enemies.size
     $data_enemies.update_level
   end
   drakoshade_dynamic_difficulty_setup(troop_id)
 end
end
 


Le bonus est tout bête : le gain d'expérience et d'argent est plus élevé.


Sonara - posté le 13/11/2010 à 14:47:35. (2846 messages postés)

aka Pendrel

Ça a l'air plutôt pas mal, surtout que contrairement à un autre que j'avais vu, ici on peut s'occuper de chaque ennemi au cas par cas, ce qui permet de faire des monstres communs qui progressent et des boss de niveau minimal fixe (pas comme dans Oblivion où on peut finir le jeu niveau 1).

Et en même temps, ça permet quand même de limiter le leveling intensif.

Je m'en servirais certainement.

EDIT : Rhooo, juste une erreur de ponctuation.

A l'origine, le commentaire ci-dessus devait être intelligent, drôle et créatif. Finalement j'ai changé d'avis.


sriden - posté le 13/11/2010 à 15:13:09. (15535 messages postés) - roi

Citation:

Ça a l'air plutôt pas mal, surtout que contrairement à un autre que j'avais vu.

Et c'est plutôt texte sous prétexte que c'est varié.

Forum du FAMAS | Escapade | La 7e porte (jeu multimaker complet) | Vader Ou La Fin des Haricots | Polaris 03 | Ma zyk : Diaphanous Horizons


elm6 - posté le 13/11/2010 à 16:08:41. (4056 messages postés)

Connard prétentieux

Wé pas mal pour éviter le levelling.
Dommage que qu'on ait pas le même pour VX, les bons scripts XP sortent après que j'ai lâché le logiciel, traitres! :F

Elemsis Chronicles, le blog! - New Wave RPG Maker, la relève de VX.bbactif (paix à ton âme vieux frère)


nouillera - posté le 13/11/2010 à 20:12:59. (92 messages postés)

Il y a une erreur, ce script est pour VX. Enfin, si ce script marche sous XP, ce n'est pas grave.


trotter - posté le 13/11/2010 à 20:28:05. (7970 messages postés)

Ok, script changé de section.

Un jeu sur la liberté d'action


elbos - posté le 13/11/2010 à 21:42:38. (94 messages postés)

Névrosé schyzophrènique psychopathe paranoïaque souffrant d'hallucinations à tendances morbides

Ce serait vraiment sympa d'avoir un petit mode d'emplois pour ce script :(

Parce que c'est exactement celui qu'il me faut mais je ne sais même pas comme activer le script...

Si quelqu'un aurait la bonté de m'aider j'en serait très reconnaissant...

D’ailleurs j'ai pas suivit, il marche pour VX ou pour XP (ou les deux) ?


kilam1110 - posté le 13/11/2010 à 23:29:01. (9157 messages postés) - bocauxharam

Bah TG.

Nan mais tu sais lire ?
Maintenant les noobs ne savent même pas comment se servir d'un script déjà fait, où va le monde ? :sriden

(Ah oui DMC)

New RPG Maker - Forum traitant du logiciel RPG Maker tout en français ! | SURVIVE V2.5 - Dégommez du zombie !


nouillera - posté le 14/11/2010 à 09:39:11. (92 messages postés)

Pour Elbos :
1) Le script s'active automatiquement.
2) Ce script est pour la version VX.


nanotechno - posté le 14/11/2010 à 11:10:03. (16 messages postés)

on a tous été noob un jour ou l'autre... Moi le premier...:'(

sinon je pense moi aussi utiliser se script qui a vraiment pas l'air mal.


F - posté le 14/11/2010 à 11:37:02. (1083 messages postés)

w

Je plussoie. :D

WWWWWWWWWWWWWWWW


Benku - posté le 14/11/2010 à 21:31:35. (2843 messages postés)

Benku, le prince des ténèbres !

Un peu comme dans FF8 quoi.

Comme tout ceux qui vivent des heures si sombres mais ce n'est pas à eux de décider, tout ce que vous avez à décider, c'est quoi faire du temps qui vous est imparti.


Jejeas - posté le 29/06/2011 à 08:26:11. (25 messages postés)

La neige au Canada c'est froid.

Merci pour le script ! :3

Move that gears up !


TheYukiteru - posté le 29/02/2012 à 18:04:47. (1 messages postés)

A que coucou a tous,je suis nouveau sur RPG Maker VX et j'espère m'entendre avec vous tous ^^(juste pour prévenir j'ai fais les 11 tutos pour le moment et je suis en train de créer mon donjon ainsi que les monstres par dessus le marché dans mon jeu,sa vas j'ai su comment les faire disparraitre et réaparraitre en changeant de map et en revenant,j'ai eu du mal la première fois lol) j'ai un problème donc sur ce script (mais par exemple j'ai eu aucun mal a mettre le script pour faire les combat a la FF,même si j'avoue pas dur de le mettre),le problème en question et qu'a chaque fois ils me disent:

Script 'Gestion Combat' line 251: NoMethodError occured.
Undefined method "set_bases' for #<Array:0x3261b60>

Sa ce produit quand j'essaye d'entré dans le jeu pour le tester, et quand j'enlevé cette fameuse ligne 251 j'arrive a allé sur le jeu donc plus de problème,mais alors que j'allais pour débuter un combat aléatoire (ou par un évènement),sa me met cette fois-ci une autre fenêtre ou sa serais encore un problème de ligne:

Script 'Gestion Combat' line 280: NoMethodError occured.
undefined method 'update_level' for #<Array:0x3261bc0>

Quand je l'ai enlevé celle la aussi de ligne ben le jeu ce lance tranquillement et les combat aussi,mais je ne vois rien qui change (j'ai un niveau bien plus grand que certain monstre mais je ne vois pas on vas dire d'équilibrage entre eux et mes personnages comme dit dans le script pour pas faire du levelling trop facilement)

Donc ben pour moi je ne vois que trois solutions:

-1: Je me trompe d'endrois ou mettre le script ainsi que le nom que j'ai crée pour le script et dans ce cas j'aimerais savoir ou il faut le mettre précisement et avec qu'elle nom si possible.
-2:Il y a une merd sur le script ou alors ya un bug quelconque sur mon ordinateur ou je ne sais trop quoi dessus.
-3:Peut-être que quand j'enlève ces deux lignes sa fonctionne effectivement mais je le vois peut-être pas.

J'aimerais alors savoir s'il vous plait comment régler ce problème ou alors avoir une alternative,mais comme je l'ai dit dans la possible solution trois,j'ai testé pour voir avec ou sans le script avec les deux lignes enlevé,c'étais pareil donc j'en doute.

ps:Je tient a prévenir a tous ceux qui pourrais venir et me dire "o lol kikoo tu sé pa fère sa té tro nul spour lé gamain" je suis *Nouveau* donc *Débutant* dans la programmation et donc sur RPG Maker VX (je dit sa juste car j'ai vue sur certain autres postes que certain disait "noob" etc... a un voir des débutant qui posé une question sur la validation d'un script),donc voila ^^ bonne journé a tous et désolé du pavé mais je voulais faire sa le plus clair possible sur mon problème,en espérant avoir une réponse dans les plus bref délais merci.

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe

Plan du site:

Activité: Accueil | News | Forum | Flash-news | Chat | Commentaires | Galerie | Screen de la semaine | Sorties | Articles perso | Livre d'or | Recherche
Jeux: Index jeux séparés | Top Classiques | Top Originaux | Les autres | 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
Rubriques: Le Wiki | Collection Oniro | Tutoriaux | Scripts | Guides | Gaming-Live | Tests | Making-of | Interviews | Articles perso | OST | L'Annuaire | Divers | Palmarès
Hébergés: Aëdemphia | Fighting Robots Quest | Forstale | Geex | Inexistence | La Légende d'Ibabou | Lije | LoveMaster | Sarcia | Super Mario RPG - Lost Souls
Ressources: Jeux | Programmes | Packs de ressources | Midis | Eléments séparés | Sprites
RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis