Installer un composant suivant la langue d'installation

Regroupe tous les sujets sur les commandes, les fonctions, les routines, les modifications des fichiers systèmes (ids, 2da...)...
Répondre
Avatar du membre
deratiseur
Rakshasa
Messages : 3841
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne

Installer un composant suivant la langue d'installation

.

Message 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".
C'est officiel, je déteste Github.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
Selphira
Adepte de Grondemarteau
Berserker ogre
Messages : 1035
Enregistré le : dim. 25 juil. 2004, 21:28
Contact :
Statut : En ligne
.

Message par Selphira »

A tester

Code : Tout sélectionner

REQUIRE_PREDICATE ("%LANGUAGE%" STRING_EQUAL_CASE ~english~) @9999 // Langue non supportée
Avatar du membre
deratiseur
Rakshasa
Messages : 3841
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message 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.
Modifié en dernier par deratiseur le lun. 16 déc. 2024, 19:48, modifié 1 fois.
C'est officiel, je déteste Github.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
JohnBob
Statut : Hors ligne
.

Message 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.
Modifié en dernier par JohnBob le lun. 16 déc. 2024, 20:10, modifié 3 fois.
Avatar du membre
deratiseur
Rakshasa
Messages : 3841
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message 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.
C'est officiel, je déteste Github.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
Selphira
Adepte de Grondemarteau
Berserker ogre
Messages : 1035
Enregistré le : dim. 25 juil. 2004, 21:28
Contact :
Statut : En ligne
.

Message 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.
JohnBob
Statut : Hors ligne
.

Message 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.
Modifié en dernier par JohnBob le lun. 16 déc. 2024, 21:16, modifié 4 fois.
rivvers
Araignée géante
Messages : 416
Enregistré le : sam. 21 janv. 2012, 14:36
Statut : Hors ligne
.

Message 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.
Modifié en dernier par rivvers le mar. 17 déc. 2024, 07:42, modifié 2 fois.
Vous êtes à la recherche d'un mod merveilleux ? Trouvez votre bonheur ici.
Vous êtes un artisan moddeur et perfectionniste ? Découvrez une traduction améliorée de DLTCEP .
Vous êtes un explorateur insatiable des mécaniques de l'InfinityEngine ? Plongez dans les secrets du Codex.
Avatar du membre
deratiseur
Rakshasa
Messages : 3841
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message 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.
C'est officiel, je déteste Github.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
JohnBob
Statut : Hors ligne
.

Message par JohnBob »

Rien de certain...

Code : Tout sélectionner

"^~.*FoxMonster.tp2~ #\([0-9]+\) #5\b"
Devrait avoir un \ avant .tp2 :

Code : Tout sélectionner

"^~.*LeModEnQuestion\.tp2~ #\([0-9]+\) #5\b"
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
Selphira
Adepte de Grondemarteau
Berserker ogre
Messages : 1035
Enregistré le : dim. 25 juil. 2004, 21:28
Contact :
Statut : En ligne
.

Message 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
Avatar du membre
deratiseur
Rakshasa
Messages : 3841
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message 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.
C'est officiel, je déteste Github.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
Avatar du membre
deratiseur
Rakshasa
Messages : 3841
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message par deratiseur »

Ok Selphira. Alors ça doit buguer dans le code, parce que voilà ce que rend le PRINT : language_number => -1 => %language_name %
C'est officiel, je déteste Github.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
Répondre

Retourner vers « Programmation WeiDU »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités