Page 1 sur 1
Installer un composant suivant la langue d'installation
Posté : lun. 16 déc. 2024, 17:19
par deratiseur
Est ce que c'est possible ?
Genre :
Installer A si la langue choisie est "Anglais".
installer B si la langue choisie est "Allemand".
Re: Installer un composant suivant la langue d'installation
Posté : lun. 16 déc. 2024, 17:27
par Selphira
A tester
Code : Tout sélectionner
REQUIRE_PREDICATE ("%LANGUAGE%" STRING_EQUAL_CASE ~english~) @9999 // Langue non supportée
Re: Installer un composant suivant la langue d'installation
Posté : lun. 16 déc. 2024, 19:45
par deratiseur
En fait je pense que ça va être plus compliqué que ça. La condition de langue n'est pas appliqué au mod en lui même mais à un autre mod.
Précisément :
Copier l'objet X
SI le mod machintruc à été installé en français, ALORS copier l'objet Y.
Peut être est-ce faisable en checkant le nom d'un objet. Par exemple :
SI "Z_ModdIt.itm" a pour nom "Note du maître" (CASE_SENSITIVE) alors copier l’objet Y.
Re: Installer un composant suivant la langue d'installation
Posté : lun. 16 déc. 2024, 20:06
par JohnBob
Tu as un sujet dans le même genre ici.
J'ai proposé un workaround de débutant dans le deuxième post donc n'y prête pas trop attention mais regarde la réponse d'argent77 juste après, il lit le language directement dans le weidu.log.
C'est encore un peu trop complexe pour moi, à voir si ça te donne une piste.
Re: Installer un composant suivant la langue d'installation
Posté : lun. 16 déc. 2024, 21:00
par deratiseur
Merci pour le lien. J'ai posé mon problème directement dans le sujet, comme ça parle d'un requête similaire peut être que j'aurais une réponse. Parce que j'avoue que si le script d'argent77 lit le langage installé, comment l'utiliser pour "IF "le script confirme que c'est installé en français" ALORS.....", ça me dépasse.
Re: Installer un composant suivant la langue d'installation
Posté : lun. 16 déc. 2024, 21:02
par Selphira
Le plus simple, je pense, est de faire un seul composant quelle que soit la langue.
Et dans le composant, tu effectues ta vérification avec la fonction d'Argent77 pour toutes les langues que tu veux supporter.
Re: Installer un composant suivant la langue d'installation
Posté : lun. 16 déc. 2024, 21:04
par JohnBob
Code : Tout sélectionner
REQUIRE_PREDICATE ( MOD_IS_INSTALLED ~LeModEnQuestion.tp2~ ~X~ )
Peut-être en gardant simplement le premier block avec seulement le français :
Code : Tout sélectionner
// Language folder names listed in the order of LANGUAGE definitions in the mod.
ACTION_DEFINE_ARRAY languages BEGIN
"french"
END
// Fetching language index from the WeiDU.log
OUTER_SET language_number = "-1"
COPY "WeiDU.log" "WeiDU.log"
REPLACE_EVALUATE CASE_INSENSITIVE
"^~.*LeModEnQuestion\.tp2~ #\([0-9]+\) #5\b"
BEGIN
PATCH_IF (IS_AN_INT "MATCH1") BEGIN
SET language_number = MATCH1
END
END
"%MATCH0%"
BUT_ONLY IF_EXISTS
Et le deuxième block avec ta modif ou non selon le resultat du block précédent :
Code : Tout sélectionner
ACTION_IF (language_number >= 0) BEGIN
COPY ~TonMod/bam/Dref.bam~ ~override~
END ELSE BEGIN
COPY ~TonMod/bam/Dreg.bam~ ~override~
END
Il faudra
peut-être un END supplémentaire à la fin.
Re: Installer un composant suivant la langue d'installation
Posté : lun. 16 déc. 2024, 21:59
par rivvers
Il est important que la liste `languages` reflète l'ordre des langues possibles du mod. Sinon ça ne fonctionnera pas.
Elle permet d'associer une langue à un chiffre.
Code : Tout sélectionner
ACTION_DEFINE_ARRAY languages BEGIN
"english" "german" "russian" "french" "polish"
END
Le premier bloc sert à savoir quel chiffre a été choisi, ce chiffre est stocké dans `language_number`.
Grâce à ce chiffre et la liste `languages` on va pouvoir retrouver la langue.
Le bloc peut être réutilisé tel quel.
Pour la fin, il faut vérifier que la langue choisie est le français :
Code : Tout sélectionner
ACTION_IF (language_number >= 0) AND ($languages("%language_number%") STRING_EQUAL "french") BEGIN
COPY ~TonMod/bam/Dref.bam~ ~override~
END ELSE BEGIN
COPY ~TonMod/bam/Dreg.bam~ ~override~
END
Mon WeiDU étant approximatif, il y a sans doute des trucs à corriger mais la logique me paraît bonne.
Re: Installer un composant suivant la langue d'installation
Posté : mar. 17 déc. 2024, 16:26
par deratiseur
Merci d'essayer de m'aider. Ça refuse de marcher.
Le mod "Moddie the Vixxen" propose un compagnon renarde. Mais comme à part le texte tout correspond à un loup, le texte en français se référence à une louve. Donc pour installer d'autres portrait, j'ai prévu une renarde et une louve, et je tente d'installer les portraits de renards, sauf si c'est installation en français, dans ce cas installation du portait de louve.
le code que j'ai tenté d'après vos remarques :
Code : Tout sélectionner
BEGIN @4 DESIGNATED 4 LABEL Px_MTWK_Moddie1
REQUIRE_COMPONENT ~FoxMonster.tp2~ 0 @5000
ACTION_DEFINE_ARRAY languages BEGIN
"english" "german" "russian" "french"
END
OUTER_SET language_number = "-1"
COPY "WeiDU.log" "WeiDU.log"
REPLACE_EVALUATE CASE_INSENSITIVE
"^~.*FoxMonster.tp2~ #\([0-9]+\) #5\b"
BEGIN
PATCH_IF (IS_AN_INT "MATCH1") BEGIN
SET language_number = MATCH1
END
END
"%MATCH0%"
BUT_ONLY IF_EXISTS
ACTION_IF (language_number >= 0) AND ($languages("%language_number%") STRING_EQUAL "french") BEGIN
ACTION_IF GAME_IS ~BG2 TOB BGT~ THEN BEGIN
COPY ~Derats_Mods_Tweaker/Moddie/BG2/Loup~ ~override~
END
ACTION_IF GAME_IS ~BG2EE EET~ THEN BEGIN
COPY ~Derats_Mods_Tweaker/Moddie/EE/loup~ ~override~
END
END ELSE BEGIN
ACTION_IF GAME_IS ~BG2 TOB BGT~ THEN BEGIN
COPY ~Derats_Mods_Tweaker/Moddie/BG2/Renard~ ~override~
END
ACTION_IF GAME_IS ~BG2EE EET~ THEN BEGIN
COPY ~Derats_Mods_Tweaker/Moddie/EE/Renard~ ~override~
END
END
Mais c'est toujours le renard qui est copié. je ne suis jamais arrivé à faire copier le loup.
Re: Installer un composant suivant la langue d'installation
Posté : mar. 17 déc. 2024, 17:23
par JohnBob
Rien de certain...
Devrait avoir un \ avant .tp2 :
C'est bien possible que le deuxième bloc overwrite tout pour les EE :
Code : Tout sélectionner
END ELSE BEGIN
ACTION_IF GAME_IS ~BG2 TOB BGT~ THEN BEGIN
COPY ~Derats_Mods_Tweaker/Moddie/BG2/Renard~ ~override~
END
ACTION_IF GAME_IS ~BG2EE EET~ THEN BEGIN
COPY ~Derats_Mods_Tweaker/Moddie/EE/Renard~ ~override~
END
END
Il devrait avoir un ELSE BEGIN supplémentaire :
Code : Tout sélectionner
END ELSE BEGIN
ACTION_IF GAME_IS ~BG2 TOB BGT~ THEN BEGIN
COPY ~Derats_Mods_Tweaker/Moddie/BG2/Renard~ ~override~
END ELSE BEGIN
ACTION_IF GAME_IS ~BG2EE EET~ THEN BEGIN
COPY ~Derats_Mods_Tweaker/Moddie/EE/Renard~ ~override~
END
END
Re: Installer un composant suivant la langue d'installation
Posté : mar. 17 déc. 2024, 17:40
par Selphira
Tu peux aussi vérifier la valeur de tes variables avec un PRINT, et t'assurer que toutes ont les valeurs attendues.
Par exemple comme ceci
Code : Tout sélectionner
OUTER_SPRINT language_name $languages("%language_number%")
PRINT "language_number => %language_number% => %language_name %"
Je te suggère aussi de bien indenter ton code pour une lisibilité plus aisée.
Code : Tout sélectionner
ACTION_IF (language_number >= 0) AND ($languages("%language_number%") STRING_EQUAL "french") BEGIN
ACTION_IF GAME_IS ~BG2 TOB BGT~ THEN BEGIN
COPY ~Derats_Mods_Tweaker/Moddie/BG2/Loup~ ~override~
END
ACTION_IF GAME_IS ~BG2EE EET~ THEN BEGIN
COPY ~Derats_Mods_Tweaker/Moddie/EE/loup~ ~override~
END
END ELSE BEGIN
ACTION_IF GAME_IS ~BG2 TOB BGT~ THEN BEGIN
COPY ~Derats_Mods_Tweaker/Moddie/BG2/Renard~ ~override~
END
ACTION_IF GAME_IS ~BG2EE EET~ THEN BEGIN
COPY ~Derats_Mods_Tweaker/Moddie/EE/Renard~ ~override~
END
END
Re: Installer un composant suivant la langue d'installation
Posté : mar. 17 déc. 2024, 18:17
par deratiseur
Toujours pas. Même avec ton ELSE en plus

C'est con, c'est tout ce qui bloque la sortie de mon nouveau mod. Comme en plus mes portaits de renard/loup ne collent pas vraiment au standard de BG2, je me demande si je ne vais pas juste zapper ce composant.
Re: Installer un composant suivant la langue d'installation
Posté : mar. 17 déc. 2024, 18:25
par deratiseur
Ok Selphira. Alors ça doit buguer dans le code, parce que voilà ce que rend le PRINT : language_number => -1 => %language_name %