Oyez, oyez !

Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !

Merci à toutes et à tous pour votre participation !

N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...

[WEIDU] Ajouter un fichier script à une AREA n'ayant pas de fichier BCS

Regroupe tous les sujets sur les commandes, les fonctions, les routines, les modifications des fichiers systèmes (ids, 2da...)...
Répondre
Avatar du membre
Faust
Adepte de Grondemarteau
Loup noir
Messages : 291
Enregistré le : mer. 15 avr. 2009, 12:04
Localisation : Wherever I may roam
Statut : Hors ligne

[WEIDU] Ajouter un fichier script à une AREA n'ayant pas de fichier BCS

.

Message par Faust »

Bonjour,

Je souhaiterai appliquer un fichier script à une AREA n'ayant pas de fichier .BCS.

Je pourrais simplement modifier le fichier AREA et l'appliquer au jeu, mais pour prévenir d'un problème de compatibilité avec d'autres mods qui modifieraient l'AREA j'aurais aimé savoir s'il existait une commande weidu permettant de lier un fichier BCS à une AREA? Je connais déjà la commande permettant d'étendre un script, mais je ne sais pas s'il est possible d'en lier un.

L'AREA concernée est AR1203. Je tourne sous BG2 Vanilla.
[h=6]"Wrath is the burden of those who haven't faith in humanity but there's no mean to avoid it. I guess it's my choice, just try to stand it."[/h]Wherever I May Roam.
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Ouaip !

Je n'ai pas testé (écrit au vol), mais ceci devrait fonctionner :

Code : Tout sélectionner

COPY_EXISTING ~AR1203.are~ ~override~

    READ_ASCII 0x94 old_script (8)

    PATCH_IF ("%oldscript%" STRING_EQUAL "") OR ("%old%_script"~ STRING_COMPARE_CASE "none" = 0) BEGIN	// Si la carte n'a pas de script

        WRITE_ASCII 0x94 AR1203 #8									// On assigne le script AR1203 à la carte

        INNER_ACTION BEGIN

             COMPILE ~%MOD_FOLDER%/Tonrépertoire/tonscript.baf~ ~override/AR1203.bcs~			// On compile ton script sous le nom AR1203

        END

    END ELSE BEGIN											// Si la carte possède un script

        INNER_ACTION BEGIN

             EXTEND_TOP ou EXTEND_BOTTOM ~%old_script%.bcs~ ~%MOD_FOLDER%/Tonrépertoire/tonscript.baf~	// On ajoute ton bout de script à l'existant

        END

    END

BUT_ONLY
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Avatar du membre
Faust
Adepte de Grondemarteau
Loup noir
Messages : 291
Enregistré le : mer. 15 avr. 2009, 12:04
Localisation : Wherever I may roam
Statut : Hors ligne
.

Message par Faust »

Freddy_Gwendo a écrit :Ouaip !

Je n'ai pas testé (écrit au vol), mais ceci devrait fonctionner :

Code : Tout sélectionner

COPY_EXISTING ~AR1203.are~ ~override~
    READ_ASCII 0x94 old_script (8)
    PATCH_IF ("%oldscript%" STRING_EQUAL "") OR ("%old%_script"~ STRING_COMPARE_CASE "none" = 0) BEGIN    // Si la carte n'a pas de script
        WRITE_ASCII 0x94 AR1203 #8                                    
// On assigne le script AR1203 à la carte
        INNER_ACTION BEGIN
             COMPILE ~%MOD_FOLDER%/Tonrépertoire/tonscript.baf~ ~override/AR1203.bcs~          
  // On compile ton script sous le nom AR1203
        END
    END ELSE BEGIN                                           
 // Si la carte possède un script
        INNER_ACTION BEGIN
             EXTEND_TOP ou EXTEND_BOTTOM ~%old_script%.bcs~ ~%MOD_FOLDER%/Tonrépertoire/tonscript.baf~   
 // On ajoute ton bout de script à l'existant
        END
    END
BUT_ONLY
Hello Freddy,

après quelques ajustement, et installation avec ce code, il semblerait que le script ne se rattache pas au fichier AR1203.are. Aucune idée si le blocage se fait à la lecture de l'ancien script ou au moment de patcher le fichier, le "%old%_script%"~ me faisait un message d'erreur à cause du "~"

COPY_EXISTING ~AR1203.are~ ~override~
READ_ASCII 0x0094 old_script (8)
PATCH_IF ("%oldscript%" STRING_EQUAL "") OR ("%old%_script%" STRING_COMPARE_CASE "None" = 0) BEGIN
// Si la carte n'a pas de script
WRITE_ASCII 0x0094 ~AR1203~
// On assigne le script AR1203 à la carte
INNER_ACTION BEGIN
COMPILE ~El[r]in_Dragosh/Scripts/[EL]1203.BAF~ ~override/AR1203.bcs~
// On compile ton script sous le nom AR1203
END
END ELSE BEGIN
// Si la carte possède un script
INNER_ACTION BEGIN
EXTEND_BOTTOM ~AR1203.bcs~ ~El[r]in_Dragosh/Scripts/[EL]1203.BAF~
// On ajoute ton bout de script à l'existant
END
END
BUT_ONLY
Le fichier joint ar1203.jpg n’est plus disponible.
Cela dit l'expression suivante fonctionne bien:

