Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker


Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Jeux: puie z / Jeux: Citymaime - Chapitre 1 / Jeux: Mer, îles et fous / News: Du neuf dans le making / News: Muma|Rope est disponible en (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

345 connectés actuellement

30732297 visiteurs
depuis l'ouverture

2275 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Lumen

Zarok

Offgame

Kingdom Ultimate

ConsoleFun

Tous nos partenaires

Devenir
partenaire



Extracteur de message 1.01

[Outil d'aide au développeur] Script-outil pour extraire, corriger, puis ré-implanter les dialogues de son jeu RmXP sous format de fichier texte.

Script pour RPG Maker XP
Ecrit par Krosk
Publié par Krosk (lui envoyer un message privé)
Signaler un script cassé

❤ 0

Il est parfois fort fatiguant de fouiller les évènements de son projet pour relire les messages et en corriger les fautes. Sans compter qu'il est facile de louper des messages.

L'outil que voici, l'Extracteur de Messages, abrégé EDM, est un script-outil qui vous permet d'extraire les messages de votre projet, sous forme de fichier texte. Il est ainsi beaucoup plus aisé de parcourir les fichiers textes pour retravailler les dialogues, et les fichiers textes peuvent aussi être passés sous correcteur orthographique.

Une fois le travail effectué, l'EDM se charge d'appliquer vos modifications dans votre projet.


Attention :

Citation:

# Quelques précautions s'imposent tout de même, car ce
# n'est pas un outil magique ! Ce script est sensible car
# il modifie directement les données de votre jeu !
# Il faut faire attention à ne pas l'utiliser n'importe comment,
# sous peine de voir vos textes décalés ou supprimés.



Les explications sont en entête du script, lisez bien tout le paragraphe pour éviter de vous retrouver avec vos dialogues perdus à cause d'un manque de précaution... Mais le script est fonctionnel, écrit et testé par moi, et je l'utilise.

N'hésitez pas à poser des questions en cas de besoin.

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
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
# -----------------------------------------------------
#   EDM - Extracteur de Messages - RmXP
#   Par Krosk - v1.01
# -----------------------------------------------------
# Ce script à placer au dessus de Main vous permet d'extraire
# le texte de vos messages, dans vos events, sous forme de
# fichier texte .txt (codage Unicode/UTF-8), éditable par tout
# logiciel de traitement de texte, et qui permet de
# faciliter la correction orthographique entre autre.
#
# Quelques précautions s'imposent tout de même, car ce
# n'est pas un outil magique ! Ce script est sensible car
# il modifie directement les données de votre jeu !
# Il faut faire attention à ne pas l'utiliser n'importe comment,
# sous peine de voir vos textes décalés ou supprimés.
#
# -------------------------------------
#   A propos de l'encodage de texte
# -------------------------------------
# Les fichiers textes créés par EDM sont codés sous le format
# UTF-8, le seul format compatible à ma connaissance entre
# les chaînes de caractère sous RMXP et nos accents français.
# Lorsque vous éditez ces fichiers, pensez s'il vous plaît
# à conserver cet encodage, sous peine de perdre vos accents,
# lorsque vous importez vos textes modifiés.
#
# Sous Bloc Note : L'enregistrement devrait se faire sous le format
#                  UTF-8 automatiquement. Vous pouvez quand même vous
#                  en assurer en faisant "Fichier", "Enregistrer sous",
#                  et en sélectionnant l'encodage UTF-8.
#
# Sous OpenOffice Writer : Après édition, l'enregistrement doit être manuel,
#                          en faisant "File", "Save As", et dans le champ
#                         "Type", assurez vous de prendre "Text encoded (.txt)".
#
# Sous les autres éditeurs : Enregistrez sous le format Unicode ou UTF-8.
#                            N'enregistrez pas sous le format ANSI.
#
# -------------------------------------
#   Comment utiliser ce script
# -------------------------------------
# Collez ce script EDM au dessus de main.
#
# EDM ACTIVATE : réglez à true pour lancer EDM. Vous aurez
#                une interface au démarrage de votre projet.
# EDM_MAP : Numéro ID de la map à réécrire.
#
# - Extraire le texte du jeu
#   Le texte du jeu sera extrait dans le dossier EDMString du répertoire
#   de votre jeu.
#   Chaque carte qui contient du texte aura son propre fichier texte
#   associé, avec dedans l'ensemble des évènements messages, dans un
#   certain ordre.
#   EDM fermera automatiquement le projet à la fin de la tâche.
#
# - Ecrire le texte dans le jeu
#   Le texte de vos évènements messages sera réécrit à partir
#   des fichiers textes extraits.
#   
#   Pour plus de contrôle :
#   Si vous spécifiez EDM_MAP avec un numéro ID, seule cette carte sera corrigée.
#   Si vous spécifiez EDM_MAP avec une liste d'ID, les maps respectives seront
#           corrigées.
#   Si vous écrivez EDM_MAP = 0, toutes les maps seront corrigées.
#   Si vous écrivez EDM_MAP = -1, la fonction d'écriture sera désactivée
#           pour éviter les écritures non intentionnelles.   
#
#   EDM fermera automatiquement le projet en test à la fin de la tâche.
#   Il vous faudra fermer votre projet sous l'éditeur RMXP pour observer
#   les changements.
#
# - Créer un Backup
#   Vous pouvez sauvegarder l'état de vos messages.
#   Les textes seront sauvegardés dans EDMBackup.
#   C'est exactement la même fonction que l'extraction de texte.
#
# - Restaurer à partir d'un Backup
#   En cas d'erreur de manipulation, vous pouvez charger le contenu du
#   Backup, pour restaurer l'état de vos messages.
#   C'est la même fonction que "Ecrire le texte dans le jeu", excepté
#   qu'il prend le Backup comme source.
#
# Une fois que vous avez fini, vous pouvez désactiver EDM en écrivant false
# devant EDM_ACTIVATE.
#
# Le script n'est pas intrusif, et ne modifiera pas vos autres scripts.
# N'ayez pas peur en voyant ce script réécrire vos variables $fontface, ...
# il ne les réécrit que lorsque vous utilisez EDM.
#
# --------------------------------------
#   Comment éditer vos fichiers textes
# --------------------------------------
# EDM extrait les lignes de message de vos évènements et les organise
# par fichier qui porte le nom MapXXX.txt, dans le dossier EDMString/.
#
# Chaque fichier texte est une succession de paragraphes, chaque paragraphe est
# un évènement "message".
#
# Les paragraphes sont de cette forme :
#     ____________________#EDMTAG#START#2#1
#     Bienvenue à l'auberge.
#     Voulez-vous prendre une chambre ?
#
# Une ligne d'entête pour signaler le début d'un paragraphe, suivie
# de quelques lignes de texte qui correspondent aux lignes de message
# dans l'éditeur d'évènement RMXP.
#
#
# Pour éditer le texte, il vous suffit de l'ouvrir, de corriger les lignes de
# texte et d'enregistrer le fichier (voir - A propos de l'encodage de texte -).
#
# Vous pouvez ajouter ou supprimer des lignes de texte au sein d'un paragraphe.
# Par exemple :
#
#     ____________________#EDMTAG#START#2#1
#     Bienvenue à l'auberge.
#     Voulez-vous prendre une chambre ?
#     ____________________#EDMTAG#START#2#1
#     Nous avons plusieurs tarifs.
#     C'est pour combien de personnes ?
#
# Après modification :
#
#     ____________________#EDMTAG#START#2#1
#     Bienvenue à l'auberge.
#     Nous avons actuellement des chambres de libre.
#     Voulez-vous prendre une chambre ?
#     ____________________#EDMTAG#START#2#1
#     C'est pour combien de personnes ?
#
# EDM se charge de recréer correctement vos évènements de message.
#
# *****
# ATTENTION ! Une précaution est à prendre quand même, veuillez éviter d'ajouter
# plus de 4 lignes à un paragraphe. Je ne les prend pas en compte.
# Si vous voulez créer un paragraphe supplémentaire, faites le dans l'éditeur
# d'évènement RMXP et re-exportez vos textes.
#
# *****
# ATTENTION ! EDM n'est pas capable d'insérer un nouvel évènement message,
# et de créer un nouveau paragraphe ! Il n'est capable que de modifier
# les paragraphes existants et les redimensionner !
#
# Il s'agit avant tout d'un outil pour faciliter la correction orthographique
# et éventuellement la traduction, mais en aucun cas il ne remplace l'éditeur
# de texte !
#
# --------------------------------------------------------------------------
 
EDM_ACTIVATE = true
EDM_MAP = -1
 
if EDM_ACTIVATE
 
  $fontface = "Arial"
  $fontsize = 22
  $data_system        = load_data("Data/System.rxdata")
  $game_system = Game_System.new
 
  loop do
    edt_read = false
    edt_write = false
    backup = false
    dummy= Window_Command.new(440, ["EDM - Extracteur de Messages - Par Krosk"])
    dummy.x = 100
    dummy.y = 112
    dummy.active = false
    dummy.index = -1
    window = Window_Command.new(320, ["Fermer EDM",
      "Extraire le texte du jeu", "Insérer le texte après extraction",
      "Créer un Backup", "Restaurer à partir d'un Backup"])
    window.x = 160
    window.y = 176
    loop do
      Graphics.update
      Input.update
      window.update
      if Input.trigger?(Input::B)
        exit
        return
      end
      if Input.trigger?(Input::C)
        case window.index
        when 0
          exit
        when 1
          edt_read = true
          backup = false
        when 2
          edt_write = true
          backup = false
        when 3
          edt_read = true
          backup = true
        when 4
          edt_write = true
          backup = true
        end
        break
      end
    end
    window.dispose
    dummy.dispose
   
    if edt_read
      if not backup
        dummy = Window_Command.new(440, [
          "Extraire le texte du jeu dans ./EDMString/"])
      else
        dummy = Window_Command.new(440, [
          "Création d'une sauvegarde dans ./EDMBackup/"])
      end
      dummy.x = 100
      dummy.y = 112
      dummy.active = false
      dummy.index = -1
      window = Window_Command.new(320, ["Annuler",
        "Confirmer l'extraction du texte"])
      window.x = 160
      window.y = 176
      window.index = 1 if backup
      utf_tag = ["EF", "BB", "BF"].pack("H2H2H2")
     
      loop do
        Graphics.update
        Input.update
        window.update
        if Input.trigger?(Input::C) or backup
          case window.index
          when 0
            break
          when 1
            map_infos = load_data("Data/MapInfos.rxdata")
            for map_id in map_infos.keys
              map_data = load_data(sprintf("Data/Map%03d.rxdata", map_id))
              dir_string = backup ? "EDMBackup" : "EDMString"
              string = sprintf(dir_string + "/Map%03d.txt", map_id)
              Graphics.update
              file = nil
              for event in map_data.events
                for i in 0...event[1].pages.size
                  for command in event[1].pages<i>.list
                    if command.code == 101
                      if file == nil
                        if not File.exist?(dir_string)
                          Dir.mkdir(dir_string)
                        end
                        file = File.open(string, "w")
                        file.write(utf_tag + string+"\n")
                      end
                      file.write(
                        "____________________#EDMTAG#START##{event[0]}##{i}\n")
                      file.write(command.parameters[0]+"\n")
                    end
                    if command.code == 401
                      file.write(command.parameters[0]+"\n")
                    end
                  end
                end
              end
              file.close if file != nil
              file = nil
            end
           
            dummy2 = Window_Command.new(500, ["Extraction terminée."])
            dummy2.x = 70
            dummy2.y = 272
            dummy2.active = false
            dummy2.index = -1
            loop do
              Graphics.update
              Input.update
              if Input.trigger?(Input::C)
                exit
              end
            end
           
           
            exit
          end
        end
        if Input.trigger?(Input::B)
          break
        end
      end
      window.dispose
      dummy.dispose
    end
   
    if edt_write
      if not backup
        case EDM_MAP
        when 0
          dummy = Window_Command.new(400, [
            "Ecrire les textes de toutes les cartes."])
          window = Window_Command.new(320, ["Annuler",
            "Confirmer l'écriture du texte"])
        when -1
          dummy = Window_Command.new(400, ["Désactivé. Modifiez EDM_MAP."])
          window = Window_Command.new(320, ["Retour"])
        else
          if EDM_MAP.type == Array
            dummy = Window_Command.new(400, [
              "Ecrire les textes des cartes d'ID:#{EDM_MAP.inspect}."])
          else
            dummy = Window_Command.new(400, [
              "Ecrire les textes de la carte ID:#{EDM_MAP}."])
          end
          window = Window_Command.new(320, ["Annuler",
            "Confirmer l'écriture du texte"])
        end
      else
        dummy = Window_Command.new(400, ["Restauration du Backup."])
        window = Window_Command.new(320, ["Restauration...", "... en cours"])
      end
      dummy.x = 120
      dummy.y = 112
      dummy.active = false
      dummy.index = -1
     
      window.x = 160
      window.y = 176
      window.index = 1 if backup
     
      loop do
        Graphics.update
        Input.update
        window.update
        if Input.trigger?(Input::C) or backup
          case window.index
          when 0
            break
          when 1
            map_infos = load_data("Data/MapInfos.rxdata")
            for map_id in map_infos.keys
              map_string = sprintf("Data/Map%03d.rxdata", map_id)
              map_data = load_data(map_string)
              string = sprintf("EDMString/Map%03d.txt", map_id)
              string = sprintf("EDMBackup/Map%03d.txt", map_id) if backup
              if not File.exist?(string)
                next
              end
             
              if (EDM_MAP.type == Fixnum and map_id == EDM_MAP) or
                  (EDM_MAP.type == Array and EDM_MAP.include?(map_id)) or
                  (EDM_MAP.type == Fixnum and EDM_MAP == 0) or backup
                file = File.open(string, "r")
                # Suppression des tags
                file.readline
                # Buffer
                buffer = []
                ib = -1
                file.readlines.each { |line|
                    if line.include?("EDMTAG")
                      ib += 1
                      buffer[ib] = []
                    else
                      buffer[ib].push(line.chomp)
                    end
                }
                ib101 = -1
                for event in map_data.events
                  for page in event[1].pages
                    for i in 0...page.list.size
                      # Nettoyage préliminaire des paragraphes
                      if page.list<i>.code == 401
                        page.list<i> = nil
                      end
                    end
                    page.list.compact!
                    for command in page.list
                      # Début de message
                      if command.code == 101
                        ib101 += 1
                        command.parameters[0] = buffer[ib101].shift
                        # Construction du reste du paragraphe
                        while not buffer[ib101].empty?
                          page.list.insert(page.list.index(command) + 1,
                            RPG::EventCommand.new(401, 0, [buffer[ib101].pop]))
                        end
                      end
                    end
                  end
                end
                file.close
               
                map_file = File.open(map_string, "wb")
                Marshal.dump(map_data, map_file)
                map_file.close
              end
            end
           
            dummy2 = Window_Command.new(500, [
              "Écriture terminée. Fermez votre projet sous RMXP."])
            dummy2.x = 70
            dummy2.y = 272
            dummy2.active = false
            dummy2.index = -1
            loop do
              Graphics.update
              Input.update
              if Input.trigger?(Input::C)
                exit
              end
            end
           
          end
        end
        if Input.trigger?(Input::B)
          break
        end
      end
      window.dispose
      dummy.dispose
    end
   
  end
end



Script similaire :
https://www.rpg-maker.fr/index.php?page=scripts&id=98

Krosk, le 20 novembre 2008 a dit:

Pour les utilisateurs, j'ai en moins la gestion des messages hors évènement, mais en plus une gestion dynamique de la taille des paragraphes.






Tsuika (visiteur non enregistré) - posté le 15/11/2008 à 15:46:46

❤ 0

C'est sympa, mais si tu t'étais renseigné, tu aurais su qu'un logiciel adapté existe déjà, il s'appelle DreaMaker.

Il est même sur Oniro : http://www.rpg-maker.fr/index.php?page=programmes&type=4


Krosk - posté le 15/11/2008 à 15:58:15 (123 messages postés)

❤ 0

Sympa, mais ce que tu ne sais pas, c'est que DreaMaker n'est pas pour RMXP. Et mon script l'est ;).

Ce script est bien sûr sur l'idée originale de King Kadelfek, concepteur de DreaMaker. J'ai repris son idée (en bien moins élaboré) et adapté pour un usage sur RMXP.


ytodd - posté le 16/11/2008 à 12:24:09 (1548 messages postés)

❤ 0

MAKE OR DIE

Ou alors plus simple, quand on sait pas écrire on prend un dico.

http://consciencium.fr/


Kitu14 - posté le 16/11/2008 à 12:30:22 (423 messages postés)

❤ 0

Un dico ? Qui a besoin d'un dico ? :inter


Rockmik - posté le 16/11/2008 à 15:39:24 (12689 messages postés)

❤ 0

En ligne

Bon boulot Krosk !

Les ramens, c'est délicieux.


Tsuika - posté le 17/11/2008 à 00:43:07 (814 messages postés)

❤ 0

J'aime le café.

Citation:

Sympa, mais ce que tu ne sais pas, c'est que DreaMaker n'est pas pour RMXP.



Ah oui c'est pas faux, j'avais pourtant souvenir que c'était le cas. Ma mémoire me fait déjà défaut, c'est réjouissant :p .


SuperHerosLink - posté le 20/11/2008 à 00:51:42 (31 messages postés)

❤ 0

Projet en cours: un rpg sans titre mais qui va être cool^^

Pas mal

La terre est ronde, donc comment puis-je marcher normalent?


Zeus81 - posté le 20/11/2008 à 04:42:48 (11071 messages postés)

❤ 0

Ce script me rappelle vaguement quelque chose, mais quoi ?


Krosk - posté le 20/11/2008 à 17:05:47 (123 messages postés)

❤ 0

Curieusement, j'ai fait une recherche dans les scripts avec "message", "texte", "extraire", blabla... pour voir si quelque chose du genre existait, mais j'ai pas pensé à "correcteur orthographe". Je connaissais pas ton script, donc tu est le premier sur ce terrain ^^.

Pour les utilisateurs, j'ai en moins la gestion des messages hors évènement, mais en plus une gestion dynamique de la taille des paragraphes. Pour le reste les 2 scripts ont la même fonction.


VRP024 - posté le 22/02/2021 à 06:04:07 (24 messages postés)

❤ 0

Pour avoir utilisé les deux scripts, Krosk sois béni le tiens n'induit pas en erreur et fait parfaitement le boulot! La c'est pas du bidouillage, c'est génial 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 - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers