Kategorien
Benutzer:Count Ypsilon/Skript:cf.pl: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
(Cool, wenn man <pre> verwendet, muss man nicht in jede Zeile <nowiki> schreiben...) |
||
Zeile 3: | Zeile 3: | ||
Über das Array "extra" kann bei bestimmten Charakterfähigkeiten eine zusätzliche Spalte an die Tabelle angehängt werden. | Über das Array "extra" kann bei bestimmten Charakterfähigkeiten eine zusätzliche Spalte an die Tabelle angehängt werden. | ||
<pre> | |||
#!/usr/bin/perl | |||
use strict; | |||
my $cfs = [ | |||
{ "name" => "Schusswaffen", "gw" => 160000, "mx" => 12 }, | |||
{ "name" => "Gruppenheilung", "gw" => 18000, "mx" => 150 }, | |||
{ "name" => "Angriffsenergie", "gw" => 200000, "mx" => 10 }, | |||
{ "name" => "Auftragsplanung", "gw" => 17200, "mx" => 70 }, | |||
{ "name" => "Diebstahlschutzwissen", "gw" => 70000, "mx" => 50 }, | |||
{ "name" => "Getreideverarbeitung", "gw" => 40000, "mx" => 30 }, | |||
{ "name" => "Gewebeforschung", "gw" => 29000, "mx" => 50 }, | |||
{ "name" => "Goldabbau", "gw" => 110000, "mx" => 30 }, | |||
{ "name" => "Glück", "gw" => 40000, "mx" => 15 }, | |||
{ "name" => "Innere Macht", "gw" => 90000, "mx" => 50 }, | |||
{ "name" => "Jagd", "gw" => 58000, "mx" => 50 }, | |||
{ "name" => "Kochkunst", "gw" => 55000, "mx" => 80 }, | |||
{ "name" => "Lebensenergie", "gw" => 65000, "mx" => 30 }, | |||
{ "name" => "Lebenstraining", "gw" => 85000, "mx" => 50 }, | |||
{ "name" => "Lerntechnik", "gw" => 35000, "mx" => 50 }, | |||
{ "name" => "Magieverlängerung", "gw" => 120000, "mx" => 30 }, | |||
{ "name" => "Marktwirtschaft", "gw" => 25000, "mx" => 50 }, | |||
{ "name" => "Ölverwaltung", "gw" => 65000, "mx" => 60 }, | |||
{ "name" => "Plünderung", "gw" => 93000, "mx" => 30 }, | |||
{ "name" => "Reparaturwissen", "gw" => 30000, "mx" => 30 }, | |||
{ "name" => "Selbstheilung", "gw" => 80000, "mx" => 80 }, | |||
{ "name" => "Stärketraining", "gw" => 75000, "mx" => 50 }, | |||
{ "name" => "Überzeugungskraft", "gw" => 85000, "mx" => 50 }, | |||
{ "name" => "Waffenkunst", "gw" => 65000, "mx" => 30 }, | |||
{ "name" => "Zauberkunst", "gw" => 600000, "mx" => 3 } | |||
]; | |||
my $extra = { | |||
"Schusswaffen" => { | |||
"head" => "Anwendbarer Bogen", | |||
"1" => "[[Einfacher Holzbogen]]", | |||
"2" => "[[Einfacher Eisenbogen]]", | |||
"3" => "[[Holzarmbrust der Erfahrung]]", | |||
"4" => "[[Kleine Armbrust des Lebens]]", | |||
"5" => "[[Armbrust der Seelen]]", | |||
"6" => "[[Armbrust der Schutzauflösung]]", | |||
"7" => "[[Armbrust des Donners]]", | |||
"8" => "[[Armbrust der Präzision]]", | |||
"9" => "[[Bogen des Lebens]]", | |||
"10" => "[[Durchschlagende Armbrust]]", | |||
"11" => "[[Armbrust der starken Schutzauflösung]]", | |||
"12" => "[[Bogen des starken Lebens]]" | |||
}, | |||
"Zauberkunst" => { | |||
"head" => "Anwendbarer Zauber", | |||
"1" => "-", | |||
"2" => "[[Effektiver Jerodar-Diebstahlzauber]]", | |||
"3" => "[[Starker Jerodar-Diebstahlzauber]]" | |||
}, | |||
}; | |||
foreach my $cf(@{$cfs}) | |||
{ | |||
my $grundwert = $cf->{"gw"}; | |||
my $maxstufe = $cf->{"mx"}; | |||
my $maxlt = ($cf->{"name"} eq "Lerntechnik") ? 0 : 50; | |||
my $ex = $extra->{$cf->{"name"}}; | |||
my $colspan = (defined($ex) ? 12 : 11); | |||
open(FILE, ">".lc($cf->{"name"}).".txt"); | |||
print FILE <<EOF; | |||
<!-- gw=$grundwert mx=$maxstufe --> | |||
'''Lernzeit pro Stufe, abhängig von der Lerntechnik: ''' ''(Angaben in Tagen:Stunden:Minuten)'' | |||
{| {{Prettytable}} | |||
| | |||
|colspan="$colspan" align="center" bgcolor=#FFFFCC |'''[[Lerntechnik]]''' | |||
|- | |||
!bgcolor=#FFEECB|Stufe | |||
!bgcolor=#FFFFCC|0 | |||
EOF | |||
print FILE <<EOF if ($maxlt>0); | |||
!bgcolor=#FFFFCC|5 | |||
!bgcolor=#FFFFCC|10 | |||
!bgcolor=#FFFFCC|15 | |||
!bgcolor=#FFFFCC|20 | |||
!bgcolor=#FFFFCC|25 | |||
!bgcolor=#FFFFCC|30 | |||
!bgcolor=#FFFFCC|35 | |||
!bgcolor=#FFFFCC|40 | |||
!bgcolor=#FFFFCC|45 | |||
!bgcolor=#FFFFCC|50 | |||
EOF | |||
print FILE "!bgcolor=#FFEECB|".$ex->{"head"}."\n" if (defined($ex)); | |||
for(my $stufe=1; $stufe<=$maxstufe; $stufe++) | |||
{ | |||
print FILE "|-\n"; | |||
print FILE "|bgcolor=#FFFFCC|'''$stufe'''\n"; | |||
my $blockfarbe = (($stufe-1)/5)%2; | |||
for (my $lerntech = 0; $lerntech <= $maxlt; $lerntech += 5) | |||
{ | |||
my $lernfaktor = 0.95 ** $lerntech; | |||
my $sekunden = ($stufe-1) * $grundwert * $lernfaktor; | |||
printf FILE "|bgcolor=#%s|%02d:%02d:%02d\n", | |||
(($lerntech + $blockfarbe) % 2) ? "" : "FFEECB", | |||
$sekunden / 86400, | |||
($sekunden % 86400) / 3600, | |||
($sekunden % 3600) / 60; | |||
} | |||
print FILE "|bgcolor=#FFFFCC|".$ex->{$stufe}."\n" if (defined($ex)); | |||
} | |||
print FILE <<EOF; | |||
|} | |||
'''Gesamtlernzeit bis zur jeweiligen Stufe, abhängig von der Lerntechnik: ''' ''(Angaben in Tagen:Stunden:Minuten)'' | |||
{| {{Prettytable}} | |||
| | |||
|colspan="$colspan" align="center" bgcolor=#FFFFCC |'''[[Lerntechnik]]''' | |||
|- | |||
!bgcolor=#FFEECB|Stufe | |||
!bgcolor=#FFFFCC|0 | |||
EOF | |||
print FILE <<EOF if ($maxlt>0); | |||
!bgcolor=#FFFFCC|5 | |||
!bgcolor=#FFFFCC|10 | |||
!bgcolor=#FFFFCC|15 | |||
!bgcolor=#FFFFCC|20 | |||
!bgcolor=#FFFFCC|25 | |||
!bgcolor=#FFFFCC|30 | |||
!bgcolor=#FFFFCC|35 | |||
!bgcolor=#FFFFCC|40 | |||
!bgcolor=#FFFFCC|45 | |||
!bgcolor=#FFFFCC|50 | |||
EOF | |||
print FILE "!bgcolor=#FFEECB|".$ex->{"head"}."\n" if (defined($ex)); | |||
my $step = 1; | |||
$step = 5 if ($maxstufe > 14); | |||
my $zeile = 1; | |||
for(my $stufe=$step; $stufe<=$maxstufe; $stufe+=$step) | |||
{ | |||
print FILE "|-\n"; | |||
print FILE "|bgcolor=#FFFFCC|'''$stufe'''\n"; | |||
my $blockfarbe = (($zeile-1)/5)%2; | |||
for (my $lerntech = 0; $lerntech <= $maxlt; $lerntech += 5) | |||
{ | |||
my $lernfaktor = 0.95 ** $lerntech; | |||
my $sekunden = reihe($stufe-1) * $grundwert * $lernfaktor; | |||
printf FILE "|bgcolor=#%s|%02d:%02d:%02d\n", | |||
(($lerntech + $blockfarbe) % 2) ? "FFEECB" : $blockfarbe, | |||
$sekunden / 86400, | |||
($sekunden % 86400) / 3600, | |||
($sekunden % 3600) / 60; | |||
} | |||
print FILE "|bgcolor=#FFFFCC|".$ex->{$stufe}."\n" if (defined($ex)); | |||
$zeile++; | |||
} | |||
print FILE "|}\n"; | |||
close FILE; | |||
} | |||
sub reihe | |||
{ | |||
my $z = shift; | |||
return ($z * ($z + 1) / 2); | |||
} | |||
</pre> |
Version vom 3. Oktober 2006, 21:59 Uhr
Dieses Skript erzeugt für jede im anfangs definierten Array erwähnte Charakterfähigkeit eine Datei, in der sich die Lernzeit- und die Gesamtlernzeit-Tabellen befinden. Grundwert ("gw") und maximale Ausbaustufe ("mx") sind geeignet zu wählen.
Über das Array "extra" kann bei bestimmten Charakterfähigkeiten eine zusätzliche Spalte an die Tabelle angehängt werden.
#!/usr/bin/perl use strict; my $cfs = [ { "name" => "Schusswaffen", "gw" => 160000, "mx" => 12 }, { "name" => "Gruppenheilung", "gw" => 18000, "mx" => 150 }, { "name" => "Angriffsenergie", "gw" => 200000, "mx" => 10 }, { "name" => "Auftragsplanung", "gw" => 17200, "mx" => 70 }, { "name" => "Diebstahlschutzwissen", "gw" => 70000, "mx" => 50 }, { "name" => "Getreideverarbeitung", "gw" => 40000, "mx" => 30 }, { "name" => "Gewebeforschung", "gw" => 29000, "mx" => 50 }, { "name" => "Goldabbau", "gw" => 110000, "mx" => 30 }, { "name" => "Glück", "gw" => 40000, "mx" => 15 }, { "name" => "Innere Macht", "gw" => 90000, "mx" => 50 }, { "name" => "Jagd", "gw" => 58000, "mx" => 50 }, { "name" => "Kochkunst", "gw" => 55000, "mx" => 80 }, { "name" => "Lebensenergie", "gw" => 65000, "mx" => 30 }, { "name" => "Lebenstraining", "gw" => 85000, "mx" => 50 }, { "name" => "Lerntechnik", "gw" => 35000, "mx" => 50 }, { "name" => "Magieverlängerung", "gw" => 120000, "mx" => 30 }, { "name" => "Marktwirtschaft", "gw" => 25000, "mx" => 50 }, { "name" => "Ölverwaltung", "gw" => 65000, "mx" => 60 }, { "name" => "Plünderung", "gw" => 93000, "mx" => 30 }, { "name" => "Reparaturwissen", "gw" => 30000, "mx" => 30 }, { "name" => "Selbstheilung", "gw" => 80000, "mx" => 80 }, { "name" => "Stärketraining", "gw" => 75000, "mx" => 50 }, { "name" => "Überzeugungskraft", "gw" => 85000, "mx" => 50 }, { "name" => "Waffenkunst", "gw" => 65000, "mx" => 30 }, { "name" => "Zauberkunst", "gw" => 600000, "mx" => 3 } ]; my $extra = { "Schusswaffen" => { "head" => "Anwendbarer Bogen", "1" => "[[Einfacher Holzbogen]]", "2" => "[[Einfacher Eisenbogen]]", "3" => "[[Holzarmbrust der Erfahrung]]", "4" => "[[Kleine Armbrust des Lebens]]", "5" => "[[Armbrust der Seelen]]", "6" => "[[Armbrust der Schutzauflösung]]", "7" => "[[Armbrust des Donners]]", "8" => "[[Armbrust der Präzision]]", "9" => "[[Bogen des Lebens]]", "10" => "[[Durchschlagende Armbrust]]", "11" => "[[Armbrust der starken Schutzauflösung]]", "12" => "[[Bogen des starken Lebens]]" }, "Zauberkunst" => { "head" => "Anwendbarer Zauber", "1" => "-", "2" => "[[Effektiver Jerodar-Diebstahlzauber]]", "3" => "[[Starker Jerodar-Diebstahlzauber]]" }, }; foreach my $cf(@{$cfs}) { my $grundwert = $cf->{"gw"}; my $maxstufe = $cf->{"mx"}; my $maxlt = ($cf->{"name"} eq "Lerntechnik") ? 0 : 50; my $ex = $extra->{$cf->{"name"}}; my $colspan = (defined($ex) ? 12 : 11); open(FILE, ">".lc($cf->{"name"}).".txt"); print FILE <<EOF; <!-- gw=$grundwert mx=$maxstufe --> '''Lernzeit pro Stufe, abhängig von der Lerntechnik: ''' ''(Angaben in Tagen:Stunden:Minuten)'' {| {{Prettytable}} | |colspan="$colspan" align="center" bgcolor=#FFFFCC |'''[[Lerntechnik]]''' |- !bgcolor=#FFEECB|Stufe !bgcolor=#FFFFCC|0 EOF print FILE <<EOF if ($maxlt>0); !bgcolor=#FFFFCC|5 !bgcolor=#FFFFCC|10 !bgcolor=#FFFFCC|15 !bgcolor=#FFFFCC|20 !bgcolor=#FFFFCC|25 !bgcolor=#FFFFCC|30 !bgcolor=#FFFFCC|35 !bgcolor=#FFFFCC|40 !bgcolor=#FFFFCC|45 !bgcolor=#FFFFCC|50 EOF print FILE "!bgcolor=#FFEECB|".$ex->{"head"}."\n" if (defined($ex)); for(my $stufe=1; $stufe<=$maxstufe; $stufe++) { print FILE "|-\n"; print FILE "|bgcolor=#FFFFCC|'''$stufe'''\n"; my $blockfarbe = (($stufe-1)/5)%2; for (my $lerntech = 0; $lerntech <= $maxlt; $lerntech += 5) { my $lernfaktor = 0.95 ** $lerntech; my $sekunden = ($stufe-1) * $grundwert * $lernfaktor; printf FILE "|bgcolor=#%s|%02d:%02d:%02d\n", (($lerntech + $blockfarbe) % 2) ? "" : "FFEECB", $sekunden / 86400, ($sekunden % 86400) / 3600, ($sekunden % 3600) / 60; } print FILE "|bgcolor=#FFFFCC|".$ex->{$stufe}."\n" if (defined($ex)); } print FILE <<EOF; |} '''Gesamtlernzeit bis zur jeweiligen Stufe, abhängig von der Lerntechnik: ''' ''(Angaben in Tagen:Stunden:Minuten)'' {| {{Prettytable}} | |colspan="$colspan" align="center" bgcolor=#FFFFCC |'''[[Lerntechnik]]''' |- !bgcolor=#FFEECB|Stufe !bgcolor=#FFFFCC|0 EOF print FILE <<EOF if ($maxlt>0); !bgcolor=#FFFFCC|5 !bgcolor=#FFFFCC|10 !bgcolor=#FFFFCC|15 !bgcolor=#FFFFCC|20 !bgcolor=#FFFFCC|25 !bgcolor=#FFFFCC|30 !bgcolor=#FFFFCC|35 !bgcolor=#FFFFCC|40 !bgcolor=#FFFFCC|45 !bgcolor=#FFFFCC|50 EOF print FILE "!bgcolor=#FFEECB|".$ex->{"head"}."\n" if (defined($ex)); my $step = 1; $step = 5 if ($maxstufe > 14); my $zeile = 1; for(my $stufe=$step; $stufe<=$maxstufe; $stufe+=$step) { print FILE "|-\n"; print FILE "|bgcolor=#FFFFCC|'''$stufe'''\n"; my $blockfarbe = (($zeile-1)/5)%2; for (my $lerntech = 0; $lerntech <= $maxlt; $lerntech += 5) { my $lernfaktor = 0.95 ** $lerntech; my $sekunden = reihe($stufe-1) * $grundwert * $lernfaktor; printf FILE "|bgcolor=#%s|%02d:%02d:%02d\n", (($lerntech + $blockfarbe) % 2) ? "FFEECB" : $blockfarbe, $sekunden / 86400, ($sekunden % 86400) / 3600, ($sekunden % 3600) / 60; } print FILE "|bgcolor=#FFFFCC|".$ex->{$stufe}."\n" if (defined($ex)); $zeile++; } print FILE "|}\n"; close FILE; } sub reihe { my $z = shift; return ($z * ($z + 1) / 2); }