EXTEND_BOTTOM ~AR1203.bcs~ ~El[r]in_Dragosh/Scripts/[EL]1203.BAF~
COPY_EXISTING ~AR1203.are~ ~override~
WRITE_ASCII 0x0094 ~AR1203~
BUT_ONLY

Simplement pour des raisons de compatibilité je ne voudrais pas écraser le fichier ou altérer de manière inadéquate ces deux fichiers

EDIT 1: Il semblerait qu'en modifiant de cette manière cela fonctionne:

COPY_EXISTING ~AR1203.are~ ~override~
READ_ASCII 0x0094 old_script (8)
PATCH_IF ("%oldscript%" STRING_EQUAL "") OR ("%old%_script%" STRING_COMPARE_CASE "none" = 0) BEGIN // Si la carte n'a pas de script
WRITE_ASCII 0x0094 ~AR1203~ // On assigne le script AR1203 à la carte
INNER_ACTION BEGIN
COMPILE ~El[r]in_Dragosh/Scripts/[EL]1203.BAF~ ~override/AR1203.bcs~ // On compile ton script sous le nom AR1203


END
END ELSE BEGIN // Si la carte possède un script
WRITE_ASCII 0x0094 ~AR1203~
INNER_ACTION BEGIN


EXTEND_BOTTOM ~AR1203.bcs~ ~El[r]in_Dragosh/Scripts/[EL]1203.BAF~ // On ajoute ton bout de script à l'existant



END


END


BUT_ONLY

Mais on revient au problème de modifier le script attaché à la carte s'il elle en possédait déjà un, comme si dans la première partie de l'expression le nom du script n'était pas vérifié.

EDIT 2 : Cela semble fonctionner en modifiant les éléments suivants


COPY_EXISTING ~AR1203.are~ ~override~
READ_ASCII 0x0094 old_script (8)
PATCH_IF ("%oldscript%" STRING_EQUAL "") OR ("%old%_script%" STRING_COMPARE_CASE "none" = 0) BEGIN // Si la carte n'a pas de script
WRITE_ASCII 0x0094 ~AR1203~ // On assigne le script AR1203 à la carte
INNER_ACTION BEGIN
COMPILE ~El[r]in_Dragosh/Scripts/AR1203.BAF~ ~override/AR1203.bcs~ // On compile ton script sous le nom AR1203


END
END ELSE BEGIN // Si la carte possède un script
WRITE_ASCII 0x0094 ~AR1203~
INNER_ACTION BEGIN


EXTEND_BOTTOM ~AR1203.bcs~ ~El[r]in_Dragosh/Scripts/[EL]1203.BAF~ // On ajoute ton bout de script à l'existant



END


END


BUT_ONLY

Ce qui est étrange c'est que Weidu transformait bien mon fichier [EL]1203.BAF en AR1203.bcs dans le dossier override mais ne le fait plus après cette modification.

EDIT 3: J'ai remplacé la ligne suivante




COPY_EXISTING ~AR1203.are~ ~override~
READ_ASCII 0x0094 old_script (8)
PATCH_IF ("%oldscript%" STRING_EQUAL "") OR ("%old%_script%" STRING_COMPARE_CASE "none" = 0) BEGIN // Si la carte n'a pas de script
WRITE_ASCII 0x0094 ~AR1203~ // On assigne le script AR1203 à la carte
INNER_ACTION BEGIN
COMPILE ~El[r]in_Dragosh/Scripts/AR1203.BAF~ ~override/AR1203.bcs~ // On compile ton script sous le nom AR1203
EXTEND_BOTTOM ~AR1203.bcs~ ~El[r]in_Dragosh/Scripts/[EL]1203.BAF~ // On ajoute ton bout de script à l'existant/ créé le fichier s'il n'existe pas


END
END ELSE BEGIN // Si la carte possède un script
INNER_ACTION BEGIN
EXTEND_BOTTOM ~AR1203.bcs~ ~El[r]in_Dragosh/Scripts/[EL]1203.BAF~ // On ajoute ton bout de script à l'existant/ créé le fichier s'il n'existe pas



END


END


BUT_ONLY
Fichiers joints
ar1203.jpg
[h=6]"Wrath is the burden of those who haven't faith in humanity but there's no mean to avoid it. I guess it's my choice, just try to stand it."[/h]Wherever I May Roam.
Répondre

Retourner vers « Programmation WeiDU »

Qui est en ligne

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