Page 1 sur 1

[TRAD] Utilitaire LCC_Trad_Correct pour mettre à jour les correctifs

Posté : dim. 06 août 2017, 13:35
par Freddy_Gwendo


LCC_Trad_Correct : utilitaire de mise à jour des packs correctifs pour les jeux Infinity Engine : version 3.0




Ce petit utilitaire a été conçu pour faciliter la tâche de tous ceux qui maintiennent des patches de correction orthographique pour les jeux Infinity Engine (BG, BG2, IWD2 et PsT).
Repérer et corriger les fautes n'est déjà pas facile, saisir les corrections dans un fichier tra assez pénible, mais devoir écrire toutes les lignes correspondantes dans le setup.tp2 pour que ces corrections soient effectives est carrément barbant.

L'idée m'est donc venue d'écrire une petite procédure WeiDU qui permettrait de le faire automatiquement à partir d'un fichier tra pour faciliter la mise à jour du correctFR pour BG2 par Fossy.


Installation

Comme la plupart des mods, il suffit de décompresser l'archive dans votre répertoire principal de jeu, puis de lancer l'exécutable setup-LCC_Trad_Correct.exe.
Cet utilitaire ne modifiant pas les fichiers du jeu, il est inutile de le désinstaller et il n'est pas référencé dans le fichier WeiDU.log (comme Bambatcher).


Comment ça marche ?

C'est très simple !

a) Vous pouvez choisir deux options de traitement :
  1. La méthode rapide qui suppose que les références soient saisies dans l'ordre ascendant.
  2. La méthode classique, plus longue car elle trie les références par ordre descendant. Cette option permet de travailler avec des fichiers tra non triés.
b) Copiez votre fichier tra de correctifs dans le répertoire LCC_Trad_Correct/francais.

c) Ouvrez le fichier setup-LCC_Trad_Correct.tp2 dans un éditeur de texte.

d) Si nécessaire, modifiez les lignes 41 et 74 (OUTER_SPRINT GW_file "correcfr") en remplaçant le nom du fichier tra par défaut (correcfr) par le vôtre (sans l'extension .tra).

Code : Tout sélectionner

OUTER_SPRINT GW_file "myfile"
e) Sélectionnez les lignes de procédures qui vous intéressent.

Les lignes 53 à 64 et 79 à 90 contiennent la liste des instructions à effectuer pour générer automatiquement une liste d'instructions STRING_SET dans un fichier tpa.
Selon le jeu sur lequel vous travaillez, il vous suffit de "commenter" une ligne (ajouter "//" en début de ligne) pour ne pas la traiter, ou de la "décommenter" (supprimer "//" en début de ligne) pour la traiter.

Par défaut, les traitements sont définis pour BG2 et ToB :

Code : Tout sélectionner

 
[color="#FFFF00"]LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = ToB GW_file END
LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = BG2 GW_file END
ou
LAF ~GW_SPEEDY_CREATE_STRING_SET_TPA~ INT_VAR GW_stringrefs STR_VAR GW_game = ToB GW_file END
LAF ~GW_SPEEDY_CREATE_STRING_SET_TPA~ INT_VAR GW_stringrefs STR_VAR GW_game = BG2 GW_file END[/color]
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = BG GW_file END
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = TOTSC GW_file END
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = PST GW_file END
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = IWD GW_file END
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = IWD2 GW_file END
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = BGEE GW_file END
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = SOD GW_file END
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = BG2EE GW_file END
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = IWDEE GW_file END
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = PSTEE GW_file END
Si vous souhaitez traiter des corrections pour IWD, commentez les deux premières lignes concernant BG2 et ToB (GW_game = ToB et GW_game = BG2) et décommentez la ligne pour IWD (GW_game = IWD) :

Code : Tout sélectionner

 
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = ToB GW_file END
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = BG2 GW_file END
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = BG GW_file END
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = TOTSC GW_file END
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = PST GW_file END
[color="#FFFF00"]LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = IWD GW_file END
ou
LAF ~GW_SPEEDY_CREATE_STRING_SET_TPA~ INT_VAR GW_stringrefs STR_VAR GW_game = IWD GW_file END[/color]
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = IWD2 GW_file END
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = BGEE GW_file END
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = SOD GW_file END
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = BG2EE GW_file END
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = IWDEE GW_file END
//LAF ~GW_CREATE_STRING_SET_TPA~ STR_VAR GW_game = PSTEE GW_file END

Note : cet utilitaire a été conçu pour traiter les fichiers tra des packs correctifs pour BG et BG2 qui utilisent ce type de références : @1056482, @1004589, @1000123, @1000010 et @1000001. Si vous utilisez des références classiques (@1, @12 ... @74106), modifiez les lignes de commande ainsi :

