Page 1 sur 1
[Weidu] Vérifier la présence d'une carte avant LAUNCH_PATCH_FUNCTION
Posté : dim. 23 juin 2019, 10:40
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.
Posté : dim. 23 juin 2019, 10:52
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
...
Posté : dim. 23 juin 2019, 10:56
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?
Posté : dim. 23 juin 2019, 10:58
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.
Posté : dim. 23 juin 2019, 11:18
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 texte
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
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
Posté : dim. 23 juin 2019, 11:52
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?
Posté : dim. 23 juin 2019, 12:12
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.
Posté : dim. 23 juin 2019, 12:25
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