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

[WeiDU] Équivalent du signe "*" pour la commande COPY ?

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 : 3697
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne

[WeiDU] Équivalent du signe "*" pour la commande COPY ?

.

Message par deratiseur »

Je voudrais juste savoir comment exprimer en code WeiDU la commande dos "copy machintruc/*b.bam override/*c.bam"

Le but est de copier 45 icônes en b en 45 icônes en c, en une seule ligne et pas en 45 comme je le fait actuellement dans mon tp2.

J'ai essayé diverses variantes de COPY, je n'y arrive pas :-/
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
Isaya
Adepte de Grondemarteau
Planaire
Messages : 6990
Enregistré le : mar. 22 juil. 2003, 21:03
Localisation : Plaisir
Contact :
Statut : Hors ligne
.

Message par Isaya »

Il faut des possibilités avancées en "pattern matching" pour faire ça. Les commandes standard DOS et même Unix (sauf peut-être depuis la norme POSIX) n'ont pas ces capacités, pour autant que je sache.
D'après la documentation WeiDU (chapitre 12), il semble que les capacités soient présentes mais il n'y a aucune mention des commandes pour lesquelles ces capacités sont applicables. Donc il faudra essayer mais il y a de grandes chances.
Tu peux essayer cette forme, mais sans garantie qu'elle fonctionne dans le contexte de COPY de WeiDU :
COPY ~machintruc/\(.*\)b.bam~ ~override/\1c.bam~
Cette expression régulière fonctionne dans des fonctions de recherche/remplacement d'un éditeur de texte "évolué" tel que Notepad++, à un petit détail près car les \ avant les parenthèses ouvrante et fermante sont inutiles en cas de respect de la norme POSIX. De son côté, WeiDU suit la notation d'Emacs (voir Wikipedia) comme indiqué au chapitre 12 et a donc besoin de ces \.
WeiDU devrait accepter cette forme. Si ça ne marche pas, je ne pense pas qu'il y ait d'autre solution que les 45 lignes.
Avatar du membre
Akadis
Adepte de Grondemarteau
Araignée éclipsante
Messages : 1224
Enregistré le : lun. 28 avr. 2003, 10:58
Localisation : Bordeaux
Contact :
Statut : Hors ligne
.

Message par Akadis »

Weidu sait copier les contenus des dossiers.
Tu peux donc mettre tes fichiers dans un sous dossier de ton mod et faire :
COPY ~MonMod/MonDossier~ ~override~
Je l'ai utilisé dans le mod de l'extension de la quête de Jan.
Développeur du mod Akadis version disponible Beta 3.1b : envoyez moi un M. P
Responsable de la maintenance du mod
Kim
Avatar du membre
deratiseur
Golem de fer
Messages : 3697
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message par deratiseur »

