[Weidu] Vérifier la présence d'une carte avant LAUNCH_PATCH_FUNCTION

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 : 297
Enregistré le : mer. 15 avr. 2009, 13:04
Localisation : Wherever I may roam
Statut : Hors ligne

[Weidu] Vérifier la présence d'une carte avant LAUNCH_PATCH_FUNCTION

Message par Faust »

Salut,

Comment faire vérifier la présence d'une carte dans l'override avant de copier l'originale et/ou de la modifier? Weidu ne semble pas apprécier le code suivant:

Code : Tout sélectionner

ACTION_IF FILE_EXISTS ~override/AR0406.are~ THEN BEGIN
LAUNCH_PATCH_FUNCTION fj_are_structure
INT_VAR
fj_loc_x = 1135
fj_loc_y = 1482
fj_orientation = 0
STR_VAR
fj_structure_type ="actor"
fj_name ="Damant"
fj_cre_resref ="D[a]mant"
fj_dlg_resref ="D[a]mant"
END


LAUNCH_PATCH_FUNCTION fj_are_structure
INT_VAR
fj_loc_x = 2512
fj_loc_y = 303
fj_orientation = 4
STR_VAR
fj_structure_type ="actor"
fj_name ="Kasumi~"
fj_cre_resref ="K[A]SUMI"
fj_dlg_resref ="K[A]SUMI"
BUT_ONLY_IF_IT_CHANGES 
END ELSE BEGIN


COPY_EXISTING ~AR0406.are~ ~override/AR0406.are~


LAUNCH_PATCH_FUNCTION fj_are_structure
INT_VAR
fj_loc_x = 1135
fj_loc_y = 1482
fj_orientation = 0
STR_VAR
fj_structure_type ="actor"
fj_name ="Damant"
fj_cre_resref ="D[a]mant"
fj_dlg_resref ="D[a]mant"
END


LAUNCH_PATCH_FUNCTION fj_are_structure
INT_VAR
fj_loc_x = 2512
fj_loc_y = 303
fj_orientation = 4
STR_VAR
fj_structure_type ="actor"
fj_name ="Kasumi~"
fj_cre_resref ="K[A]SUMI"
fj_dlg_resref ="K[A]SUMI"
BUT_ONLY_IF_IT_CHANGES 
END
Le message d'erreur suivant apparait:
► Afficher le texte[M:\Modding Bg2\BGII - SoA\Setup-El[r]in_Dragosh.exe] WeiDU version 24200
In state 227, I expected one of these tokens:
[3] <<<<<<<<
[14] ACTION_GET_STRREF_S
[18] OUTER_TEXT_SPRINT
[22] RANDOM_SEED
[23] ADD_KIT
[27] AT_INTERACTIVE_UNINSTALL
[34] LAUNCH_ACTION_FUNCTION
[40] LOG
[42] COPY_ALL_GAM_FILES
[45] SILENT
[50] ADD_MUSIC
[52] BIFF
[56] GET_DIRECTORY_ARRAY
[63] PRINT
[70] WITH_SCOPE
[73] WITH_TRA
[75] ACTION_RERAISE
[79] ACTION_IF
[84] APPEND
[86] DEFINE_ACTION_MACRO
[87] ACTION_TO_UPPER
[88] ACTION_GET_STRREF
[95] ACTION_GET_STRREF_F
[96] STRING_SET_EVALUATE
[97] OUTER_FOR
[100] FAIL
[101] AT_UNINSTALL
[104] CLEAR_ARRAYS
[106] ACTION_GET_STRREF_FS
[123] COPY_EXISTING
[124] REINCLUDE
[127] MOVE
[131] ADD_AREA_TYPE
[141] EXTEND_TOP_REGEXP
[144] ADD_PROJECTILE
[145] OUTER_PATCH_SAVE
[146] CREATE
[152] MKDIR
[154] OUTER_SET
[155] WARN
[157] STRING_SET
[159] COPY_RANDOM
[160] ADD_JOURNAL
[166] DISABLE_FROM_KEY
[168] AT_INTERACTIVE_EXIT
[169] ACTION_READLN
[171] ACTION_DEFINE_ARRAY
[172] UNINSTALL
[180] VERBOSE
[181] DEFINE_PATCH_FUNCTION
[189] ACTION_BASH_FOR
[197] ACTION_MATCH
[198] REQUIRE_FILE
[205] ACTION_FOR_EACH
[207] CLEAR_CODES
[214] EXTEND_TOP
[216] CLEAR_MEMORY
[217] DECOMPRESS_BIFF
[228] COPY
[229] APPEND_COL_OUTER
[233] DEFINE_PATCH_MACRO
[236] COPY_LARGE
[246] END
[249] COPY_KIT
[254] ADD_SECTYPE
[255] ACTION_CLEAR_ARRAY
[259] EXTEND_BOTTOM
[276] ALTER_TLK
[278] COPY_EXISTING_REGEXP
[284] EXTEND_BOTTOM_REGEXP
[285] FORBID_FILE
[286] CLEAR_IDS_MAP
[289] ALTER_TLK_LIST
[300] OUTER_PATCH
[304] AT_INTERACTIVE_NOW
[306] AT_EXIT
[308] AT_INTERACTIVE_UNINSTALL_EXIT
[314] STRING_SET_RANGE
[315] APPEND_COL
[318] ACTION_TO_LOWER
[323] ADD_SPELL
[326] CLEAR_EVERYTHING
[327] GET_FILE_ARRAY
[332] AT_NOW
[334] LOAD_TRA
[339] ACTION_PHP_EACH
[349] ACTION_TRY
[351] ACTION_DEFINE_ASSOCIATIVE_ARRAY
[354] INCLUDE
[363] ALTER_TLK_RANGE
[368] DEFINE_ACTION_FUNCTION
[369] OUTER_SPRINT
[372] LAUNCH_ACTION_MACRO
[392] COMPILE
[397] AT_UNINSTALL_EXIT
[403] ADD_SCHOOL
[410] APPEND_OUTER
[413] CLEAR_INLINED
[416] DELETE
[430] OUTER_WHILE
Parse error (state 227) at LAUNCH_PATCH_FUNCTION