Code : Tout sélectionner


	LAF ~GW_CREATE_STRING_SET_TPA~ [color="#FFFF00"]INT_VAR GW_form = 0[/color] STR_VAR GW_game = ToB GW_file END
	LAF ~GW_CREATE_STRING_SET_TPA~ [color="#FFFF00"]INT_VAR GW_form = 0[/color] STR_VAR GW_game = BG2 GW_file END
ou
	LAF ~GW_SPEEDY_CREATE_STRING_SET_TPA~ INT_VAR [color="#FFFF00"]GW_form = 0[/color] GW_stringrefs STR_VAR GW_game = ToB GW_file END
	LAF ~GW_SPEEDY_CREATE_STRING_SET_TPA~ INT_VAR [color="#FFFF00"]GW_form = 0[/color] GW_stringrefs STR_VAR GW_game = BG2 GW_file END
f) Sauvegardez le fichier tp2, puis lancez l'exécutable setup-LCC_Trad_Correct.exe.

g) La procédure crée automatiquement dans le répertoire LCC_Trad_Correct/lib les fichiers String_Set_nom du jeu.tpa qui contiennent la liste d'instructions STRING_SET permettant de modifier le dialog.tlk en fonction des références contenues dans votre fichier tra.

Exemple :

Code : Tout sélectionner

 
// Extraction automatique des STRING_SET contenus dans le fichier myfile.tra pour le jeu BG2.
	STRING_SET 1 @1000001
	STRING_SET 7 @1000007
	STRING_SET 12 @1000012
	STRING_SET 14 @1000014
	STRING_SET 16 @1000016
	STRING_SET 17 @1000017
	STRING_SET 20 @1000020
	....
// Fichier myfile.tra pour le jeu BG2 : 184 références ont été traitées
h) Vous pouvez alors soit recopier ces instructions dans votre tp2, soit copier les fichiers tpa dans le répertoire de votre pack correctif et les lancer directement dans votre tp2 de la manière suivante :

Code : Tout sélectionner

 
	INCLUDE ~%MOD_FOLDER%/String_Set_BG2.tpa~
	INCLUDE ~%MOD_FOLDER%/String_Set_ToB.tpa~
	...

Historique

Version 3.0 (09.09.2018) :

[INDENT]- Choix de la procédure à utiliser : classique (plus lente) ou rapide (plus rapide).
- Ajout d'une option de procédure de traitement plus rapide.
- Ajout d'un compteur du nombre de références présentes dans le fichier tra.
- Suppression du statut bêta puisque l'utilitaire a été validé.[/INDENT]


Version 2.0 (23.08.2017) :

[INDENT]- Ajout du traitement des références au format @nnnnnn.
- Ajout d'un compteur récapitulatif du nombre de références traitées.[/INDENT]


Version 1.0 (05.08.2017) :

[INDENT]- Sortie initiale.[/INDENT]


Notes :
  1. Comme indiqué en préambule, cet utilitaire a été conçu pour la mise à jour des patches correctifs pour BG et BG2. C'est pourquoi il inclue un traitement permettant de lire le format des références utilisé par ces derniers : @1000001, @1000012, @1000123, @1001234 et @1012345.
    Si vous le souhaitez, je peux rendre cette phase facultative pour pouvoir aussi traiter les références de type @1, @12, @123, @1234, @12345 et @123456.
    >> C'est fait !
  2. Ne connaissant ni linux, ni mac, cette version fonctionne sous windaube. Vous êtes libre de l'adapter pour ces machines et de me la communiquer pour que je mette à jour l'archive jointe.
Amusez-vous bien et n'hésitez pas à publier vos commentaires. ;)

Posté : mer. 23 août 2017, 06:32
par Freddy_Gwendo
Mise à jour de la Version 2.0 :
  • Ajout du traitement des références au format @nnnnnn.
  • Ajout d'un compteur récapitulatif du nombre de références traitées.

