Участник:Cypselus/usefultools: различия между версиями
Материал из Dwarf Fortress Wiki
Перейти к навигацииПерейти к поиску
ArexBot (обсуждение | вклад) м (Замена текста — «raw|DF2010:plant» на «raw|:plant») |
ArexBot (обсуждение | вклад) м (Замена текста — «DF2010:» на «») |
||
Строка 1: | Строка 1: | ||
=Выход новой версии= | |||
* обновить [[Шаблон:Current/version]] | |||
* собрать gold plated. | |||
** Скачать [http://dl.dropbox.com/u/23157200/patch_goldpalted191.zip пакет изменений], распаковать в ./patch | |||
** Скачать [http://dl.dropbox.com/u/23157200/dorelease.sh автосборщик] и положить в ./ | |||
** Опубликовать обновления | |||
** Поправить ссылки в [[Графическая версия]] | |||
* обновление характеристик существ | |||
В подавляющем большинстве релизов происходило изменение ./raw {{Catlink|Raw_files|файлов для существ}}, достаточно вставить содержимое файла, добавив в конце строку: | |||
<nowiki><noinclude>[[Category:Raw files]]</noinclude></nowiki> | |||
Особым файлом является [[Creature_standard.txt]], из-за его размеров его разделили на 3, при этом в начале каждого идут строки: | |||
creature_standard | |||
[OBJECT:CREATURE] | |||
== Всякое-разное== | |||
* [http://dl.dropbox.com/u/23157200/checknew.sh утилита сравнения ./raw разных релизов] | |||
* генератор name/raw файлов | |||
<pre>cat `find ./raw -iname "*txt"` |perl -wlne ' | |||
{SWITCH: | |||
if (/.*\[OBJECT\:(.*?)\].*/g) | |||
{ $obj = lc $1; $OBJ = $1} | |||
if (/.*\[(?:PLANT|INORGANIC|CREATURE)\:(.*?)\].*/g) | |||
{print "*[[$name]] --> [[$name]] --> [[$name/raw]]<br/><nowiki> <noinclude>{{raw header|$obj|$item}}</noinclude>{{raw|$fname.txt|$OBJ|$item}}<noinclude>{{raw footer|$obj|$item}}</noinclude></nowiki>"; | |||
$item=$1;} | |||
if (/((?:inorganic|plant|creature)_[a-z_]+)\r/g) | |||
{ $fname=$1;} | |||
if (/.*\[(?:NAME|INORGANIC)\:(.*?)[:\]]+.*/g) | |||
{ $name = lc $1;} | |||
}' | |||
</pre> | |||
{| class="collapsible collapsed infobox" style="background-color: #f9f9f9;" | |||
! colspan="2" style="border: 1px solid #aaa; font-weight:bold; background-color: #ccf; padding-left: 1em; padding-right: 1em;" | '''Результат работы''' | |||
|- | |||
| | |||
*[[muck root]] --> [[muck root]] --> [[muck root/raw]]<br/><nowiki> <noinclude>{{raw header|plant|ROOT_MUCK}}</noinclude>{{raw|:plant_standard.txt|PLANT|ROOT_MUCK}}<noinclude>{{raw footer|plant|ROOT_MUCK}}</noinclude></nowiki> | |||
*[[bloated tuber]] --> [[bloated tuber]] --> [[bloated tuber/raw]]<br/><nowiki> <noinclude>{{raw header|plant|TUBER_BLOATED}}</noinclude>{{raw|:plant_standard.txt|PLANT|TUBER_BLOATED}}<noinclude>{{raw footer|plant|TUBER_BLOATED}}</noinclude></nowiki> | |||
*[[spinel_red]] --> [[spinel_red]] --> [[spinel_red/raw]]<br/><nowiki> <noinclude>{{raw header|inorganic|SPINEL_RED}}</noinclude>{{raw|inorganic_stone_gem.txt|INORGANIC|SPINEL_RED}}<noinclude>{{raw footer|inorganic|SPINEL_RED}}</noinclude></nowiki> | |||
*[[fairy]] --> [[fairy]] --> [[fairy/raw]]<br/><nowiki> <noinclude>{{raw header|creature|FAIRY}}</noinclude>{{raw|:creature_standard.txt|CREATURE|FAIRY}}<noinclude>{{raw footer|creature|FAIRY}}</noinclude></nowiki> | |||
*[[pixie]] --> [[pixie]] --> [[pixie/raw]]<br/><nowiki> <noinclude>{{raw header|creature|PIXIE}}</noinclude>{{raw|:creature_standard.txt|CREATURE|PIXIE}}<noinclude>{{raw footer|creature|PIXIE}}</noinclude></nowiki> | |||
*[[beak dog]] --> [[beak dog]] --> [[beak dog/raw]]<br/><nowiki> <noinclude>{{raw header|creature|BEAK_DOG}}</noinclude>{{raw|:creature_standard.txt|CREATURE|BEAK_DOG}}<noinclude>{{raw footer|creature|BEAK_DOG}}</noinclude></nowiki> | |||
... | |||
|} | |||
* создание [[Dwarf file lookup]] | |||
grep -RF "[POSITION:" ./raw/ |perl -wlne 'print "$2=$1\|" if /\.\/raw\/objects\/(.*)\:.*\:(.*)]/' |sort >"dwarf file lookup" | |||
* поиск петов | |||
cat `find ./raw -type f` |perl -wlne 'if (/.*((?:\[PETVALUE\:\d+\]|\[CREATURE\:.*?\])).*/g) {$a= substr $1,1,8; if ($a eq "CREATURE") {$b=$1;} else {print "$1 $b";};}' | |||
* поиск источников шерсти | |||
cat `find ./raw -type f` |perl -wlne 'if (/.*((?:\[SHEARABLE_TISSUE_LAYER.*?\]|\[CREATURE\:.*?\])).*/g) {$a= substr $1,1,8; if ($a eq "CREATURE") {$b=$1;} else {print "$1 $b";};}' | |||
* поиск существа по тагу с параметром, например GRASSTRAMPLE | |||
cat `find ./raw -type f` |perl -wlne 'if (/.*((?:\[GRASSTRAMPLE.*?]|\[CREATURE\:.*?\])).*/g) {$a= substr $1,1,8; if ($a eq "CREATURE") {$b=$1;} else {print "$1 $b";};}' | |||
* создание частотного словаря значений тега [CV_REMOVE_TAG:] или [BIOME:] | |||
cat `find ./raw -type f` |perl -e 'while (<>){if (/.*\[CV_REMOVE_TAG\:(.*?)\].*/g){if(exists($list{$1})){$list{$1}++;}else{%list = (%list, $1, 1)}}} foreach(sort {$list{$a} <=> $list{$b}} keys %list) {print "$list{$_}\t$_\n";}' | |||
cat `find ./raw -type f` |perl -e 'while (<>){if (/.*\[BIOME\:(.*?)\].*/g){if(exists($list{$1})){$list{$1}++;}else{%list = (%list, $1, 1)}}} foreach(sort {$list{$a} <=> $list{$b}} keys %list) {print "$list{$_}\t$_\n";}' | |||
* создание wiki-списка существ по критерию, в данном случае по наличию тега [CANOPENDOORS.*?\] | |||
cat `find ./raw -type f` |perl -wlne 'if (/.*((?:\[CANOPENDOORS.*?\]|\[NAME\:(.*?)\:)).*/g) {$a= substr $1,1,4; if ($a eq "NAME") {$b=$2;} else {print "* [[$b]]";};}' | |||
{| class="collapsible collapsed infobox" style="background-color: #f9f9f9;" | |||
! colspan="2" style="border: 1px solid #aaa; font-weight:bold; background-color: #ccf; padding-left: 1em; padding-right: 1em;" | '''Результат работы''' | |||
|- | |||
| | |||
* [[blind cave ogre]] | |||
* [[blood man]] | |||
* [[molemarian]] | |||
* [[gabbro man]] | |||
* [[plump helmet man]] | |||
... | |||
|} | |||
** то же, но с иконкой | |||
<pre>cat `find ./raw -iname "*txt"` |perl -wlne ' | |||
{SWITCH: | |||
if (/.*\[CANOPENDOORS.*?\].*/g) | |||
{print "*$tile [[$name]]";} | |||
if (/.*\[(?:CREATURE_TILE)\:(.*?)\].*/g) | |||
{$tile=$1;} | |||
if (/.*\[(?:NAME)\:(.*?)\:.*/g) | |||
{$name=$1;} | |||
}' | |||
</pre> | |||
{| class="collapsible collapsed infobox" style="background-color: #f9f9f9;" | |||
! colspan="2" style="border: 1px solid #aaa; font-weight:bold; background-color: #ccf; padding-left: 1em; padding-right: 1em;" | '''Результат работы''' | |||
|- | |||
| | |||
*'O' [[blind cave ogre]] | |||
*'M' [[blood man]] | |||
*'M' [[molemarian]] | |||
*'M' [[gabbro man]] | |||
*'m' [[plump helmet man]] | |||
*'M' [[amethyst man]] | |||
*'t' [[troglodyte]] | |||
... | |||
|} |
Версия от 09:12, 19 апреля 2012
Выход новой версии
- обновить Шаблон:Current/version
- собрать gold plated.
- Скачать пакет изменений, распаковать в ./patch
- Скачать автосборщик и положить в ./
- Опубликовать обновления
- Поправить ссылки в Графическая версия
- обновление характеристик существ
В подавляющем большинстве релизов происходило изменение ./raw файлов для существ, достаточно вставить содержимое файла, добавив в конце строку:
<noinclude>[[Category:Raw files]]</noinclude>
Особым файлом является Creature_standard.txt, из-за его размеров его разделили на 3, при этом в начале каждого идут строки:
creature_standard [OBJECT:CREATURE]
Всякое-разное
- утилита сравнения ./raw разных релизов
- генератор name/raw файлов
cat `find ./raw -iname "*txt"` |perl -wlne ' {SWITCH: if (/.*\[OBJECT\:(.*?)\].*/g) { $obj = lc $1; $OBJ = $1} if (/.*\[(?:PLANT|INORGANIC|CREATURE)\:(.*?)\].*/g) {print "*[[$name]] --> [[$name]] --> [[$name/raw]]<br/> <noinclude>{{raw header|$obj|$item}}</noinclude>{{raw|$fname.txt|$OBJ|$item}}<noinclude>{{raw footer|$obj|$item}}</noinclude>"; $item=$1;} if (/((?:inorganic|plant|creature)_[a-z_]+)\r/g) { $fname=$1;} if (/.*\[(?:NAME|INORGANIC)\:(.*?)[:\]]+.*/g) { $name = lc $1;} }'
Результат работы | |
---|---|
... |
- создание Dwarf file lookup
grep -RF "[POSITION:" ./raw/ |perl -wlne 'print "$2=$1\|" if /\.\/raw\/objects\/(.*)\:.*\:(.*)]/' |sort >"dwarf file lookup"
- поиск петов
cat `find ./raw -type f` |perl -wlne 'if (/.*((?:\[PETVALUE\:\d+\]|\[CREATURE\:.*?\])).*/g) {$a= substr $1,1,8; if ($a eq "CREATURE") {$b=$1;} else {print "$1 $b";};}'
- поиск источников шерсти
cat `find ./raw -type f` |perl -wlne 'if (/.*((?:\[SHEARABLE_TISSUE_LAYER.*?\]|\[CREATURE\:.*?\])).*/g) {$a= substr $1,1,8; if ($a eq "CREATURE") {$b=$1;} else {print "$1 $b";};}'
- поиск существа по тагу с параметром, например GRASSTRAMPLE
cat `find ./raw -type f` |perl -wlne 'if (/.*((?:\[GRASSTRAMPLE.*?]|\[CREATURE\:.*?\])).*/g) {$a= substr $1,1,8; if ($a eq "CREATURE") {$b=$1;} else {print "$1 $b";};}'
- создание частотного словаря значений тега [CV_REMOVE_TAG:] или [BIOME:]
cat `find ./raw -type f` |perl -e 'while (<>){if (/.*\[CV_REMOVE_TAG\:(.*?)\].*/g){if(exists($list{$1})){$list{$1}++;}else{%list = (%list, $1, 1)}}} foreach(sort {$list{$a} <=> $list{$b}} keys %list) {print "$list{$_}\t$_\n";}' cat `find ./raw -type f` |perl -e 'while (<>){if (/.*\[BIOME\:(.*?)\].*/g){if(exists($list{$1})){$list{$1}++;}else{%list = (%list, $1, 1)}}} foreach(sort {$list{$a} <=> $list{$b}} keys %list) {print "$list{$_}\t$_\n";}'
- создание wiki-списка существ по критерию, в данном случае по наличию тега [CANOPENDOORS.*?\]
cat `find ./raw -type f` |perl -wlne 'if (/.*((?:\[CANOPENDOORS.*?\]|\[NAME\:(.*?)\:)).*/g) {$a= substr $1,1,4; if ($a eq "NAME") {$b=$2;} else {print "* $b";};}'
Результат работы | |
---|---|
... |
- то же, но с иконкой
cat `find ./raw -iname "*txt"` |perl -wlne ' {SWITCH: if (/.*\[CANOPENDOORS.*?\].*/g) {print "*$tile [[$name]]";} if (/.*\[(?:CREATURE_TILE)\:(.*?)\].*/g) {$tile=$1;} if (/.*\[(?:NAME)\:(.*?)\:.*/g) {$name=$1;} }'
Результат работы | |
---|---|
... |