[EL[R]IN_DRAGOSH/SETUP-EL[R]IN_DRAGOSH.TP2] PARSE ERROR at line 904 column 1-21
Near Text: LAUNCH_PATCH_FUNCTION
GLR parse error


[EL[R]IN_DRAGOSH/SETUP-EL[R]IN_DRAGOSH.TP2] ERROR at line 904 column 1-21
Near Text: LAUNCH_PATCH_FUNCTION
Parsing.Parse_error
ERROR: parsing [EL[R]IN_DRAGOSH/SETUP-EL[R]IN_DRAGOSH.TP2]: Parsing.Parse_error
ERROR: problem parsing TP file [EL[R]IN_DRAGOSH/SETUP-EL[R]IN_DRAGOSH.TP2]: Parsing.Parse_error


FATAL ERROR: Parsing.Parse_error


Press ENTER to exit.

Image
Avatar du membre
Freddy_Gwendo
Orbe ancien
Messages : 5879
Enregistré le : sam. 23 avr. 2011, 01:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne

Message par Freddy_Gwendo »

Tu lances une PATCH function dans un bloc action. Ça ne peut pas marcher.

Code : Tout sélectionner

ACTION_IF FILE_EXISTS ~override/AR0406.are~ BEGIN

  COPY_EXISTING ~AR0406.are~ ~override/AR0406.are~

    LAUNCH_PATCH_FUNCTION fj_are_structure INT_VAR fj_loc_x = 1135 fj_loc_y = 1482 fj_orientation = 0 STR_VAR fj_structure_type ="actor" fj_name ="Damant" fj_cre_resref ="D[a]mant" fj_dlg_resref ="D[a]mant" END

    LAUNCH_PATCH_FUNCTION fj_are_structure INT_VAR fj_loc_x = 2512 fj_loc_y = 303 fj_orientation = 4 STR_VAR fj_structure_type ="actor" fj_name ="Kasumi~" fj_cre_resref ="K[A]SUMI" fj_dlg_resref ="K[A]SUMI" END
  BUT_ONLY

END ELSE BEGIN

...

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 : 297
Enregistré le : mer. 15 avr. 2009, 13:04
Localisation : Wherever I may roam
Statut : Hors ligne

Message par Faust »

Freddy_Gwendo a écrit :Tu lances une PATCH function dans un bloc action. Ça ne peut pas marcher.

Code : Tout sélectionner

ACTION_IF FILE_EXISTS ~override/AR0406.are~ BEGIN

  COPY_EXISTING ~AR0406.are~ ~override/AR0406.are~

    LAUNCH_PATCH_FUNCTION fj_are_structure INT_VAR fj_loc_x = 1135 fj_loc_y = 1482 fj_orientation = 0 STR_VAR fj_structure_type ="actor" fj_name ="Damant" fj_cre_resref ="D[a]mant" fj_dlg_resref ="D[a]mant" END

    LAUNCH_PATCH_FUNCTION fj_are_structure INT_VAR fj_loc_x = 2512 fj_loc_y = 303 fj_orientation = 4 STR_VAR fj_structure_type ="actor" fj_name ="Kasumi~" fj_cre_resref ="K[A]SUMI" fj_dlg_resref ="K[A]SUMI" END
  BUT_ONLY