Posté : sam. 26 août 2017, 13:46
par Mornagest
Je viens de lancer ton script, qui génère bien deux fichiers (un pour ToB et un pour BG2 ; je vais copier-coller les lignes dans le .tp2 car j'ai peur qu'en faisant des liens entre fichiers, je me plante dans la syntaxe et qu'il ne les retrouve pas :gign: ).

Juste une remarque : tu emploies des caractères accentués dans l'installateur WeiDU (é ou è ou des trucs du genre), et dans les .tpa générés, ce qui fait qu'ils ne sont pas forcément reconnus. Mieux vaut privilégier une absence d'accent pour éviter les mauvaises surprises.

En dehors de ça, ça fonctionne très bien ; je viens d'installer le correctif et vais pouvoir voir comment s'affichent ces fameuses insécables.

Un tout grand merci ! :p arty:

PS : l'encodage du correcfr.tra est bien ISO-8892-1

PPS : le script a travaillé une bonne vingtaine de minutes chez moi :gign:

Posté : sam. 26 août 2017, 19:10
par Freddy_Gwendo
Mornagest a écrit :Je viens de lancer ton script, qui génère bien deux fichiers (un pour ToB et un pour BG2 ; je vais copier-coller les lignes dans le .tp2 car j'ai peur qu'en faisant des liens entre fichiers, je me plante dans la syntaxe et qu'il ne les retrouve pas :gign: ).
Ce n'est pas très compliqué :

Code : Tout sélectionner

BEGIN @0
REQUIRE_PREDICATE GAME_IS ~soa tob tutu tutu_totsc bgt~ @3      // Baldur's Gate II indispensable, avec ou sans Throne of Bhaal, possibilité de Tutu ou BGT

INCLUDE ~%MOD_FOLDER%/String_Set_BG2.tpa~

BEGIN @1
REQUIRE_PREDICATE (GAME_IS ~tob tutu tutu_totsc bgt~) AND (ENGINE_IS ~tob~) @2  // ToB indispensable

INCLUDE ~%MOD_FOLDER%/String_Set_ToB.tpa~
Juste une remarque : tu emploies des caractères accentués dans l'installateur WeiDU (é ou è ou des trucs du genre), et dans les .tpa générés, ce qui fait qu'ils ne sont pas forcément reconnus. Mieux vaut privilégier une absence d'accent pour éviter les mauvaises surprises.
Effectivement, j'ai utilisé références dans le message récapitulatif du compteur et opération dans un autre message d'information. Chez moi ça fonctionne très bien, mais je peux les supprimer si ça pause problème avec certains environnements.

PPS : le script a travaillé une bonne vingtaine de minutes chez moi :gign:
Parce qu'il vérifie toutes les entrées (74106). J'ai dans les cartons une petite idée pour limiter le temps de traitement, mais ça suppose de passer par des expressions régulières que je ne maîtrise pas très bien. Donc je l'ai laissée dans la rubrique Todo list pour l'instant.
Ceci dit, même 20 minutes, ça n'est au final pas très long en regard du temps qu'il te faudrait pour saisir des centaines, voire des milliers de lignes STRING_SET n @10n...

Je viens de le lancer sur l'ancien : 14 minutes.

Code : Tout sélectionner

Fichier correcfr.tra pour le jeu ToB : 512 références ont été traitées
Fichier correcfr.tra pour le jeu BG2 : 4824 références ont été traitées

		Mod Timings
GWCorrec                       882.563

Posté : sam. 26 août 2017, 20:51
par Mornagest
Oh, le temps, c'est pas bien grave, effectivement : on y gagne un temps fou plutôt que de copier-coller sans cesse ces lignes :) c'est juste que ta commande annonce un temps d'une ou deux minutes, alors ça m'a fait rire ^^

En tout cas, merci pour l'utilitaire qui marche nickel et qui est bien utile :cool:

Posté : sam. 26 août 2017, 21:05
par Freddy_Gwendo
C'est parce que je l'ai testé sur mes fichiers tra thématiques. Comme il effectue 74106 boucles, je pensais que le temps de traitement n'allait pas beaucoup changer. J'avais oublié l'écriture physique des fichiers tpa.

D'ailleurs ça m'a donné une idée que je vais tester illico. ^^

Posté : sam. 26 août 2017, 23:36
par Isaya
Si je peux t'aider pour les expressions régulières, n'hésite pas à me demander : j'ai beaucoup pratiqué ces derniers temps. En plus WeiDU a la particularité de nécessiter souvent des \ avant certains caractères en plus par rapport à notepad++.

Par ailleurs, je me posais une question à propos de ton outil et d'une particularité du correctif pour BG1. Si j'ai bien compris, tu te sers du nombre de textes dans BG seul et SoA pour déterminer où commence TotSC ou ToB. Est-ce que c'est pour classer les textes dans tel ou tel composant ? Si c'est le cas, il y aura un cas particulier qui risque de lui échapper pour le correctif BG1. En effet, Mornagest avait constaté qu'un texte d'origine BG seul était modifié lorsque TotSC est installé, de sorte qu'il avait fallu produire deux corrections différentes pour les deux composants (numéro en 2xxxxxx pour TotSC).
Ce cas est exceptionnel et il faudra sans doute continuer à le gérer à la main.

Posté : sam. 26 août 2017, 23:53
par Freddy_Gwendo
Effectivement, j'utilise cette table

Code : Tout sélectionner

ACTION_DEFINE_ASSOCIATIVE_ARRAY GW_trad_strref BEGIN
//	min	 max	==>	jeu
	0,	22185	=>	BG
	22186,	24123	=>	TotSC
	0,	62188	=>	BG2
	62189,	74106	=>	ToB
	0,	34501	=>	IWD
	0,	41421	=>	IWD2
	0,	106496	=>	PsT
	0,	33999	=>	BGEE
	0,	71336	=>	SoD
	0,	103213	=>	BG2EE
	0,	40851	=>	IWDEE
	0,	106833	=>	PsTEE
END
qui détermine automatiquement le nombre de références à vérifier selon le jeu.
Je vais vérifier la référence que tu indiques pour BG1-ToSC et inclure un test pour la traiter. Merci.


Quant aux expressions régulières, l'idée générale est de générer un array à partir du fichier tra.

Code : Tout sélectionner

FOR_EACH ref IN ~123~ ... ~74106~ BEGIN.
L'idée est lire de lire le fichier tra, de repérer les @nnnn= et de remplir un fichier txt qui ne retiendrait que les @nnnn (sous la forme ~@nnnn~ - l'espace final est important). Une fois constitué, il suffirait de la commande suivante pour ne traiter que les références à modifier.

Code : Tout sélectionner

PATCH_FOR_EACH ref IN nomdufichiertext BEGIN
....
END

Posté : dim. 27 août 2017, 09:19
par Freddy_Gwendo
En intégrant la référence STRING_SET ~9589~ @2009589 dans mon traitement, je me suis aperçu que le tp2 indiquait les lignes

Code : Tout sélectionner

	STRING_SET ~22316~ @1022316
	STRING_SET ~22830~ @1022830
	STRING_SET ~22904~ @1022904
alors que leurs références ne sont pas présentes dans le fichier tra.

Par ailleurs, de nombreuses lignes de la partie TotSC (jusqu'à 22186 exclue) devraient faire partie du dialogue de BG. Ceci dit, si elles sont inclues dans le correctif de l'extension pour les mêmes raisons que 9589, confirme-le moi pour que je modifie ma table d'affectation des références selon les jeux.

Sinon, en ajoutant deux petites lignes dans ma fonction, je viens de gagner 2 minutes de traitement pour le correct pack de BG2. ^^

Posté : dim. 27 août 2017, 12:58
par Mornagest
Il est très possible que ces lignes aient fait l'objet d'une correction qui a ensuite été supprimée, par exemple.

Cela démontre la grande utilité de ton script : on évite de coller des lignes non présentes, ou d'en oublier alors que la correction est disponible :)

Posté : dim. 27 août 2017, 16:24
par Isaya
Mornagest a écrit :Cela démontre la grande utilité de ton script : on évite de coller des lignes non présentes, ou d'en oublier alors que la correction est disponible :)
Quand je pense que je t'avais proposé quelque chose de très proche (sans le classement par ordre croissant ni le tri par jeu / extension) il y a plusieurs années mais que tu n'a pas voulu t'en servir parce que c'était du fichier bat donc uniquement pour Windows ! Mais bon, c'est toi qui fait le boulot, donc tu choisis. :p

A ce propos, Freddy, pourquoi as-tu indiqué que c'était pour Windows uniquement ?
Freddy_Gwendo a écrit :Ne connaissant ni linux, ni mac, cette version fonctionne sous windaube. Vous êtes libre de l'adapter pour ces machines et de me la communiquer pour que je mette à jour l'archive jointe.
Vu que c'est en WeiDU, ça doit fonctionner aussi bien sous Linux. Il doit simplement suffire d'avoir WeiDU et WeInstall dans le path et de lancer la commande comme pour installer un mod. Cf. le readme de BG1 NPC Project, par exemple.

Autrement, une suggestion pour adopter un principe KISS :
Freddy_Gwendo a écrit :La valeur de la variable GW_sref est définie par défault comme "LCC" pour traiter les fichiers tra au format Pach correctif de BG2. Il vous suffit de lui assigner n'importe quelle autre valeur pour que la fonction traite les références @1, @12...
au lieu d'utiliser une variable qu'il faut fixer avec une valeur autre que LCC, pourquoi ne pas utiliser une variable entière indiquant l'offset à appliquer : 1000000 (valeur par défaut, comme l'est LCC actuellement) ou 0.
Freddy_Gwendo a écrit :Quant aux expressions régulières, l'idée générale est de générer un array à partir du fichier tra.

Code : Tout sélectionner

FOR_EACH ref IN ~123~ ... ~74106~ BEGIN.
L'idée est lire de lire le fichier tra, de repérer les @nnnn= et de remplir un fichier txt qui ne retiendrait que les @nnnn (sous la forme ~@nnnn~ - l'espace final est important). Une fois constitué, il suffirait de la commande suivante pour ne traiter que les références à modifier.

