Page 1 sur 1
Combiner 2 fichiers 2DA
Posté : mer. 30 oct. 2024, 08:09
par deratiseur
Imaginons que j'ai un fichier .2da listant des invocation de morts vivants nommé pxMV1.2da et un fichier .2da listant les invocations d'animaux nommé pxANIM1.2da.
Existe t'il un fonction Weidu me permettant de combiner les deux fichiers en un seul : toutes les entrées de pxANIM1.2da rajoutés aux entrées de pxMV1.2da ?
Re: Combiner 2 fichiers 2DA
Posté : mer. 30 oct. 2024, 08:26
par Selphira
C'est la première chose que j'ai codé pour ItemDispatcher
Voici une version allégée pour ton besoin. Je t'ai mis quelques commentaires pour que tu puisses adapter au besoin
Code : Tout sélectionner
COPY ~pxANIM1.2da~ ~override~
READ_2DA_ENTRIES_NOW ~rows~ 1 // A adapter selon le nombre de colonnes que tu as
// row = 0 si tu veux récupérer aussi la première ligne, si tu veux passer des lignes, row = xx où xx est le nombre de lignes à passer
FOR (row = 0; row < rows; ++row) BEGIN
// Lire chacune de tes colonnes
READ_2DA_ENTRY_FORMER ~rows~ row 0 creature
// Recréer la ligne à ajouter, si tu n'as qu'une seule colonne, cette ligne est inutile, et tu peux directement ajouter le contenu de creature dans ton fichier
SPRINT ~line~ ~%creature%~
INNER_ACTION BEGIN
APPEND_OUTER ~pxMV1.2da~ ~%line%~ UNLESS ~%line%~
END
END
BUT_ONLY
Re: Combiner 2 fichiers 2DA
Posté : mer. 30 oct. 2024, 09:36
par deratiseur
merci.
j'ai essayé ça :
Code : Tout sélectionner
COPY ~Derats_Magasin_2/Sorts/Special/pxl2rpt0.2da~ ~override~
COPY ~Derats_Magasin_2/Sorts/Special/pxl2rpt2.2da~ ~override~
READ_2DA_ENTRIES_NOW ~rows~ 3 // A adapter selon le nombre de colonnes que tu as
// row = 0 si tu veux récupérer aussi la première ligne, si tu veux passer des lignes, row = xx où xx est le nombre de lignes à passer
FOR (row =0; row < rows; ++row) BEGIN
// Lire chacune de tes colonnes
READ_2DA_ENTRY_FORMER ~rows~ row 0 creature
// Recréer la ligne à ajouter, si tu n'as qu'une seule colonne, cette ligne est inutile, et tu peux directement ajouter le contenu de creature dans ton fichier
SPRINT ~line~ ~%creature%~
INNER_ACTION BEGIN
APPEND_OUTER ~override\pxl2rpt0.2da~ ~%line%~ UNLESS ~%line%~
END
END
BUT_ONLY
ça me copie à chaque fois la première colonne, mais ni la 2ème ni la 3ème. Si je met "READ_2DA_ENTRY_FORMER ~rows~ row 1 creature" ça me copie la 2eme mais pas la 1ère et la 3eme. Qu'est-ce que j'ai loupé ?
Re: Combiner 2 fichiers 2DA
Posté : mer. 30 oct. 2024, 09:45
par Selphira
Oui, tu dois adapter cette partie à ton besoin vu que tu as plusieurs colonnes
Code : Tout sélectionner
// Lire chacune de tes colonnes
READ_2DA_ENTRY_FORMER ~rows~ row 0 creature
// Recréer la ligne à ajouter, si tu n'as qu'une seule colonne, cette ligne est inutile, et tu peux directement ajouter le contenu de creature dans ton fichier
SPRINT ~line~ ~%creature%~
Qui pourrait devenir quelque chose comme ceci pour 3 colonnes
Code : Tout sélectionner
// Lire chacune de tes colonnes
READ_2DA_ENTRY_FORMER ~rows~ row 0 creature
READ_2DA_ENTRY_FORMER ~rows~ row 1 colonne1
READ_2DA_ENTRY_FORMER ~rows~ row 2 colonne2
// Recréer la ligne à ajouter, si tu n'as qu'une seule colonne, cette ligne est inutile, et tu peux directement ajouter le contenu de creature dans ton fichier
SPRINT ~line~ ~%creature%%TAB%%colonne1%%TAB%%colonne2%~
Re: Combiner 2 fichiers 2DA
Posté : mer. 30 oct. 2024, 10:04
par deratiseur
Je l'ai !
Il manquait ça "SPRINT ~line~ ~%creature% %collonne1% %colonne2%~". (ça ne se voit pas mais je cherche et teste beaucoup de changements différents avant d'abandonner et de demander de l'aide
)
Ok, merci beaucoup
Avant, pour chaque sort que je rajoutait à l'interplan je devais modifier trois ou quatre autres trucs, et pas toujours simple à la main avec dltcep ou NI. Pour la V9 je vais passer à des patchages de groupe plus dynamiques. Prochaine étape : construire un sort où 1% donne 1 %parchemin% (100 entrées variables) !
Re: Combiner 2 fichiers 2DA
Posté : mer. 30 oct. 2024, 10:52
par deratiseur
De retour :
Et ça, comment je le fais s'il te plait ?
Code : Tout sélectionner
DEFINE_DIMORPHIC_FUNCTION PX_RUPTURE STR_VAR fichier = ~~
COPY ~Derats_Magasin_2/Sorts/Special/%fichier%.2da~ ~override~ // Ça coince ici
READ_2DA_ENTRIES_NOW ~rows~ 2 // A adapter selon le nombre de colonnes que tu as
// row = 0 si tu veux récupérer aussi la première ligne, si tu veux passer des lignes, row = xx où xx est le nombre de lignes à passer
FOR (row = 0; row < rows; ++row) BEGIN
// Lire chacune de tes colonnes
READ_2DA_ENTRY_FORMER ~rows~ row 0 sort
READ_2DA_ENTRY_FORMER ~rows~ row 1 ref
READ_2DA_ENTRY_FORMER ~rows~ row 2 trois
// Recréer la ligne à ajouter, si tu n'as qu'une seule colonne, cette ligne est inutile, et tu peux directement ajouter le contenu de creature dans ton fichier
SPRINT ~line~ ~%sort% %ref% %trois%~
INNER_ACTION BEGIN
APPEND_OUTER ~override\pxl2rpt0.2da~ ~%line%~ UNLESS ~%line%~
END
END
BUT_ONLY
END
C'est pour l'utiliser comme ça :
Code : Tout sélectionner
COPY ~Derats_Magasin_2/Sorts/Special/pxl2rpt0.2da~ ~override~
COPY ~Derats_Magasin_2/Sorts/Special/pxl2rpt1.2da~ ~override~ LPF PX_RUPTURE INT_VAR fichier = ~pxl2rpt1~ END
COPY ~Derats_Magasin_2/Sorts/Special/pxl2rpt2.2da~ ~override~ LPF PX_RUPTURE INT_VAR fichier = ~pxl2rpt2~ END
COPY ~Derats_Magasin_2/Sorts/Special/pxl2rpt3.2da~ ~override~ LPF PX_RUPTURE INT_VAR fichier = ~pxl2rpt3~ END
COPY ~Derats_Magasin_2/Sorts/Special/pxl2rpt4.2da~ ~override~ LPF PX_RUPTURE INT_VAR fichier = ~pxl2rpt4~ END
COPY ~Derats_Magasin_2/Sorts/Special/pxl2rpt5.2da~ ~override~ LPF PX_RUPTURE INT_VAR fichier = ~pxl2rpt5~ END
COPY ~Derats_Magasin_2/Sorts/Special/pxl2rpt6.2da~ ~override~ LPF PX_RUPTURE INT_VAR fichier = ~pxl2rpt6~ END
COPY ~Derats_Magasin_2/Sorts/Special/pxl2rpt7.2da~ ~override~ LPF PX_RUPTURE INT_VAR fichier = ~pxl2rpt7~ END
COPY ~Derats_Magasin_2/Sorts/Special/pxl2rpt8.2da~ ~override~ LPF PX_RUPTURE INT_VAR fichier = ~pxl2rpt8~ END
COPY ~Derats_Magasin_2/Sorts/Special/pxl2rpt9.2da~ ~override~ LPF PX_RUPTURE INT_VAR fichier = ~pxl2rpt9~ END
Re: Combiner 2 fichiers 2DA
Posté : mer. 30 oct. 2024, 11:12
par Selphira
Ceci ne suffit pas ? Ne pas faire de double COPY et appeler la méthode dans le contexte ACTION (L
AF) et non pas PATCH (L
PF)
Code : Tout sélectionner
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt1~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt2~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt3~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt4~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt5~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt6~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt7~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt8~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt9~ END
Re: Combiner 2 fichiers 2DA
Posté : mer. 30 oct. 2024, 11:30
par deratiseur
je n'arrive même pas à cette étape. Dans mon premier code du message précédent il y a un "//ça coince ici".
et pardon, du coup avec cette ligne c'est une double copie. Donc l'appel de la fonction serait plutot :
Code : Tout sélectionner
COPY ~Derats_Magasin_2/Sorts/Special/pxl2rpt0.2da~ ~override~
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt1~ END //(instruction qui copie le fichier pxl2rpt1.pda et qui ajoute toutes ses entrée au fichier pxl2rpt0.2da)
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt2~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt3~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt4~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt5~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt6~ END// (instruction qui copie le fichier pxl2rpt6.pda et qui ajoute toutes ses entrée au fichier pxl2rpt0.2da)
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt7~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt8~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt9~ END
Re: Combiner 2 fichiers 2DA
Posté : mer. 30 oct. 2024, 12:03
par Selphira
deratiseur a écrit : ↑mer. 30 oct. 2024, 11:30
je n'arrive même pas à cette étape. Dans mon premier code du message précédent il y a un "//ça coince ici".
et pardon, du coup avec cette ligne c'est une double copie. Donc l'appel de la fonction serait plutot :
Code : Tout sélectionner
COPY ~Derats_Magasin_2/Sorts/Special/pxl2rpt0.2da~ ~override~
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt1~ END //(instruction qui copie le fichier pxl2rpt1.pda et qui ajoute toutes ses entrée au fichier pxl2rpt0.2da)
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt2~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt3~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt4~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt5~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt6~ END// (instruction qui copie le fichier pxl2rpt6.pda et qui ajoute toutes ses entrée au fichier pxl2rpt0.2da)
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt7~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt8~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt9~ END
Sans pouvoir tester, c'est compliqué.
Pour moi, ton code complet devrait ressembler à ceci
Code : Tout sélectionner
DEFINE_ACTION_FUNCTION PX_RUPTURE STR_VAR fichier = ~~
COPY ~Derats_Magasin_2/Sorts/Special/%fichier%.2da~ ~override~ // Ça coince ici
READ_2DA_ENTRIES_NOW ~rows~ 2
FOR (row = 0; row < rows; ++row) BEGIN
READ_2DA_ENTRY_FORMER ~rows~ row 0 sort
READ_2DA_ENTRY_FORMER ~rows~ row 1 ref
READ_2DA_ENTRY_FORMER ~rows~ row 2 trois
SPRINT ~line~ ~%sort% %ref% %trois%~
INNER_ACTION BEGIN
APPEND_OUTER ~override\pxl2rpt0.2da~ ~%line%~ UNLESS ~%line%~
END
END
BUT_ONLY
END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt1~ END //(instruction qui copie le fichier pxl2rpt1.pda et qui ajoute toutes ses entrée au fichier pxl2rpt0.2da)
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt2~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt3~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt4~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt5~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt6~ END// (instruction qui copie le fichier pxl2rpt6.pda et qui ajoute toutes ses entrée au fichier pxl2rpt0.2da)
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt7~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt8~ END
LAF PX_RUPTURE INT_VAR fichier = ~pxl2rpt9~ END