END ELSE BEGIN

...

Est-ce que tu aurais une idée de comment faire? :$
Image
Avatar du membre
Freddy_Gwendo
Orbe ancien
Messages : 5879
Enregistré le : sam. 23 avr. 2011, 01:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne

Message par Freddy_Gwendo »

Essaie le code que je t'ai donné: j'ai rajouté le COPY_EXISTING après l'ACTION_IF. ;)

Et je viens de m'apercevoir que tu as oublié un END final dans ton code (peut-être un mauvais copie-coller).

Ceci dit, je ne comprends pas pourquoi tu testes la présence du fichier dans l'override puisque tu le patches de la même manière.
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 : 297
Enregistré le : mer. 15 avr. 2009, 13:04
Localisation : Wherever I may roam
Statut : Hors ligne

Message par Faust »

Freddy_Gwendo a écrit :Essaie le code que je t'ai donné: j'ai rajouté le COPY_EXISTING après l'ACTION_IF. ;)

Et je viens de m'apercevoir que tu as oublié un END final dans ton code (peut-être un mauvais copie-coller).

Ceci dit, je ne comprends pas pourquoi tu testes la présence du fichier dans l'override puisque tu le patches de la même manière.
Merci Freddy!
► Afficher le texteACTION_IF FILE_EXISTS ~override/AR0406.are~ BEGIN


COPY_EXISTING ~AR0406.are~ ~override/AR0406.are~


LAUNCH_PATCH_FUNCTION fj_are_structure INT_VAR fj_loc_x = 1135 fj_loc_y = 1482 fj_orientation = 0 STR_VAR fj_structure_type ="actor" fj_name ="Damant" fj_cre_resref ="D[a]mant" fj_dlg_resref ="D[a]mant" END


LAUNCH_PATCH_FUNCTION fj_are_structure INT_VAR fj_loc_x = 2512 fj_loc_y = 303 fj_orientation = 4 STR_VAR fj_structure_type ="actor" fj_name ="Kasumi~" fj_cre_resref ="K[A]SUMI" fj_dlg_resref ="K[A]SUMI" END
BUT_ONLY


END ELSE BEGIN


COPY_EXISTING ~AR0406.are~ ~override/AR0406.are~


LAUNCH_PATCH_FUNCTION fj_are_structure
INT_VAR
fj_loc_x = 1135
fj_loc_y = 1482
fj_orientation = 0
STR_VAR
fj_structure_type ="actor"
fj_name ="Damant"
fj_cre_resref ="D[a]mant"
fj_dlg_resref ="D[a]mant"
END
END
Image
Avatar du membre
Faust
Adepte de Grondemarteau
Loup noir
Messages : 297
Enregistré le : mer. 15 avr. 2009, 13:04
Localisation : Wherever I may roam
Statut : Hors ligne

Message par Faust »

On a du mal se comprendre, ce que tu as ajouté copie juste le fichier du jeu tandis que je veux patcher le fichier déjà présent dans l'override, j'ai deux possibilités: copier dans l'override un fichier qui n'y est pas, et le patcher, ou patcher un fichier qu'y est déjà; je ne veux pas écraser les modifications du fichiers dans l'override qui ont été apportées par un autre mod, juste le patcher. Comme il s'agit d'un fichier ARE, je suis un peu bloqué.

Une idée?
Image
Avatar du membre
Freddy_Gwendo
Orbe ancien
Messages : 5879
Enregistré le : sam. 23 avr. 2011, 01:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne

Message par Freddy_Gwendo »

COPY_EXISTING copie le fichier existant dans l'ordre suivant : override, puis bif s'il ne se trouve pas dans l'override.
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 : 297
Enregistré le : mer. 15 avr. 2009, 13:04
Localisation : Wherever I may roam
Statut : Hors ligne

Message par Faust »

Freddy_Gwendo a écrit :COPY_EXISTING copie le fichier existant dans l'ordre suivant : override, puis bif s'il ne se trouve pas dans l'override.
D'accord! Merci pour tes lumières Freddy, je comprends mieux ta précédente question! Donc pas besoin du ACTION_IF FILE_EXISTS ~override/AR0406.are~ BEGIN, dans tout les cas j'ai besoin de patcher le fichier ARE, je peux directement mettre COPY_EXISTING ~AR0406.are~ ~override/AR0406.are~?

Je viens de comprendre la différence,
COPY_EXISTING est utilisé pour un fichier du jeu tandis que COPY est utilisé pour un fichier d'un mod
Image
Répondre

Retourner vers « Programmation WeiDU »

Qui est en ligne

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