Code : Tout sélectionner

PATCH_FOR_EACH ref IN nomdufichiertext BEGIN
....
END
J'ai un petit doute, alors je vais poser le problème tel que je le comprends : il s'agit de filtrer un fichier tra, donc des lignes pouvant les formes suivantes :
@nnn = ~texte~
@nnn = ~texte~ [son]
@nnn = ~texte~ ~texte f~
@nnn = ~texte~ [son] ~texte f~ [son]
où ~texte~ et ~texte~ peuvent déborder sur plusieurs lignes du fichier.
afin de ne conserver que @nnn, de l'entourer de tildes et d'ajouter un espace après pour les séparer dans la ligne PATCH_FOR_EACH.

Testé dans notepad++ à partir du fichier tra fraîchement posté par Fossy : remplacer

Code : Tout sélectionner

(@[0-9]+)[ \t]*=[ \t]*~[^~]*~[ \t]*([\[][^\]]*[\]]|)[ \t]*(~[^~]*~|)[ \t]*([\[][^\]]*[\]]|)$
par

Code : Tout sélectionner

~\1~ 
Autrement dit, elle s'attend à trouver
  • @
  • suivi d'un ou plusieurs chiffres,
  • éventuellement d'espacement (espace(s)/tabulation(s)),
  • du signe =,
  • éventuellement d'espacement,
  • d'un texte entre tildes (incluant tout caractère, sauf tilde ; il faut donc que ce soit syntaxiquement correct, cf. TraChecker),
  • éventuellement d'espacement,
  • soit d'un texte entre crochets ou de rien du tout,
  • éventuellement d'espacement,
  • soit d'un texte entre tildes ou de rien du tout,
  • éventuellement d'espacement,
  • soit d'un texte entre crochets ou de rien du tout,
  • d'une fin de ligne (c'est à dire plus rien après, à ne pas confondre avec un saut de ligne)
