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
| #=================================
# Correcteur d'orthographe
# Script créé par Zeus81
#=================================
#
#
# Comment ça marche ?
#
# Tout d'abord il faut le lancer en écrivant dans un script $scene = Scene_Scan2.new
# Ensuite vous faites Analyser les messages.
# Le script va générer un fichier texte dans lequel seront listés tous les messages utilisés dans le jeu.
# Ensuite il y deux façons de corriger les fautes d'orthographes dans votre jeu.
#
# 1ère méthode (manuelle) :
# Vous détectez les fautes avec un logiciel (Word par exemple).
# Puis vous lisez le code du début de la ligne pour savoir d'où vient le message et vous allez le corriger directement dans le jeu.
# Exemple d'une ligne :
# 0/012/037/003/072/0 : J'est mal aux doigt.
# Le code se lit de la manière suivante :
# - Le premier chiffre indique le type d'évènement :
# 0 -> Evènement d'une map
# 1 -> Evènement commun
# 2 -> Evènement de combat
# - Le trois chiffres suivants indiquent l'id de la map (entre 001 et 999).
# Si c'est un évènement commun ou de combat il y a 000.
# - Le trois chiffres suivants indiquent l'id de l'évènement.
# - Le trois chiffres suivants indiquent la page de l'évènement (moins un).
# - Le chiffres suivants indiquent la ligne dans les commandes de l'évènement (moins un).
# - Le dernier chiffre indique le type du message :
# 0 -> Affichage d'un message
# 1 -> Premier choix dans une proposition de choix
# 2 -> Deuxième choix dans une proposition de choix
# 3 -> Troisième choix dans une proposition de choix
# 4 -> Quatrième choix dans une proposition de choix
# Dans cet exemple on a donc :
# type d'évènement : 0 -> Evènement d'une map
# id de la map : 012 -> Map n°12
# id de l'évènement : 037 -> Evènement n°37
# page : 003 -> Page n°4
# ligne : 072 -> Ligne n°73
# type du message : 0 -> Affichage d'un message
#
# 2ème méthode (automatique) :
# Vous corrigez les fautes dans le fichier avec votre logiciel.
# Vous enregistrez le fichier corrigé avec un codage Unicode UTF-8 en le renommant "Messages OK.txt".
# Le codage UTF-8 est le codage utilisé par RPG Maker, on est donc obligé de le respecter.
# Vous fermez RPG Maker afin qu'il n'interfère pas dans les modifications.
# Vous relancez votre jeu à partir du Game.exe
# Vous ré-exécutez le script mais cette fois vous faites Corriger les messages.
# Le script va remplacer les messages erronés du jeu par les messages corrigés du fichier "Messages OK.txt".
class Window_Scan2 < Window_Selectable
def initialize
super(0, 0, 640, 480)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Comic Sans MS"
@item_max = 5
@index = 0
refresh
end
def refresh
self.contents.clear
self.contents.fill_rect(0, 48, 608, 1, normal_color)
self.contents.fill_rect(0, 400, 608, 1, normal_color)
self.contents.fill_rect(304, 64, 1, 320, normal_color)
self.contents.fill_rect(404-50, 240, 200, 1, normal_color)
self.contents.font.size = 28
self.contents.font.color = knockout_color
self.contents.draw_text(0, 0, 608, 48, "Correcteur d'orthographe", 1)
self.contents.font.size = 20
self.contents.font.color = normal_color
self.contents.draw_text(0, 64, 300, 24, "Pas à pas", 1)
self.contents.draw_text(432-50, 128, 176, 32, "Evènements des maps")
self.contents.draw_text(432-50, 160, 176, 32, "Evènements communs")
self.contents.draw_text(432-50, 192, 176, 32, "Evènements des combats")
self.contents.draw_text(400-50, 256, 208, 32, "Analyser les messages", 1)
self.contents.draw_text(400-50, 288, 208, 32, "Corriger les messages", 1)
self.contents.font.size = 18
self.contents.draw_text(0, 88, 300, 24, "- Sélectionner les évènements à analyser")
self.contents.draw_text(0, 112, 300, 24, "- Faire analyser les messages")
self.contents.draw_text(0, 136, 300, 24, "- Corriger les fautes d'orthographe")
self.contents.draw_text(0, 160, 300, 24, " à l'aide d'un logiciel de traitement de texte")
self.contents.draw_text(0, 184, 300, 24, "- Enregistrer le fichier corrigé au format unicode")
self.contents.draw_text(0, 208, 300, 24, " 'UTF-8' en le renommant 'Messages OK.txt'.")
self.contents.draw_text(0, 232, 300, 24, " Pour enregistrer au bon format faire")
self.contents.draw_text(0, 256, 300, 24, " 'Enregistrer sous' 'Format *.txt' 'Codage UTF-8'")
self.contents.draw_text(0, 280, 300, 24, " (Ca y est même dans le bloc note)")
self.contents.draw_text(0, 304, 300, 24, "- Fermer RPG Maker puis lancer le jeu avec le 'Game.exe'")
self.contents.draw_text(0, 328, 300, 24, "- Faire corriger les messages")
self.contents.draw_text(0, 352, 300, 24, "- Et c'est fini")
draw_states
end
def draw_states
draw_state(408-50, 128, $scene.map_events_scan)
draw_state(408-50, 160, $scene.common_events_scan)
draw_state(408-50, 192, $scene.battle_events_scan)
end
def draw_state(x, y, state)
if state == true
color = Color.new(255, 0, 0)
else
color = Color.new(128, 128, 128)
end
self.contents.fill_rect(x+3, y+11, 10, 10, Color.new(29, 82, 129))
self.contents.fill_rect(x+4, y+12, 8, 8, Color.new(255, 255, 255))
self.contents.fill_rect(x+5, y+13, 6, 6, color)
end
def update_cursor_rect
y = @index*32 + 128
y += 32 if @index > 2
self.cursor_rect.set(400-50, y, 208, 32)
end
end
class Scene_Scan2
attr_reader :map_events_scan
attr_reader :common_events_scan
attr_reader :battle_events_scan
def initialize
GC.disable
Thread.new do
loop do
Graphics.update
sleep(1)
end
end
$data_system = load_data("Data/System.rxdata")
$game_system = Game_System.new
@map_events_scan = true
@common_events_scan = true
@battle_events_scan = true
end
def main
@scan_window = Window_Scan2.new
Graphics.transition
loop do
update
Graphics.update
Input.update
end
end
def update
@scan_window.update
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
case @scan_window.index
when 0
@map_events_scan = !@map_events_scan
when 1
@common_events_scan = !@common_events_scan
when 2
@battle_events_scan = !@battle_events_scan
when 3
start_scan
when 4
start_correction
end
@scan_window.draw_states
end
end
def read_data
@data_common_events = load_data("Data/CommonEvents.rxdata")
@data_troops = load_data("Data/Troops.rxdata")
@data_maps = []
for map_id in 1..999
filename = sprintf("Data/Map%03d.rxdata", map_id)
next if FileTest.exist?(filename) == false
@data_maps[map_id] = load_data(filename)
end
end
def save_corrected_data
for map_id in 1..999
next if @data_maps[map_id] == nil
save_data(@data_maps[map_id], sprintf("Data/Map%03d.rxdata", map_id))
end
save_data(@data_common_events, "Data/CommonEvents.rxdata")
save_data(@data_troops, "Data/Troops.rxdata")
end
def start_scan
read_data
@messages = []
@messages[0] = "\357\273\277Ce fichier a été enregistré avec un codage Unicode UTF-8.\n"
@messages[1] = "Si vous voyez des caractères bizarres à la place des accents, c'est que votre logiciel ne lit pas ce codage.\n"
@messages[2] = "Pour convertir le fichier en codage standard ouvrez le avec le bloc note et faites \"Enregistrer sous\" avec un codage ANSI\n"
@messages[3] = "Le fichier corrigé final devra être enregistré avec un codage Unicode UTF-8.\n"
@messages[4] = "Ce fichier devra impérativement s'appeler \"Messages OK.txt\".\n"
@messages[5] = "Ne modifiez pas le code au début de chaque ligne.\n"
@messages[6] = "Ne rajoutez aucune ligne.\n"
@messages[7] = "Ne supprimez pas ces lignes.\n\n"
check_maps if @map_events_scan == true
check_common_events if @common_events_scan == true
check_battle_events if @battle_events_scan == true
file = File.open("Messages.txt", "w")
file.write(@messages.to_s)
file.close
print(" L'analyse est terminé !\n",
" Le résultat se trouve dans le fichier\n",
"\"Messages.txt\" dans le dossier de votre jeu.")
end
def check_maps
for map_id in 1..999
next if @data_maps[map_id] == nil
for event_id in @data_maps[map_id].events.keys.sort
for page_id in 0...@data_maps[map_id].events[event_id].pages.size
for list_id in 0...@data_maps[map_id].events[event_id].pages[page_id].list.size
name = sprintf("%01d/%03d/%03d/%03d/%03d/", 0, map_id, event_id, page_id, list_id)
check_event_command(@data_maps[map_id].events[event_id].pages[page_id].list[list_id], name)
end
end
end
end
end
def check_common_events
for event_id in 1...@data_common_events.size
for list_id in 0...@data_common_events[event_id].list.size
name = sprintf("%01d/%03d/%03d/%03d/%03d/", 1, 0, event_id, 0, list_id)
check_event_command(@data_common_events[event_id].list[list_id], name)
end
end
end
def check_battle_events
for event_id in 1...@data_troops.size
for page_id in 0...@data_troops[event_id].pages.size
for list_id in 0...@data_troops[event_id].pages[page_id].list.size
name = sprintf("%01d/%03d/%03d/%03d/%03d/", 2, 0, event_id, page_id, list_id)
check_event_command(@data_troops[event_id].pages[page_id].list[list_id], name)
end
end
end
end
def check_event_command(event, name)
if event.code == 101 or event.code == 401
@messages.push(name+"0 : "+event.parameters[0]+"\n")
elsif event.code == 102
for i in 0...event.parameters[0].size
@messages.push(name+(i+1).to_s+" : "+event.parameters[0][i]+"\n")
end
end
end
def start_correction
if FileTest.exist?("Messages OK.txt") == false
print("Le fichier \"Messages OK.txt\" est introuvable !\n",
"La correction n'a donc pas pu s'effectuer !!!")
return
end
if $DEBUG == true
print("Pour corriger votre projet doit être fermé !")
return
end
file = File.open("Messages OK.txt", "r")
@messages = file.readlines
file.close
if @messages[0][0, 3] != "\357\273\277"
print("Le fichier \"Messages OK.txt\" n'a pas été enregistré en codage Unicode \"UTF-8\".")
return
end
read_data
if correction_scan == false
print("La correction automatique a été annulé !")
return
else
save_corrected_data
print("La correction automatique est terminée !")
end
end
def correction_scan
for i in 8...@messages.size
next if @messages[i][0, 1] == "\n"
type = @messages[i][0, 1].to_i
map_id = @messages[i][2, 3].to_i
event_id = @messages[i][6, 3].to_i
page_id = @messages[i][10, 3].to_i
j = 3
6.times do
break if @messages[i][14+j, 1] == " "
j += 1
end
list_id = @messages[i][14, j].to_i
message_type = @messages[i][13+j, 1].to_i
erreur = false
erreur |= (type > 2)
erreur |= (@messages[i][1, 1] != "/")
erreur |= (@messages[i][5, 1] != "/")
erreur |= (@messages[i][9, 1] != "/")
erreur |= (@messages[i][13, 1] != "/")
erreur |= (@messages[i][12+j, 1] != "/")
erreur |= (@messages[i][14+j, 3] != " : ")
if erreur == true
print("Le code d'une ligne a été modifié.")
return false
end
@messages[i][0, 17+j] = ""
@messages[i][-1, 1] = ""
case type
when 0
event = @data_maps[map_id].events[event_id].pages[page_id].list[list_id]
when 1
event = @data_common_events[event_id].list[list_id]
when 2
event = @data_troops[event_id].pages[page_id].list[list_id]
end
if message_type == 0 and (event.code == 101 or event.code == 401)
event.parameters[0] = @messages[i]
elsif message_type > 0 and message_type < 5 and event.code == 102
event.parameters[0][message_type-1] = @messages[i]
else
print("Une ligne a été rajoutée.")
return false
end
end
return true
end
end |