Les Textures Utilisées Par Une Map Cs:source ? |
27/10/2004 - 09:31:12 |
Post
#1
|
|
Group: 17 Buddies Posts: 5 245 Joined: 15/01/2004 Team: KiNdReD |
Comment faire pour les lister ?
|
|
|
28/10/2004 - 00:50:52 |
Post
#2
|
|
Group: 17 Buddies Posts: 5 245 Joined: 15/01/2004 Team: KiNdReD |
bon j'ai solutionné mon probleme grace à un script perl .... et un bind magique bind "F4" "+mat_texture_list" .... et beaucoup de temps ...
et tout ça pour demeller un pack de map dont la moitié sont des beta et le reste des map sans grand interet .... QUOTE #!/usr/bin/perl my(%textures,$indicedir); $indicedir=0; #Charge la liste des textures du Pack sub analyseTexturesPacksDir { my ($materails,$parent)=@_; $indicedir+=1; $dirname=DIR . $indicedir; unless (opendir($dirname,$materails . "/" . $parent)) { die("$materails introuvable"); } while ($directory=readdir($dirname)) { if (($directory !~ /^\.$/) and ($directory!~ /^\.\.$/)) { if (-d $materails . "/" . $parent . "/" . $directory) { analyseTexturesPacksDir($materails . "/" . $parent, $directory); } else { $directory =~ s/\.\w*$//g; $texture= lc($parent . "/" . $directory); $textures{$texture}=$parent . "/" . $directory; } } } closedir($dirname); } sub loadTexturesPacks { my ($materials)=@_; unless (opendir(MATERIALS,$materials)) { die("$materails introuvable"); } while ($directory=readdir(MATERIALS)) { if (($directory ne ".") and ($directory ne "..")) { if (-d ($materials . "/" . $directory)) { analyseTexturesPacksDir($materials, $directory); } } } closedir(MATERIALS); } #Analyse le fichier de texture d'une map sub analyseTextureFile { my ($fichier, $materials, $cible)=@_; local($ligne,$target); unless (open(TEXTURES,$fichier)) { die("$fichier introuvable"); } $ligne=<TEXTURES>; #La première ligne c'est les titres des colonnes while ($ligne=<TEXTURES>) { chomp($ligne); $ligne =~ s/\\/\//g; $ligne=lc($ligne); $ligne =~ s/^([^\s]*)\s.*$/$1/g; if (defined($textures{$ligne})) { $rep=$textures{$ligne}; $fichier=$textures{$ligne}; $rep=~ s/^([^\/]*)\/(.*)$/$1/; $fichier=~ s/^([^\/]*)\/(.*)$/$2/; $target=$cible . "/materials"; if (! (-e $target)) { mkdir($target, 0777); } while ($rep ne $fichier) { $target = $target ."/". $rep; if (! (-e $target)) { mkdir($target, 0777); } $rep=$fichier; $rep=~ s/^([^\/]*)\/(.*)$/$1/; $fichier=~ s/^([^\/]*)\/(.*)$/$2/; } $cmdline="cp -p " . $materials . "/" . $textures{$ligne} . ".* " . $target; `$cmdline`; } } } #Code principal $mapDir="/home/nosferatu/HL2MapAnalyser/Packs"; $mapCible="/home/nosferatu/HL2MapAnalyser/Cible"; $mapTextures="/home/nosferatu/HL2MapAnalyser/Textures"; loadTexturesPacks($mapDir . "/materials"); my ($map); unless (opendir(MAPS,$mapDir . "/maps")) { die($mapDir . "/maps introuvable"); } while ($map=readdir(MAPS)) { if ($map =~ /\.bsp/) { if (-f ($mapDir . "/maps/" . $map)) { $map=~ s/\.bsp*$//g; mkdir($mapCible . "/". $map, 0777); mkdir($mapCible . "/". $map . "/maps", 0777); `cp -p $mapDir/maps/$map.* $mapCible/$map/maps/` ; if (-e ($mapTextures . "/" . $map . ".txt")) { analyseTextureFile($mapTextures . "/" . $map . ".txt", $mapDir . "/materials",$mapCible . "/". $map); } else { print "Can't find " . $map . ".txt\n"; } } } } closedir(MAPS); faudra que je le perfectionne un poil .... mais bon d'ici la sortie de HL² et l'arrivée du SDK permettant de créer des maps, les choses auront probablement changées donc ... |
|
|
Lo-Fi Version |
Skin © Chapo
|