Page 1 sur 1

[BGT] Comment compiler des parties d'un dialogue seulement si BGT est installé ?

Posté : dim. 04 sept. 2016, 23:37
par Freddy_Gwendo
J'ai écrit un dialogue dont certaines parties se passent dans la Porte de Baldur si BGT est installé. Sinon, elles ne sont jamais lancées.

Par facilité, je compile tout dans le même fichier.

Je me demandais s'il existait une commande simple qui permettait de zapper des blocs à compiler selon certains critères (en l’occurrence ici l’installation de BGT) ? Par principe, je préfère éviter de scinder le dialogue en deux parties, la première n'étant compilée que si BGT est installé. ;)

Posté : lun. 05 sept. 2016, 23:02
par Isaya
Je ne connais pas de tel mécanisme. Il me semble peu probable qu'un développeur se soit embêté à coder une chose pareille alors qu'il existe quelques façons de s'y prendre avec l'existant (compiler les blocs BGT, qui seront inaccessibles pour cause de condition non respectée, ou découper en deux fichiers, voire avoir deux fichiers d selon le type de jeu), pourvu qu'on n'ait pas autant de principes que toi. ;)
Autrement tu concatènes les deux fichiers avant de compiler le dialogue, et le tour est joué : une seule compilation. :whistle3:

Posté : lun. 05 sept. 2016, 23:12
par Freddy_Gwendo
Isaya a écrit :Autrement tu concatènes les deux fichiers avant de compiler le dialogue, et le tour est joué : une seule compilation. :whistle3:
Ça, ça me plaît ! :)

Je vais me jeter sur la doc, histoire de vérifier que des trucs genre "EXTEND_TOP" fonctionnent bien avec les fichiers .d, dans ce cas de figure.

Posté : mar. 06 sept. 2016, 21:53
par Isaya
EXTEND_TOP traite des fichiers au format du jeu. Ici il s'agit plutôt que modifier un fichier texte. Voici une solution possible (non testée) :

Code : Tout sélectionner

COPY ~monmod/dialogues/dlgBG2.d~ ~override/dlgComplet.d~
APPEND ~monmod/dialogues/dlgBGT.d~ ~override/dlgComplet.d~
COMPILE ~override/dlgComplet.d~
APPEND ne travaille qu'avec des fichiers du jeu, il faudrait donc que le fichier auquel ajouter soit déjà dans override.

Posté : mar. 06 sept. 2016, 22:35
par Freddy_Gwendo
Merci pour l'info : j'allais justement m'y plonger.

C'est vrai que j'ai déjà un peu galéré pour compléter des fichiers non gérés par le jeu (cf. ici).

Je teste ce point ce soir et je vous tiens au courant.

Posté : mar. 06 sept. 2016, 23:25
par Freddy_Gwendo
Ça fonctionne, mais j'ai préféré utiliser la commande WeiDU APPEND_FILE :

Code : Tout sélectionner

ACTION_IF GW_BGT BEGIN

	COPY ~%MOD_FOLDER%/temp/GWGwendy_BGT.d~ ~%MOD_FOLDER%/dlg/GWGwendy.d~

    		APPEND_FILE ~%MOD_FOLDER%/temp/GWGwendy.d~

	BUT_ONLY

	OUTER_SET strref_Gwendolynette = RESOLVE_STR_REF(@3590000)

END ELSE BEGIN

	COPY ~%MOD_FOLDER%/temp/GWGwendy.d~ ~%MOD_FOLDER%/dlg/GWGwendy.d~

	OUTER_SET strref_Gwendolynette = RESOLVE_STR_REF(@3590001)

END

COMPILE  ~%MOD_FOLDER%/dlg/GWGwendy.d~
Merci pour ton concours, comme toujours fructueux. ;)

Posté : mer. 07 sept. 2016, 21:36
par Isaya
Ah oui, c'est beaucoup plus souple ainsi. J'ignorais l'existence de ce patch.

Posté : jeu. 08 sept. 2016, 01:21
par Freddy_Gwendo
Moi non plus ! Sinon je n'aurais pas ouvert ce topic. ;)

Il faut dire que la doc WeiDU est un vrai pavé et que la plupart des commandes ne sont pas documentées, sans compter les ajouts des nouvelles versions.

De plus, on est tous pareils : s'y plonger près d'une heure pour vérifier toutes les commandes, ça gonfle un peu... ^^

Mais j'ai voulu en avoir le cœur net et voilà ! En fait si j'ai bien compris, elle a été ajoutée pour éviter certaines utilisations lourdes de DECOMPILE_DLG_TO_D, puis de DECOMPILE_AND_PATCH qui l'a remplacée.

Posté : sam. 15 juil. 2017, 13:32
par Freddy_Gwendo
J'ai encore affiné le code pour mieux gérer les "BEGIN" :

Code : Tout sélectionner

<<<<<<<< .../inlined/blank
BEGIN GWGwendy
BEGIN GWDucon

> >> >> >> >
COPY ~.../inlined/blank~ ~%MOD_FOLDER%/GWGwendy.d~

   PATCH_IF (GW_BGT) BEGIN

      APPEND_FILE ~%MOD_FOLDER%/dlg/GWGwendy_BGT.d~
      APPEND_FILE ~%MOD_FOLDER%/dlg/GWGwendy.d~
      SET strref_Gwendolynette = RESOLVE_STR_REF(@3590000)

   END ELSE BEGIN

      APPEND_FILE ~%MOD_FOLDER%/dlg/GWGwendy.d~
      SET strref_Gwendolynette = RESOLVE_STR_REF(@3590001)

   END

BUT_ONLY

ACTION_GET_STRREF strref_Gwendolynette desc_Gwendolynette
COMPILE ~%MOD_FOLDER%/GWGwendy.d~	EVALUATE_BUFFER