La séquence de remplacement comporte un espace après le tilde final.

En lui faisant traiter tout le fichier ("Remplacer tout"), j'obtiens
~@1000001~
~@1000007~
~@1000012~
...
~@1007377~

~@1007378~
...
~@1074055~
~@1074060~
Cela n'élimine pas les sauts de ligne ni les lignes vides. Il y a un espace à chaque ligne après le tilde fermant.

Je ne sais pas comment tu comptes utiliser ça dans WeiDU et si ces limitations sont rédhibitoires.

Vis-à-vis des expressions régulière, il faut typiquement ajouter un \ avant chaque parenthèse et barre verticale (cf. le chapitre 14 de la doc Weidu ou un mod tel qu'Item Revisions, description_updates.tra). L'avantage est que WeiDU sait inclure les sauts de ligne dans ses expressions régulières (cf. le fichier cité).
En principe, il te faudra utiliser ceci :

Code : Tout sélectionner

\(@[0-9]+\)[ %TAB%]*=[ %TAB%]*~[^~]*~[ %TAB%]*\([\[][^\]]*[\]]\|\)[ %TAB%]*\(~[^~]*~\|\)[ %TAB%]*\([\[][^\]]*[\]]\|\)[%LNL%%MNL%%WNL%]*
J'ai ajouté à la fin l'intégration d'un nombre quelconque de sauts de ligne consécutifs. Le cas échéant, tu pourrais ajouter un éventuel espacement [ %TAB%]* avant le saut de ligne s'il risque d'y avoir de tels caractères en fin de ligne.
Bien entendu, le tilde sera banni comme séparateur de contenu de chaîne dans WeiDU mais tu devrais pouvoir utiliser le guillemet. Au pire il te reste la forme avec 5 tildes accolés (cf. la définition de String dans la documentation WeiDU).

Ce que j'ignore, c'est la commande que tu comptes utiliser et comment elle va se comporter vis-à-vis de l'aspect "répéter à tout le fichier", autrement cette expression régulière ne traitera que la première ligne.
Tiens-moi au courant en cas de difficulté.

Posté : dim. 27 août 2017, 20:16
par Freddy_Gwendo
D'abord merci pour tes remarques.

Effectivement ton choix de variable est plus judicieux que le mien et en plus il va me permettre de simplifier mon code. ^^

Quant aux versions Linux ou Mac, je pensais à une archive différente comme le proposent certains mods. Mais c'est vraiment un détail.


Passons au cœur du problème. J'ai testé ton expression régulière dans notepad++ et c'est magique : ça fonctionne nickel.

En revanche, avec WeiDU j'ai un problème de compilation : Invalid_argument("index out of bounds")

En investiguant un peu, je me suis aperçu que WeiDU compilait parfaitement jusqu'à

Code : Tout sélectionner

  REPLACE_TEXTUALLY "\(@[0-9]+\)[ %TAB%]*=[ %TAB%]*~[^~]*~[ %TAB%]*\([\[][^\]]*[\]]\|\)[ %TAB%]*" "\1 "
C'est après que ça plante.

