Par Zeus81Des 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.
#=================================
# 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.sizefor 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.sizefor 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.sizenext 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