❤ 0 Auteur : Tonyryu
Logiciel : RPG Maker VX Ace
Nombre de scripts : 1
Source : https://web.archive.org/web/20190701084719/http://www.tonyryudev.com/joomla3/index.php/menu-mes-developpements/menu-script-rpgmaker/38-vx-ace-sanction-zone-a-risque et https://www.rpgmakervx-fr.com/t12906-script-de-sanction-sur-zone-a-risque
Script ajouté avec l'accord de son auteur.
Principe
Le script permet de marquer la sauvegarde utilisée avec une sanction qui sera appliqué si celle-ci n'est pas levée. Cela a pour objectif de punir un joueur qui voudrait quitter le jeu pendant un combat, ou bien après un choix de scénario qu'il n'accepterait pas.
Installation
A placer dans la section Materials.
Instructions
Pour ajouter une sanction, ajouter une commande script dans un évènement contenant ce code :
1
| DataManager.ajouter_sanction({:exp =>2000}) |
Les différentes sanctions sont :
- :exp : pertes d'expérience
- :level : pertes de niveaux
- :gold : pertes d'argent
En utilisant la valeur -1 pour une sanction, la totalité des gains de celle-ci sont perdu, exemple pour perdre l'intégralité de l'argent :
1
| DataManager.ajouter_sanction({:gold =>-1}) |
Pour mettre plusieurs sanctions, faite comme cela :
1
| DataManager.ajouter_sanction({:exp =>2000,:gold =>3000}) |
Pour annuler la sanction après la section critique :
1
| DataManager.annuler_sanction |
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
| #==============================================================================
# ■ Système de gestion de sanction lors d'une fermeture sans sauvegarde
#------------------------------------------------------------------------------
# Ce script a pour but de sanctionner le joueur quittant la partie sans avoir sauvegardé normalement.
#
# Version Date Auteur Commentaires
# 1.00 28/08/2012 Tonyryu Première release
#
# Attention : Ce script est ma propriété en tant que création et il est donc
# soumis au droit de la propriété intellectuelle.
# En aucun cas, il ne doit être copié ou publié vers un autre forum sans en
# avoir reçu mon accord au préalable.
#
#==============================================================================
#==============================================================================
# ■ Game_System
#------------------------------------------------------------------------------
# Ajout de d'une nouvelle propriété permettant de stocker la sanction
#
# Version Date Auteur Commentaires
# 1.00 28/08/2012 Tonyryu Création
#
#==============================================================================
class Game_System
attr_accessor :sanctions
#--------------------------------------------------------------------------
# * Constructeur (surcharge)
#--------------------------------------------------------------------------
alias sanction_initialize initialize
def initialize
sanction_initialize
@sanctions = {}
end
end
#==============================================================================
# ■ DataManager
#------------------------------------------------------------------------------
# Ajout de méthodes permettant d'ajouter ou retirer une sanction à la sauvegarde
#
# Version Date Auteur Commentaires
# 1.00 28/08/2012 Tonyryu Création
#
#==============================================================================
module DataManager
#--------------------------------------------------------------------------
# ● modifier_sauvegarde
#--------------------------------------------------------------------------
def self.modifier_sauvegarde(pSanctions = {})
if $game_system.save_count > 0
header = {}
contents = {}
File.open(make_filename(last_savefile_index), "rb") do |file|
header = Marshal.load(file)
contents = Marshal.load(file)
end
contents[:system].sanctions = pSanctions
File.open(make_filename(last_savefile_index), "wb") do |file|
Marshal.dump(header, file)
Marshal.dump(contents, file)
end
end
end
#--------------------------------------------------------------------------
# ● ajouter_sanction
#--------------------------------------------------------------------------
def self.ajouter_sanction(pSanctions)
modifier_sauvegarde(pSanctions)
end
#--------------------------------------------------------------------------
# ● annuler_sanction
#--------------------------------------------------------------------------
def self.annuler_sanction
modifier_sauvegarde
end
end
#==============================================================================
# ■ Scene_Load
#------------------------------------------------------------------------------
# Modification de la sortie de Scene_Load lors de la réussite du chargement de la sauvegarde
#
# Version Date Auteur Commentaires
# 1.00 28/08/2012 Tonyryu Création
#
#==============================================================================
class Scene_Load
#--------------------------------------------------------------------------
# * on_load_success (Surcharge)
#--------------------------------------------------------------------------
alias sanction_load_success on_load_success
def on_load_success
sanction_load_success
if $game_system.sanctions.size > 0
SceneManager.goto(Scene_Sanction)
end
end
end
#==============================================================================
# ■ Sanction_Window
#------------------------------------------------------------------------------
# Fenêtre d'affichage de la sanction
#
# Version Date Auteur Commentaires
# 1.00 28/08/2012 Tonyryu Création
#
#==============================================================================
class Sanction_Window < Window_Base
#--------------------------------------------------------------------------
# ● initialize
#--------------------------------------------------------------------------
def initialize
super(0, (Graphics.height / 2) - 150, Graphics.width, 300)
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
contents.clear
texte = "Vous avez quitté le jeu lors d'une section à risque\n"+
"Voici la liste des pertes que vous subissez :\n\n"
$game_system.sanctions.each do |key,value|
case key
when :exp
if value == -1
texte += "Expérience" + " => " + "Tout" + "\n"
else
texte += "Expérience" + " => " + value.to_s + "\n"
end
when :gold
if value == -1
texte += Vocab::currency_unit + " => " + "Tout" + "\n"
else
texte += Vocab::currency_unit + " => " + value.to_s + "\n"
end
when :level
if value == -1
texte += Vocab::level + " => " + "Tous" + "\n"
else
texte += Vocab::level + " => " + value.to_s + "\n"
end
end
end
tabLigne = texte.split("\n")
idxLigne = -1
tabLigne.each do |ligne|
idxLigne += 1
contents.draw_text(0,32 * idxLigne,contents.width, 30, ligne,1)
end
end
end
#==============================================================================
# ■ Scene_Sanction
#------------------------------------------------------------------------------
# Modification de la sortie de Scene_Load lors de la réussite du chargement de la sauvegarde
#
# Version Date Auteur Commentaires
# 1.00 28/08/2012 Tonyryu Création
#
#==============================================================================
class Scene_Sanction < Scene_MenuBase
#--------------------------------------------------------------------------
# * Start Processing
#--------------------------------------------------------------------------
def start
super
SceneManager.clear
@sanction_window = Sanction_Window.new
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
goto_map if Input.trigger?(:C)
end
#--------------------------------------------------------------------------
# * Input [OK]
#--------------------------------------------------------------------------
def goto_map
$game_system.sanctions.each do |key,value|
case key
when :exp
$game_party.members.each do |actor|
if value == -1
value = actor.exp
end
actor.change_exp(actor.exp - value, false)
end
when :gold
if value == -1
value = $game_party.gold
end
$game_party.lose_gold(value)
when :level
$game_party.members.each do |actor|
if value == -1
value = actor.level + 1
end
actor.change_level([1,actor.level-value].max, false)
end
end
end
$game_system.sanctions.clear
SceneManager.goto(Scene_Map)
end
end |
|