Ceci dit, il y a une chose que je ne comprends pas : à ce stade, je suis sensé avoir supprimé la référence masculine (avec le son). Mais voici ce que ça donne :

Code : Tout sélectionner

@1000001 ~Non, désolée, ça ne me dit rien.~
@1000007 
@1000012 
@1000014 
@1000016 
@1000017 
@1000020 
@1000022 
@1000025 
@1000026 
@1000027 
@1000036 
@1000039 
@1000041 
@1000044 
@1000049 
@1000077 
@1000083 
[color="#FFFF00"]@1000084 [RAELIS15][/color]
@1000093 
@1000096 
[color="#FFFF00"]@1000109 [RAELIS17][/color]
@1000118 
@1000122 
@1000123 
@1000124 
[color="#FFFF00"]@1000125 [RAELIS18][/color]
@1000131 ~Des pierres primaires et planaires et - et...de quoi parles-tu, Haer'Dalis, je suis perdue.~
Le fichier son de la réplique masculine n'a pas été supprimé.

Posté : dim. 27 août 2017, 23:36
par Isaya
Essaie avec ça, pour voir s'il n'aime pas la séquence "tout caractère sauf ]" :

Code : Tout sélectionner

REPLACE_TEXTUALLY "\(@[0-9]+\)[ %TAB%]*=[ %TAB%]*~[^~]*~[ %TAB%]*\([\[][A-Za-z0-9_]*[\]]\|\)[ %TAB%]*" "\1 "
en pariant sur le fait que les noms de fichiers son sont formés de lettres et de chiffres, voire d'un souligné. On pourra toujours compléter s'il y a d'autres caractères dans certains.

Si cela ne donne rien, tu peux aussi remplacer "[\[]" par "\[" et "[\]]" par "\]" : en principe ça devrait faire pareil puisque je n'ai mis à chaque fois qu'un seul caractère entre [ et ] (le crochet ouvrant ou fermant, précédé de \ pour lui indiquer que je veux le caractère et que ce n'est pas le symbole de groupe d'une expression régulière) et que je n'ai demandé qu'une seule instance puisque je n'ai pas mis de symbole * ou + pour indiquer une infinité possible.

Posté : lun. 28 août 2017, 06:53
par Freddy_Gwendo
Alors, on commence par la bonne nouvelle pour Fossy : mon intuition était la bonne, avec ce traitement, la création du fichier tpa ne prend plus qu'un peu moins de 3 minutes pour le nouveau correct pack de BG2, contre plus de 14 pour l'ancien.

Autre bonne nouvelle, pour Isaya : ta modif a permis de débloquer WeiDU. Cependant, j'ai dû ajouter un espace pour des fichiers son mal orthographiés, comme
@1004109=~Là où Dynahéir s'engage, ma lame s'engage.~ [MINSC 28]
@1004111=~Ne vous approchez pas*! Dynahéir est sous ma protection*!~ [MINSC 30]
@1004120=~Dynahéir*! Noooon*! Vous serez vengée*!~ [MINSC 41]
Au passage, Fossy, il faudra nettoyer les espaces insécables !

En revanche, il subsiste un problème pour les lignes de ce type :
@1013385=~Les affaires ont plutôt mal marché ces derniers temps à cause des problèmes dans le Sud. Mais j'ai entendu dire que les mines de Nashkel avaient rouvert. Quelque héros s'est chargé d'éliminer la cause du fléau.~ [FRIENDLY ARM/BARTENDER/BENTLY POST]
@1013659=~Re-bonjour. Je suppose que vous appréciez Bérégost dans toute sa piètre splendeur*?~ [TOWNSFOLK, MALE, BEREGOST 5 (BORLAND) POST HIGH CHAR.]
ce qui donne :

Code : Tout sélectionner

...~1012744~ ~1012745~ ~1012811~ ~1012812~ ~1012813~ ~1012814~ ~1013146~ ~1013161~ ~1013166~ ~1013175~ ~1013176~ ~1013249~ ~1013385~ [FRIENDLY ARM/BARTENDER/BENTLY POST]
~1013482~ ~1013659~ [TOWNSFOLK, MALE, BEREGOST 5 (BORLAND) POST HIGH CHAR.]
~1013725~ ~1013755~ ~1013779~ ~1013790~ ~1013814~ ~1013845~ ~1013922~ ~1013930~ ~1013931~ ~1013948~ ~1013952~ ~1014148~ ~1014160~ ~1014162~ ~1014251~ ~1014275~
...
En attendant de les gérer avec l'expression régulière, ne faudrait-il pas les corriger directement ? En effet, la plupart sont des scories de BG1 et le fichier US ne leur attribue aucun son. Ces corrections ont été faites pour ajouter le son à la version masculine qui n'en avait pas, contrairement à la version féminine. Mais comme ces répliques ne concernent pas BG2, pourquoi les corriger de cette manière ?