De retour 7 ans plus tard pour donner la solution que j'ai trouvé je ne sais plus quand après de multiple essais et demandes.
pour copier des fichiers finissant par C en les mêmes fichiers finissant par B, il faut tous les mettre dans un répertoire (dans l'exemple si dessous je les ai mises dans le répertoire "Spell icons"), puis copier ce répertoire avec l'instruction suivante :
ACTION_BASH_FOR ~Derats_kits/Warlord/Bams/Spell icons~ ~.+\c.bam$~ BEGIN
OUTER_INNER_PATCH_SAVE new "%BASH_FOR_RES%" BEGIN REPLACE_TEXTUALLY ~c$~ ~b~ END
COPY ~%BASH_FOR_FILESPEC%~ ~override/%new%.bam~
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.
Avatar du membre
Haplo74
Minotaure
Messages : 1737
Enregistré le : dim. 08 avr. 2012, 20:20
Localisation : Paris
Statut : Hors ligne
.

Message par Haplo74 »

Bonjour,

Je ne suis pas vraiment calé en programmation Weidu.
Mais y'a-t-il une contre-indication à utiliser les COPY_EXISTING plutôt que COPY ?
Dans le mod Unique Artefacts, l'auteur utilisait une syntaxe proche des expressions régulières qui semble répondre au besoin.

Dans mon script de nettoyage des objets de Secret of Bone Hill, j'ai repris ce type de syntaxe:
COPY_EXISTING_REGEXP GLOB ~^BH.+\.are$~ ~override~

Ca n'est pas le type d'opération qui est recherché ?

Morceau de code:

Code : Tout sélectionner

//définition des objets à supprimer

OUTER_SPRINT ~amulets~ ~AMUL14\|AMUL15\|AMUL16\|AMUL17\|AMUL19\|AMUL20\|AMUL21\|AMUL22\|AMUL23\|AMUL25\|AMUL26\|AMUL27\|AMUL28\|CHALCY3\|IPSION\|MISC5E\|MISC73\|MISC9S\|WA2AMU~
OUTER_SPRINT ~bracers~ ~BRAC03\|BRAC04\|BRAC06\|BRAC07\|BRAC08\|BRAC09\|BRAC10\|BRAC11\|BRAC13\|BRAC14\|BRAC15\|BRAC16\|BRAC17\|BRAC18\|BRAC19\|BRAC20\|BRAC21\|BRAC22\|BRAC23\|BRAC24\|BRAC25\|BRAC26~
OUTER_SPRINT ~cloaks~ ~CLCK02\|CLCK03\|CLCK04\|CLCK05\|CLCK06\|CLCK07\|CLCK08\|CLCK20\|CLCK21\|CLCK22\|CLCK23\|CLCK24\|CLCK25\|CLCK26\|CLCK27\|CLCK28\|CLCK30\|CLCK31\|CLCK32\|COMPON16\|DWCLCK01\|MISC9W~
OUTER_SPRINT ~boots~ ~BOOT01\|BOOT02\|BOOT03\|BOOT04\|BOOT05\|BOOT07\|BOOT08\|BOOT10\|BOOT11\|BOOT12\|BOOTDRIZ\|MISC8J\|MOVE7\|TROLLBOO~
OUTER_SPRINT ~belts~ ~BELT02\|BELT03\|BELT04\|BELT05\|BELT06\|BELT07\|BELT08\|BELT09\|BELT10\|BELT11~
OUTER_SPRINT ~rings~ ~ALDETH\|FAMMY\|FIRERING\|FREERING\|IMPINVIS\|JWSUPER\|MAGE01\|MAGE05\|MISC72\|MISC88\|NOCIRC\|RING02\|RING03\|RING05\|RING07\|RING08\|RING09\|RING20\|RING21\|RING22\|RING23\|RING25\|RING26\|RING27\|RING28\|RING29\|RING30\|RING31\|RING33\|RING34\|RING35\|RING36\|RING37\|RING39\|RING40\|RING41\|RING42\|RING46\|RINGPICO\|ROSSLAND\|ROSSRING\|WA2RING~
OUTER_SPRINT ~wands~ ~WAND12\|WAND13\|WAND15\|WAND18\|WAND19~
OUTER_SPRINT ~rods~ ~RODS01\|RODS02\|RODS03\|RODS06~
OUTER_SPRINT ~armors~ ~BRUENPLA\|CHALARM\|CHAN03\|CHAN06\|CHAN07\|CHAN08\|CHAN09\|CHAN10\|CHAN11\|CHAN12\|CHAN13\|CHAN14\|CHAN15\|CHAN16\|CHAN17\|CHAN18\|CHAN19\|CHAN20\|CHAN21\|CLCK15\|CLCK16\|CLCK17\|CLCK19\|CLCK29\|CLOLTH\|DWCHAN01\|DWCHAN02\|DWPLAT01\|HGWRA02\|LEAT03\|LEAT06\|LEAT07\|LEAT08\|LEAT09\|LEAT11\|LEAT12\|LEAT13\|LEAT14\|LEAT15\|LEAT16\|LEAT17\|LEAT18\|LEAT19\|LEAT20\|LEAT21\|LEAT22\|LEAT23\|LEAT24\|PALPLAT\|PLAT05\|PLAT06\|PLAT09\|PLAT11\|PLAT12\|PLAT13\|PLAT14\|PLAT15\|PLAT16\|PLAT17\|PLAT18\|PLAT19\|PLAT20\|PLAT21\|PLAT22\|PLAT23\|SHARARM\|TAMCHAIN\|TTLEAT\|VISCLCK1\|VISCLCK2\|VISCLCK3\|VISCLCK4\|VISCLCK5\|VISPLAT2\|WA2PLAT\|WA2ROBE~
OUTER_SPRINT ~shields~ ~CHALSHLD\|DWSHLD01\|SHLD07\|SHLD19\|SHLD20\|SHLD21\|SHLD22\|SHLD23\|SHLD24\|SHLD25\|SHLD26\|SHLD27\|SHLD28\|SHLD29\|SHLD30\|SHLD31\|SHLD32\|TTSHLD01\|WA2SHIEL~
OUTER_SPRINT ~helms~ ~CHALHELM\|COMPON05\|COMPON17\|HELM02\|HELM03\|HELM04\|HELM05\|HELM06\|HELM07\|HELM14\|HELM16\|HELM17\|HELM18\|HELM19\|HELM20\|HELM21\|HELM23\|HELM24\|HELM25\|HELM26\|HELM27\|HELM28\|HELM29\|HELM30\|HELM31\|HELM32\|HELM33\|HELM34\|HELMNOAN\|PALHELM\|WA2HELM~

OUTER_SPRINT ~weapons~ ~AX1H03\|AX1H05\|AX1H06\|AX1H07\|AX1H08\|AX1H09\|AX1H10\|AX1H11\|AX1H12\|AX1H13\|AX1H14\|AX1H15\|AX1H16\|AX1H17\|BRUENAXE\|GIAFIR2\|WAAXE\|BOW07\|BOW08\|BOW09\|BOW10\|BOW11\|BOW12\|BOW13\|BOW14\|BOW15\|BOW16\|BOW17\|BOW18\|BOW19\|BOW20\|BOW21\|BOW22\|BOW23\|BOW24\|BOW25\|BOW26\|BOW99\|CATTIBOW\|GORWOM2\|NPBOW\|DWXBOW01\|XBOW03\|XBOW06\|XBOW07\|XBOW08\|XBOW09\|XBOW10\|XBOW13\|XBOW14\|XBOW15\|XBOW16\|XBOW17\|XBOW18\|DAGG03\|DAGG04\|DAGG06\|DAGG07\|DAGG08\|DAGG09\|DAGG11\|DAGG12\|DAGG13\|DAGG14\|DAGG15\|DAGG17\|DAGG18\|DAGG20\|DAGG21\|DAGG22\|DAGG23\|DAGG24\|MISC75\|NEBDAG\|RAVAG02\|SW1H13\|BLUN13\|BLUN14\|BLUN14D\|BLUN14E\|BLUN14F\|BLUN14G\|BLUN14H\|BLUN14I\|BLUN27\|BLUN30\|BLUN30C\|BLUN30D\|BLUN32\|DWBLUN01\|FLOLTH\|GORWOM4\|SENDAI\|WAFLAIL\|DWHALB01\|HALB03\|HALB04\|HALB05\|HALB06\|HALB07\|HALB08\|HALB09\|HALB10\|HALB11\|HALB12\|HALBSHA\|WA2HALB\|AEGIS\|AEGIS2\|GIAFIR\|HAMM03\|HAMM04\|HAMM05\|HAMM06\|HAMM07\|HAMM08\|HAMM09\|HAMM10\|HAMM11\|HAMM12\|BLUN10\|BLUN12\|BLUN18\|BLUN19\|BLUN20\|BLUN21\|BLUN22\|BLUN23\|BLUN24\|BLUN25\|BLUN26\|BLUN28\|BLUN29\|BLUN31\|BLUN33\|HLOLTH\|RODMACE\|BLUN09\|BLUN15\|BLUN16\|BLUN17\|BLUN34\|BLUN35\|WASTAR\|CHALCY1\|CHALCY2\|CHEVIL10\|FBLADE\|NPSW05\|NPSW06\|SBLADE\|SHAKTI1\|STDEATH\|SW1H09\|SW1H10\|SW1H25\|SW1H26\|SW1H27\|SW1H28\|SW1H29\|SW1H58\|SW1H59\|SW1H66\|SW1H74\|WAWAK\|SLNG03\|SLNG04\|SLNG05\|SLNG06\|SLNG07\|SLNG08\|SLNG09\|SLNG10\|WASLING\|DWSPER01\|SPER03\|SPER05\|SPER06\|SPER07\|SPER08\|SPER09\|SPER10\|SPER11\|SPER12\|WASPEAR\|AURSTAF\|ENSTAFF\|MISC5T\|NPSTAF\|RODS04\|RODS05\|STAF05\|STAF06\|STAF07\|STAF08\|STAF09\|STAF10\|STAF11\|STAF12\|STAF13\|STAF14\|STAF15\|STAF16\|STAF17\|STAF18\|STAF19\|STAF20\|STAF21\|STAF22\|STAF23\|STAF24\|WASTAFF\|BLAKBLAD\|CARSOMYR\|DEMOSUM4\|DEVA\|DEVAEVIL\|DWSW1H01\|DWSW1H02\|GITH\|GORCAMB\|HSWORD\|KILLSW01\|MARILI\|MISCBC\|PLANETAR\|REAVER\|SW1H03\|SW1H06\|SW1H11\|SW1H15\|SW1H16\|SW1H18\|SW1H19\|SW1H23\|SW1H24\|SW1H30\|SW1H31\|SW1H32\|SW1H33\|SW1H33A\|SW1H33C\|SW1H34\|SW1H35\|SW1H36\|SW1H37\|SW1H38\|SW1H39\|SW1H40\|SW1H41\|SW1H42\|SW1H45\|SW1H50\|SW1H51\|SW1H52\|SW1H53\|SW1H54\|SW1H55\|SW1H60\|SW1H61\|SW1H62\|SW1H63\|SW1H64\|SW1H65\|SW1H67\|SW1H68\|SW1H68A\|SW1H68C\|SW1H69\|SW1H69C\|SW1H70\|SW1H71\|SW1H72\|SW1H73\|SW1H75\|SW1H76\|SW1H77\|SW1H99\|SW1HSEEK\|SW2H03\|SW2H06\|SW2H07\|SW2H08\|SW2H09\|SW2H10\|SW2H11\|SW2H12\|SW2H13\|SW2H14\|SW2H15\|SW2H16\|SW2H17\|SW2H18\|SW2H19\|SW2H20\|SW2H21\|SW2H99\|SW2HDEAT\|TELSWD\|WA2DAK\|WA2S1H\|WANINJA\|WAS2H~
OUTER_SPRINT ~ammos~ ~AROW06\|AROW07\|AROW15\|QUIVER01\|QUIVER03\|BOLT09\|DWBOLT01\|DWBOLT02\|DWBOLT03\|KUOBOLT\|KUOBOLT2\|KUOBOLT3\|QUIVER02\|QUIVER04\|SAHBOLT\|BULL04\|BULL05\|BULL06\|QUIVER05\|QUIVER06\|DART05\|DART08\|DARTMEL\|STARDART~

OUTER_SPRINT ~containers~ ~BAG01\|BAG02\|BAG02B\|BAG02C\|BAG02D\|BAG02E\|BAG02F\|BAG02G\|BAG02H\|BAG02I\|BAG03\|BAG03B\|BAG03C\|BAG03D\|BAG03E\|BAG03F\|BAG03G\|BAG03H\|BAG03I\|BAG04\|BAG05\|BAG06\|BAG06B\|BAG06C\|BAG06D\|BAG19\|BAG19A\|BAG19B\|BAG19C\|BAG19D\|BAG19E\|BAG20\|BAG21\|BAG22\|BAG23\|BAG24\|BAG25\|BAG26\|BAG27\|BAG28\|BAG29\|BAG30\|BAG31\|TBAG01\|TBAG01NA~
OUTER_SPRINT ~other_items~ ~BOTSMITH\|COMPON06\|DAGG10\|DECK\|FIGURE01\|MISC3A\|MISC3A1\|MISC3A2\|MISC3A3\|MISC3A4\|MISC3A5\|MISC3A6\|MISC3A7\|MISC3A8\|MISC3A9\|MISC3C\|MISC3D\|MISC3E\|MISC3H\|MISC3I\|MISC3J\|MISC3K\|MISC3M\|MISC3N\|MISC3O\|MISC3P\|MISC7T\|PLOT02H\|TOME01\|TOME02\|TOME03\|TOME04\|WA2HARP~

//les combiner en un
OUTER_SPRINT ~all_items~ ~%amulets%\|%bracers%\|%cloaks%\|%boots%\|%belts%\|%rings%\|%wands%\|%rods%\|%armors%\|%shields%\|%helms%\|%weapons%\|%ammos%\|%containers%\|%other_items%~

PRINT ~Traitement des zones...~

COPY_EXISTING_REGEXP GLOB ~^BH.+\.are$~ ~override~
  SPRINT ~item2delete~ ~%all_items%~
LAUNCH_PATCH_MACRO ~DELETE_AREA_ITM_ALL~
BUT_ONLY_IF_IT_CHANGES

PRINT ~Traitement des magasins...~

COPY_EXISTING_REGEXP GLOB ~^BH.+\.sto$~ ~override~
  SPRINT ~item2delete~ ~%all_items%~
LAUNCH_PATCH_MACRO ~DELETE_STORE_ITM_ALL~
BUT_ONLY_IF_IT_CHANGES

PRINT ~Traitement des créatures...~

COPY_EXISTING_REGEXP GLOB ~^BH.+\.cre$~ ~override~
  SPRINT ~item2change~ ~%all_items%~
SET f_add = ~%f_add_nostdr%~ //non volable, non récupérable
LAUNCH_PATCH_MACRO ~ADD_CRE_ITM_FLAGS_ALL~
BUT_ONLY_IF_IT_CHANGES
Script complet dans ce [POST=310088]message[/POST]

Mais peut-être n'ai-je rien compris à l'énoncé initial ?

Haplo74
Modérateur des sections "le bazar de l'aventurier", "la taverne de Château-Suif", "la taverne d'Amkethran" et "le comptoir d'Amn".
Avatar du membre
Isaya
Adepte de Grondemarteau
Planaire
Messages : 6990
Enregistré le : mar. 22 juil. 2003, 21:03
Localisation : Plaisir
Contact :
Statut : Hors ligne
.

Message par Isaya »

Deratiseur voulait installer des fichiers propres à son mod, en les renommant au moment de la copie pour remplacer la terminaison B du nom par la terminaison C, sans doute pour utiliser la même image pour deux choses différentes. Mais dans le dernier code il a finalement choisi de faire l'inverse.
COPY_EXISTING nécessite que les fichiers existent dans le jeu, soit dans un fichier BIF, soit dans override. Cela ne peut pas convenir ici.
:!: Peu disponible
Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !
Avatar du membre
Haplo74
Minotaure
Messages : 1737
Enregistré le : dim. 08 avr. 2012, 20:20
Localisation : Paris
Statut : Hors ligne
.

Message par Haplo74 »

Isaya a écrit :Deratiseur voulait installer des fichiers propres à son mod, en les renommant au moment de la copie pour remplacer la terminaison B du nom par la terminaison C, sans doute pour utiliser la même image pour deux choses différentes. Mais dans le dernier code il a finalement choisi de faire l'inverse.
COPY_EXISTING nécessite que les fichiers existent dans le jeu, soit dans un fichier BIF, soit dans override. Cela ne peut pas convenir ici.
OK pour la différence COPY et COPY_EXISTING.
Mais n'existe-t-il pas le pendant COPY_REGEXP dans ce cas (pour REGular EXPression) et permettant de tout faire nativement (avec souvent des syntaxes bien alambiquées il faut le reconnaître) ?

Haplo74
Modérateur des sections "le bazar de l'aventurier", "la taverne de Château-Suif", "la taverne d'Amkethran" et "le comptoir d'Amn".
Avatar du membre
Isaya
Adepte de Grondemarteau
Planaire
Messages : 6990
Enregistré le : mar. 22 juil. 2003, 21:03
Localisation : Plaisir
Contact :
Statut : Hors ligne
.

Message par Isaya »

Il n'existe pas de COPY_REGEXP, pour une bonne raison, le principe REGEXP est basé sur le contenu existant du jeu. Il existe une option GLOB de COPY pour indiquer une utilisation d'expression régulière s'appliquant sur les fichiers du disque.
A COPY command may use globbing to expand filename wildcards with respect to files on the host filesystem. Unlike COPY_EXISTING_REGEXP, glob wildcards do not range over game resources. Instead, they range over physical files actually on the disk.
Mais il y a une mise en garde :
Use local filesystem globbing. Globbing is generally architecture specific!
Elle fonctionne également quasi indispensable avec COPY_EXISTING_REGEXP d'ailleurs, car elle a un impact majeur pour les mods (cf la documentation WeiDU) pour "glob") :
To put it another way: if you do not specify GLOB with COPY_EXISTING, WeiDU pretends that the override directory contains 0 files that are not in CHITIN.KEY.
:!: Peu disponible
Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !
Répondre

Retourner vers « Programmation WeiDU »

Qui est en ligne

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