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é...

Combiner 2 fichiers 2DA

Regroupe tous les sujets sur les commandes, les fonctions, les routines, les modifications des fichiers systèmes (ids, 2da...)...
Répondre
Avatar du membre
deratiseur
Golem de fer
Messages : 3698
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne

Combiner 2 fichiers 2DA

.

Message 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 ?
Modifié en dernier par deratiseur le mer. 30 oct. 2024, 08:09, modifié 1 fois.
Le standard téléphonique est en rade : l'atelier du Deratiseur ne répondra plus à aucune demande personnalisée.
Bosse sur : Interplan v9, Derat's Kri'Binn, Todd : KOPP2.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
Selphira
Adepte de Grondemarteau
Blême
Messages : 952
Enregistré le : dim. 25 juil. 2004, 21:28
Contact :
Statut : En ligne
.

Message par Selphira »

C'est la première chose que j'ai codé pour ItemDispatcher :D

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
Modifié en dernier par Selphira le mer. 30 oct. 2024, 08:28, modifié 1 fois.
Avatar du membre
deratiseur
Golem de fer
Messages : 3698
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message 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é ?
Le standard téléphonique est en rade : l'atelier du Deratiseur ne répondra plus à aucune demande personnalisée.
Bosse sur : Interplan v9, Derat's Kri'Binn, Todd : KOPP2.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
Selphira
Adepte de Grondemarteau
Blême
Messages : 952
Enregistré le : dim. 25 juil. 2004, 21:28
Contact :
Statut : En ligne
.

Message 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%~
Avatar du membre
deratiseur
Golem de fer
Messages : 3698
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message 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) !
Le standard téléphonique est en rade : l'atelier du Deratiseur ne répondra plus à aucune demande personnalisée.
Bosse sur : Interplan v9, Derat's Kri'Binn, Todd : KOPP2.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
Avatar du membre
deratiseur
Golem de fer
Messages : 3698
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message 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
Le standard téléphonique est en rade : l'atelier du Deratiseur ne répondra plus à aucune demande personnalisée.
Bosse sur : Interplan v9, Derat's Kri'Binn, Todd : KOPP2.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
Selphira
Adepte de Grondemarteau
Blême
Messages : 952
Enregistré le : dim. 25 juil. 2004, 21:28
Contact :
Statut : En ligne
.

Message par Selphira »

Ceci ne suffit pas ? Ne pas faire de double COPY et appeler la méthode dans le contexte ACTION (LAF) et non pas PATCH (LPF)

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
Avatar du membre
deratiseur
Golem de fer
Messages : 3698
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message 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
Modifié en dernier par deratiseur le mer. 30 oct. 2024, 11:39, modifié 2 fois.
Le standard téléphonique est en rade : l'atelier du Deratiseur ne répondra plus à aucune demande personnalisée.
Bosse sur : Interplan v9, Derat's Kri'Binn, Todd : KOPP2.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
Selphira
Adepte de Grondemarteau
Blême
Messages : 952
Enregistré le : dim. 25 juil. 2004, 21:28
Contact :
Statut : En ligne
.

Message 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
Répondre

Retourner vers « Programmation WeiDU »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invité