REPLACE_TEXTUALLY pour un bloc complet, comment faire ?

Répondre
Avatar du membre
deratiseur
Rakshasa
Messages : 3780
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne

REPLACE_TEXTUALLY pour un bloc complet, comment faire ?

.

Message par deratiseur »

Je voudrais remplacer un bout de code de dialogue par un plus gros bout. Je passe par un REPLACE_TEXTUALLY dans le code weidu. Je pourrais passer par un APPEND dans un dialogue compilé mais je bloque encore plus, je n'y comprend rien de rien (et j'en ai ras le bol d'être nul).

Ça s'installe, mais le gros bout de code n'est jamais installé, comme si le REPLACE_TEXTUALLY ne trouvait rien à remplacer.

Je voudrais remplacer

Code : Tout sélectionner

IF ~~ THEN BEGIN  Pull1
SAY @32
IF ~~ THEN EXIT
END
par

Code : Tout sélectionner

IF ~~ THEN BEGIN  Pull1
SAY @32
IF ~~ THEN DO ~MakeGlobal()) ChangeAIScript("",GENERAL)) SetLeavePartyDialogFile()) LeaveParty()) ChangeEnemyAlly(Myself,FAMILIAR)) AddFamiliar())~ EXIT
END
Et j'utilise :

Code : Tout sélectionner

COPY_EXISTING ~z_moddyj.dlg~ ~override~
  DECOMPILE_AND_PATCH BEGIN
    REPLACE_TEXTUALLY
"THEN BEGIN  Pull1
SAY @32
IF ~~ THEN EXIT"
"THEN BEGIN  Pull1
 SAY @32
IF ~~ THEN DO ~MakeGlobal()  SetLeavePartyDialogFile() LeaveParty() ChangeEnemyAlly(Myself,FAMILIAR) AddFamiliar()~ EXIT"
END
Comment faire ?
Modifié en dernier par deratiseur le mer. 18 déc. 2024, 19:07, modifié 1 fois.
Combien de moddeurs se sont lancés dans des projets faramineux pour ne jamais les finir ? Je ne fait que des "petits" mods, mais au moins je les finis.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
JohnBob
d'Oghmatique
Troll
Messages : 1429
Enregistré le : mar. 28 sept. 2021, 19:52
Localisation : France
Statut : Hors ligne
.

Message par JohnBob »

Probablement pas une bonne idée de faire un REPLACE_TEXTUALLY dans ce genre de cas. Et puis ça marchera pas sur un bloc entier, enfin je pense pas.

C'est pour patcher le dialogue si le mod est installé ?

Peut-être que ADD_TRANS_ACTION fera le job,

Code : Tout sélectionner


ADD_TRANS_ACTION z_moddyj BEGIN xx END BEGIN 0 END ~MakeGlobal()  SetLeavePartyDialogFile() LeaveParty() ChangeEnemyAlly(Myself,FAMILIAR) AddFamiliar()~

- Le zero correspond à la première action du bloc dans laquelle tu ajoutes tes actions.
- xx sera le numero après le BEGIN associé au bloc après installation. (Il remplace "Pull1" après compilation)

Cela devrait donner le résultat que tu attends, mais bon comme d'hab les dialogues je maitrise pas donc à tester...

EDIT : 19 pour xx.

En compilant simplement cette ligne dans un fichier .d les actions sont bien ajoutées de mon côté.

Code : Tout sélectionner


ADD_TRANS_ACTION z_moddyj BEGIN 19 END BEGIN 0 END ~MakeGlobal()  SetLeavePartyDialogFile() LeaveParty() ChangeEnemyAlly(Myself,FAMILIAR) AddFamiliar()~

Cela donne ceci après installation :

Code : Tout sélectionner

IF ~~ THEN BEGIN 19 // from: 0.10
  SAY #362745 /* ~(Voyant que vous ne renoncez pas à la harceler, Moddie vous mord légèrement la main). Arrr!~ */
  IF ~~ THEN DO ~MakeGlobal()
SetLeavePartyDialogueFile()
LeaveParty()
ChangeEnemyAlly(Myself,FAMILIAR)
AddFamiliar()
~ EXIT
END
Modifié en dernier par JohnBob le mer. 18 déc. 2024, 20:40, modifié 6 fois.
Avatar du membre
deratiseur
Rakshasa
Messages : 3780
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message par deratiseur »

Merci beaucoup JohnBob. Grace à toi je peux sortir mon nouveau mod :)
Combien de moddeurs se sont lancés dans des projets faramineux pour ne jamais les finir ? Je ne fait que des "petits" mods, mais au moins je les finis.

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

Retourner vers « Dialogues »

Qui est en ligne

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