Oniromancie: Scripts - Correcteur d'orthographe


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

Jeux: Monster World RPG / Jeux: Pif et Hercule / News: Mise à jour de RPG Maker 2003 / Tutos: Création de charset / Jeux: FAYLINAWA /

Chat  (25 connectés)

Bienvenue
visiteur !








Statistiques

Liste des
membres


Contact

71 connectés actuellement

9264099 visiteurs
depuis l'ouverture

787 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

Rpg Fusion

Creamaker

Dragon Making

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




Correcteur d'orthographe
Script pour RPG Maker XP
Ecrit par zeus81

Des fois quand je teste des jeux je me dis "Mon Dieu ce n'est pas possible, même à l'école primaire je faisais moins de fautes d'orthographe !"
Etant donné que d'apprendre le français à 1 million d'illettrés serait trop long, j'ai fais ce script pour vous aider à corriger vos fautes d'orthographe.


Portion de code:



#=================================

# 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]+"\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[0, 1] == "\n"
type = @messages[0, 1].to_i
map_id = @messages[2, 3].to_i
event_id = @messages[6, 3].to_i
page_id = @messages[10, 3].to_i
j = 3
6.times do
break if @messages[14+j, 1] == " "
j += 1
end
list_id = @messages[14, j].to_i
message_type = @messages[13+j, 1].to_i
erreur = false
erreur |= (type > 2)
erreur |= (@messages[1, 1] != "/")
erreur |= (@messages[5, 1] != "/")
erreur |= (@messages[9, 1] != "/")
erreur |= (@messages[13, 1] != "/")
erreur |= (@messages[12+j, 1] != "/")
erreur |= (@messages[14+j, 3] != " : ")
if erreur == true
print("Le code d'une ligne a été modifié.")
return false
end
@messages[0, 17+j] = ""
@messages[-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
elsif message_type > 0 and message_type < 5 and event.code == 102
event.parameters[0][message_type-1] = @messages
else
print("Une ligne a été rajouté.")
return false
end
end
return true
end

end




Jimmos - posté le 01/02/2011 à 11:08:17. (1 messages postés)

On fait comment pour qu'il marche ? Oo :D

Edit : je sais comment faire marcher un script mais je vois pas ou ils fait un correcteur ! ^^


krashx - posté le 06/02/2011 à 14:43:53. (457 messages postés)

Lis les commentaires en haut du script...


parasoft - posté le 23/08/2011 à 13:16:27. (191 messages postés)

« Tant qu’il y aura des hommes, il y aura la guerre. » Albert Einstein

Merci, très utile !

Découvrez Détective Alice (un jeu d'enquête non linéaire) ! Téléchargez maintenant la démo de Détective Alice !


Reonmineur - posté le 10/01/2014 à 22:29:00. (19 messages postés)

ile meu fo seu scripte xD


Elverion - posté le 08/11/2014 à 20:32:36. (14 messages postés)

Hello tous, desole pour le necropost, mais voila, j'aurais vraiment vraiment besoin de ce script sous version VX ace, Est-ce possible ???

Encore merci d'avance !!!


spurdo - posté le 21/02/2015 à 20:58:43. (3 messages postés)

Pour moi, le script fonctionne à moitié. Explication:

J'insère le script comme d'hab au-dessus de main, puis je suis les instructions. J'appel le script avec $scene = Scene_Scan2.new comme expliqué. J'analyse les messages des évènements de map et les évènements communs, et il me créer sans problème le fichier txt.
Jusque là, pas de trouble.

Par la suite, je corrige le fichier (sans rajouter ni supprimer de ligne), j'enregistre le tout en codage utf-8, sous le nom: Messages OK.txt.

Après je démarre game.exe (donc sans projet ouvert) puis je réappel le script. Cette fois-ci je clique sur "analyser les messages", et puis, soudain, une erreur s'affiche:

image

Tout aide est apprécié (même si cest un vieux post)


zeus81 - posté le 21/02/2015 à 22:42:32. (11072 messages postés)

Vieux bug d'oniro qui corrompt les scripts.

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
#=================================
# 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é.")
        return false
      end
    end
    return true
  end
 
end


spurdo - posté le 22/02/2015 à 22:32:52. (3 messages postés)

Ok merci, jvais réessayer avec ce nouveau code.

1) Je tente de recorriger les messages, même procédure

2) Bon, une erreur différente cette fois-ci

image


zeus81 - posté le 23/02/2015 à 18:11:45. (11072 messages postés)

Ça c'est un fichier de map qui est corrompu.
Pour savoir lequel tu peux modifier la ligne 185 :
@data_maps[map_id] = load_data(filename) rescue p map_id


spurdo - posté le 28/02/2015 à 20:16:53. (3 messages postés)

J'ai réessayé et tout fonctionne très bien. Merci pour ce script très utile!

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