Page 1 sur 1

DEFINE_PATCH_FUNCTION foiré

Posté : mar. 29 oct. 2024, 09:29
par deratiseur
j'essaie de créer un DEFINE_PATCH_FUNCTION pour simplifier une instruction répétée 120 fois :

Code : Tout sélectionner

DEFINE_PATCH_FUNCTION PX_INTERPLAN_SORTS STR_VAR parchemin = ~~
	BEGIN
	COPY_EXISTING ~pxagenob.sto~	~override~  ADD_STORE_ITEM %parchemin% LAST #1 #0 #0 ~IDENTIFIED~ #5
	END
Pour l'appeler comme ça : LPF PX_INTERPLAN_SORTS INT_VAR parchemin = pxf2ex2a END



Sauf que weidu bloque systématiquement sur le DEFINE_PATCH_FUNCTION :

[DERATS_MAGASIN_2/SETUP-DERATS_MAGASIN_2.TP2] PARSE ERROR at line 1941 column 8-20
Near Text: COPY_EXISTING
GLR parse error

Pourquoi ? Une fonction ne peut pas être une COPY ?

Re: DEFINE_PATCH_FUNCTION foiré

Posté : mar. 29 oct. 2024, 09:39
par Selphira
COPY est une instruction de type ACTION, et tu tentes de la lancer dans un contexte de PATCH.

Je connais 2 solutions :

Englober ton COPY_EXISTING dans une instruction INNER_ACTION

Code : Tout sélectionner

INNER_ACTION BEGIN
   COPY_EXISTING ~pxagenob.sto~	~override~  ADD_STORE_ITEM %parchemin% LAST #1 #0 #0 ~IDENTIFIED~ #5
END
Créer une méthode DIMORPHIC

Code : Tout sélectionner

DEFINE_DIMORPHIC_FUNCTIONPX_INTERPLAN_SORTS STR_VAR parchemin = ~~
BEGIN
	COPY_EXISTING ~pxagenob.sto~	~override~  ADD_STORE_ITEM %parchemin% LAST #1 #0 #0 ~IDENTIFIED~ #5
END

Re: DEFINE_PATCH_FUNCTION foiré

Posté : mar. 29 oct. 2024, 10:01
par deratiseur
OK, avec

Code : Tout sélectionner

DEFINE_DIMORPHIC_FUNCTION PX_INTERPLAN_SORTS STR_VAR parchemin = ~~
ça se compile.

Mais l'instruction

Code : Tout sélectionner

LPF PX_INTERPLAN_SORTS INT_VAR parchemin = pxf2ex2a END
Refuse de fonctionner, bloque sur "ERROR: cannot convert pxf2ex2a or %pxf2ex2a% to an integer"

j'ai essayé en ajoutant/enlevant des % et des ~ mais je n'y arrive pas. Comment ai-je pu programmer des mods en étant autant bidon avec Weidu, ça me dépasse....

Re: DEFINE_PATCH_FUNCTION foiré

Posté : mar. 29 oct. 2024, 10:13
par Selphira
C'est normal, dans la définition de la fonction tu utilises STR_VAR tandis qu'à l'appel tu utilises INT_VAR, remplace le par STR_VAR et ça devrait aller.

Re: DEFINE_PATCH_FUNCTION foiré

Posté : mar. 29 oct. 2024, 10:49
par deratiseur
Ok, ça marche. Je te remercie. Que ferais sans toi ? (et sans JohnBob, FreddyGwendo, Zranoff et d'autres.... je suis dépendant des autres :( )

Re: DEFINE_PATCH_FUNCTION foiré

Posté : mar. 29 oct. 2024, 11:36
par deratiseur
Heu non, en fait ça s'installe mais c'est complètement foiré. Tous les entrées dans le magasin ont comme nom d'objet PARCHEMI et le paramètre "timer" calé à 78 (ça doit être le patchage pour le N manquant^^). Où est-ce que ça foire ?
Testé, ça ne marche pas mieux en remplaçant
LPF PX_INTERPLAN_SORTS INT_VAR parchemin = pxf2ex2a END
par
LPF PX_INTERPLAN_SORTS INT_VAR parchemin = %pxf2ex2a% END

Re: DEFINE_PATCH_FUNCTION foiré

Posté : mer. 30 oct. 2024, 07:25
par deratiseur
Bon, oubliez ça, j'ai fais autrement (comme d'habitude). Sujet clot. merci encore Selphira.