A ce propos, je serais partisan d'un nettoyage systématique des sons du fichier dialog.tlk.

Posté : lun. 28 août 2017, 19:21
par Mornagest
Freddy_Gwendo a écrit :Alors, on commence par la bonne nouvelle pour Fossy : mon intuition était la bonne, avec ce traitement, la création du fichier tpa ne prend plus qu'un peu moins de 3 minutes pour le nouveau correct pack de BG2, contre plus de 14 pour l'ancien.
Eh, la référence au temps mis était juste un clin d'œil ;) mais avoir un script optimisé est toujours plus agréable ; bravo à tous les deux :)
Freddy_Gwendo a écrit :Au passage, Fossy, il faudra nettoyer les espaces insécables !

Je plaide coupable : je pensais être reparti d'une version antérieure aux ajouts des insécables et je ne les ai donc pas enlevés ! Je le fais de ce pas.
Freddy_Gwendo a écrit :A ce propos, je serais partisan d'un nettoyage systématique des sons du fichier dialog.tlk.
Que veux-tu dire par "nettoyage" ?

Posté : lun. 28 août 2017, 19:29
par Freddy_Gwendo
Par nettoyage, j'entends ceci par exemple :

Code : Tout sélectionner

@1004109=~Là où Dynahéir s'engage, ma lame s'engage.~ [MINSC 28] --> Soit on le supprime car c'est du BG1, soit on corrige [MINSC28]
@1004111=~Ne vous approchez pas*! Dynahéir est sous ma protection*!~ [MINSC 30]
@1004120=~Dynahéir*! Noooon*! Vous serez vengée*!~ [MINSC 41] 
Quant à ceux de ce type :
@1013385=~Les affaires ont plutôt mal marché ces derniers temps à cause des problèmes dans le Sud. Mais j'ai entendu dire que les mines de Nashkel avaient rouvert. Quelque héros s'est chargé d'éliminer la cause du fléau.~ [FRIENDLY ARM/BARTENDER/BENTLY POST]
@1013659=~Re-bonjour. Je suppose que vous appréciez Bérégost dans toute sa piètre splendeur*?~ [TOWNSFOLK, MALE, BEREGOST 5 (BORLAND) POST HIGH CHAR.]
Pour ne reprendre que le second, ils correspondent aux entrées suivantes :
dialog.tlk

13659 = ~ Re-bonjour. Je suppose que vous appréciez Berégost dans toute sa piètre splendeur ?~

dialogF.tlg

13659 = ~[TOWNSFOLK, MALE, BEREGOST 5 (BORLAND) POST HIGH CHAR.] Re-bonjour. Je suppose que vous appréciez Berégost dans toute sa piètre splendeur ?~

et dialog US

13659 = ~Hello again. I trust you are enjoying Beregost in all its meager splendor?~
Je ne sais pas pour vous, mais pour moi, c'est du grand n'importe quoi. :shok:

Posté : lun. 28 août 2017, 20:20
par Mornagest
Ça n'a pas vraiment d'importance, si ? Les indications entre [] ne sont de toute façon pas affichée dans les dialogues.

Posté : lun. 28 août 2017, 20:57
par Freddy_Gwendo
Mais quel intérêt d'avoir des fichiers tlk erronés ?

Posté : lun. 28 août 2017, 21:06
par Mornagest
Certes, mais dans ce cas, plein d'autres trucs sont erronés, et eux se voient :p

Posté : lun. 28 août 2017, 22:04
par Isaya
Pour ce qui concerne ces commentaires entre crochets, peut-être destinés aux traducteurs, je pense qu'il vaudrait mieux ne pas les sortir du texte entre tildes car, dans le pire cas, les 8 premiers caractères pourraient correspondre à un fichier son et provoquer son utilisation dans le jeu. Ce choix passé est étrange.

Autrement, pour les supprimer il suffit d'ajouter les caractères en question dans la liste de caractères entre crochets. Il est nécessaire d'utiliser "\." pour le cas du point, sinon cela prendra le sens de "n'importe quel caractère", ce qui n'est pas du tout souhaitable.

Pourrais-tu poster l'extrait du code qui traite le fichier, afin que je puisse faire des essais afin de trouver la forme d'expression régulière qui ne plaît pas à WeiDU, s'il te plaît ? Est-ce un simple COPY du fichier avec en patch le REPLACE_TEXTUALLY ?

Posté : mar. 29 août 2017, 07:26
par Freddy_Gwendo
Voici les lignes concernées :

Code : Tout sélectionner

OUTER_SPRINT GW_file "correcfr"

COPY ~%MOD_FOLDER%/francais/%GW_file%.tra~ ~%MOD_FOLDER%/francais/%GW_file%.txt~
  REPLACE_TEXTUALLY "@\([0-9]+\)[ %TAB%]*=[ %TAB%]*~[^~]*~[ %TAB%]*\(\[[A-Za-z0-9_ ]*\]\|\)[ %TAB%]*\(~[^~]*~\|\)[ %TAB%]*\(\[[A-Za-z0-9_ ]*\]\|\)[%LNL%%MNL%%WNL%]*" "~\1~ "
ce qui donne le fichier txt suivant :
► Afficher le texte
Notes :
  1. Finalement, dans un souci de rapidité, je supprime le "@", ce qui me permet de me passer de plusieurs lignes de patch dans la fonction, et accessoirement d'en accélérer le temps de traitement. ;)
  2. Malgré les scories de [] restantes, le script WeiDU fonctionne parfaitement et produit les STRING_SET adéquats puisque je ne recherche que les références numériques sous la forme "~n~".

Posté : jeu. 12 oct. 2017, 20:38
par Mornagest
J'ai trouvé une erreur dans le nombre de lignes pour BG1 et TotSC. Normalement, le nombre de lignes pour BG1 est plus faible que celui que tu as indiqué (22185). Je ne connais pas précisément le nombre de lignes pour BG1 seul, mais c'est plutôt vers 20700...

edit : apparemment, la première ligne de TotSC est 20730 (Calahan, de la Barbe d'Ulgoth, nous parle).

Posté : jeu. 12 oct. 2017, 21:01
par Freddy_Gwendo
J'ai utilisé les infos que m'a données Argent77 puisque je n'ai plus les versions physiques du jeu. Si quelqu'un en dispose et peut me confirmer la limite du fichier dialog.tlk pour BG, il me suffit de modifier une ligne de la bibliothèque.

D'ici-là, tu peux modifier les lignes 106 et 107 du fichier GW_STRING_SET.tpa avec la valeur que tu souhaites. ;)

Posté : jeu. 12 oct. 2017, 21:03
par Mornagest
Boh, j'ai contourné le souci en décalant les lignes apparues sous celle qui indique que TotSC est nécessaire pour appliquer le correctif ^^ mais je vais modifier le tableau pour la prochaine fois.

Posté : jeu. 12 oct. 2017, 22:39
par Isaya
Le dernier texte du fichier dialog.tlk de BG1 seul + son patch 1.4315 est bien 22185. Par contre, en prenant celui de la version 1.4309 (sortie du jeu en France, a priori) il s'arrête à 20729. Effectivement les textes entre les deux semblent provenir de TotSC. Quant à savoir pourquoi Bioware a fourni cet état intermédiaire, mystère. Sans doute certaines corrections du patch piochaient des choses du moteur ou du système de jeu en cours d'amélioration pour TotSC.

Posté : jeu. 12 oct. 2017, 22:49
par Freddy_Gwendo
Merci pour ces précisions.
À priori, comme les joueurs actuels utilisent une version dotée du dernier patch ou bien dématérialisée, je conserve ces valeurs.
À moins que ça ne te pose un problème, Fossy ? Après tout, tu dois bien être le seul à en avoir besoin. ;)

Posté : ven. 13 oct. 2017, 08:56
par Mornagest
:p mais j'ai TotSC aussi, hein.

Non, pas de souci pour ma part. Je me suis dit que je pourrais reprendre les descriptions d'objets de BG2 pour les injecter dans le correctif de BG1 (bien entendu, dans la mesure où c'est pertinent), et comme j'ai voulu utiliser ton script pour comparer mon correcfr.tp2 avec celui qui serait généré, j'ai remarqué cette différence de lignes.

Mais du coup, pour le correctif, je dois quand même placer la limite entre les deux jeux dans le correcfr.tp2 à 20729 ou pas ? :$

Posté : mar. 04 sept. 2018, 01:26
par Freddy_Gwendo
Bonne nouvelle !

En travaillant sur BG2EE, j'ai découvert une commande de WeiDU qui permet de gagner un temps fou dans la recherche de chaînes de caractères dans un fichier tra. Je l'ai adaptée à l'outil et... le traitement de ton dernier fichier correcfr.tra est passé de 65 s. à 22 s.

S'il t'intéresse, je le mettrai en partage après avoir modifié le readme. ;)

Posté : mar. 04 sept. 2018, 10:58
par Mornagest
Cool :) bien joué ! Bien sûr que je suis intéressé, je m'en sers depuis que tu l'as sorti, ça fait gagner un temps énorme plutôt que de copier-coller manuellement les numéros de lignes dans le .tp2 ^^

Merci beaucoup :)

Posté : dim. 09 sept. 2018, 06:23
par Freddy_Gwendo
Fichier et manuel d'utilisation mis à jour dans le premier message. ;)