Kategorien
Benutzer:Count Ypsilon/Skript:cf.pl: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
K (+Labortechnik) |
K (Anpassung an Labortechnik; bgcolor=#<nix>-Fehler korrigiert) |
||
Zeile 22: | Zeile 22: | ||
{ "name" => "Jagd", "gw" => 23200, "mx" => 50 }, | { "name" => "Jagd", "gw" => 23200, "mx" => 50 }, | ||
{ "name" => "Kochkunst", "gw" => 22000, "mx" => 80 }, | { "name" => "Kochkunst", "gw" => 22000, "mx" => 80 }, | ||
{ "name" => "Labortechnik", "gw" => 120000, "mx" => | { "name" => "Labortechnik", "gw" => 120000, "mx" => 11 }, | ||
{ "name" => "Lagerlogistik", "gw" => 25000, "mx" => 70 }, | { "name" => "Lagerlogistik", "gw" => 25000, "mx" => 70 }, | ||
{ "name" => "Lebensenergie", "gw" => 26000, "mx" => 30 }, | { "name" => "Lebensenergie", "gw" => 26000, "mx" => 30 }, | ||
Zeile 42: | Zeile 42: | ||
{ "name" => "Zaubertruhenwissen", "gw" => 100000, "mx" => 40 } | { "name" => "Zaubertruhenwissen", "gw" => 100000, "mx" => 40 } | ||
]; | ]; | ||
my $extra = { | my $extra = { | ||
Zeile 75: | Zeile 77: | ||
"Labortechnik" => { | "Labortechnik" => { | ||
"head" => "Herstellbare Zauber", | "head" => "Herstellbare Zauber (Mindest-XP zur Herstellung)", | ||
"1" => "[[Heimzauber]]", | "1" => "[[Heimzauber]] (500 XP)", | ||
"2" => "[[großer Heiltrank]]", | "2" => "[[großer Heiltrank]] (1.000 XP)", | ||
"3" => "[[Zauber der Stille]]", | "3" => "[[Zauber der Stille]] (1.500 XP)", | ||
"4" => "[[Zauber der Starre]]", | "4" => "[[Zauber der Starre]] (2.000 XP)", | ||
"5" => "[[Zauber der Vergiftung]]", | "5" => "[[Zauber der Vergiftung]] (2.500 XP)", | ||
"6" => "[[Zauber der Versteinerung]]", | "6" => "[[Zauber der Versteinerung]] (3.000 XP)", | ||
"7" => "[[schwache Lebenserweiterung]]", | "7" => "[[schwache Lebenserweiterung]] (3.500 XP)", | ||
"8" => "[[Gegenzauber: Starre]]", | "8" => "[[Gegenzauber: Starre]] (4.000 XP)", | ||
"9" => "[[Gegenzauber: Auflösung des Schutzes]]", | "9" => "[[Gegenzauber: Auflösung des Schutzes]] (4.500 XP)", | ||
"10" => "[[falsche Erfahrung]] (5.000 XP)", | |||
"11" => "[[strategischer Hinzauber]] (5.500 XP)", | |||
}, | }, | ||
}; | }; | ||
my $bgcolor_general = "FFFFCC"; # Hintergrundfarbe, falls nichts anderes definiert ist (gelb) | |||
my $bgcolor_block = "FFEECB"; # Hintergrundfarbe fuer den 5er-Block (orange) | |||
foreach my $cf(@{$cfs}) | foreach my $cf(@{$cfs}) | ||
Zeile 94: | Zeile 105: | ||
my $maxlt = ($cf->{"name"} eq "Lerntechnik") ? 0 : 50; | my $maxlt = ($cf->{"name"} eq "Lerntechnik") ? 0 : 50; | ||
my $ex = $extra->{$cf->{"name"}}; | my $ex = $extra->{$cf->{"name"}}; | ||
my $colspan = | my $colspan = 11; | ||
open(FILE, ">".lc($cf->{"name"}).".txt"); | open(FILE, ">".lc($cf->{"name"}).".txt"); | ||
Zeile 106: | Zeile 117: | ||
|- | |- | ||
| | | | ||
|colspan="$colspan" align="center" bgcolor=# | |colspan="$colspan" align="center" bgcolor=#$bgcolor_general |'''[[Lerntechnik]]''' | ||
|- | |- | ||
!bgcolor=# | !bgcolor=#$bgcolor_block|Stufe | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|0 | ||
EOF | EOF | ||
print FILE <<EOF if ($maxlt>0); | print FILE <<EOF if ($maxlt>0); | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|5 | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|10 | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|15 | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|20 | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|25 | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|30 | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|35 | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|40 | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|45 | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|50 | ||
EOF | EOF | ||
print FILE "!bgcolor=# | print FILE "!bgcolor=#$bgcolor_block|".$ex->{"head"}."\n" if (defined($ex)); | ||
for(my $stufe=1; $stufe<=$maxstufe; $stufe++) | for(my $stufe=1; $stufe<=$maxstufe; $stufe++) | ||
{ | { | ||
print FILE "|-\n"; | print FILE "|-\n"; | ||
print FILE "|bgcolor=# | print FILE "|bgcolor=#$bgcolor_general|'''$stufe'''\n"; | ||
my $blockfarbe = (($stufe-1)/5)%2; | my $blockfarbe = (($stufe-1)/5)%2; | ||
for (my $lerntech = 0; $lerntech <= $maxlt; $lerntech += 5) | for (my $lerntech = 0; $lerntech <= $maxlt; $lerntech += 5) | ||
Zeile 137: | Zeile 149: | ||
my $sekunden = ($stufe-1) * $grundwert * $lernfaktor; | my $sekunden = ($stufe-1) * $grundwert * $lernfaktor; | ||
printf FILE "|bgcolor=#%s|%02d:%02d:%02d\n", | printf FILE "|bgcolor=#%s|%02d:%02d:%02d\n", | ||
(($lerntech + $blockfarbe) % 2) ? "" : " | (($lerntech + $blockfarbe) % 2) ? "$bgcolor_general" : "$bgcolor_block", | ||
$sekunden / 86400, | $sekunden / 86400, | ||
($sekunden % 86400) / 3600, | ($sekunden % 86400) / 3600, | ||
($sekunden % 3600) / 60; | ($sekunden % 3600) / 60; | ||
} | } | ||
print FILE "|bgcolor=# | print FILE "|bgcolor=#$bgcolor_general|".$ex->{$stufe}."\n" if (defined($ex)); | ||
} | } | ||
Zeile 151: | Zeile 163: | ||
<div id="CFtotal"> | <div id="CFtotal"> | ||
{| {{Prettytable}} | {| {{Prettytable}} | ||
|+ style="text-align: left;" | <small style="float:right;">''(Angaben in Tagen:Stunden:Minuten)''</small>''' | |+ style="text-align: left;" | <small style="float:right;">''(Angaben in Tagen:Stunden:Minuten)''</small>'''Lernzeit pro Stufe, abhängig von der Lerntechnik: ''' | ||
|- | |- | ||
| | | | ||
|colspan="$colspan" align="center" bgcolor=# | |colspan="$colspan" align="center" bgcolor=#$bgcolor_general |'''[[Lerntechnik]]''' | ||
|- | |- | ||
!bgcolor=# | !bgcolor=#$bgcolor_block|Stufe | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|0 | ||
EOF | EOF | ||
print FILE <<EOF if ($maxlt>0); | print FILE <<EOF if ($maxlt>0); | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|5 | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|10 | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|15 | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|20 | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|25 | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|30 | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|35 | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|40 | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|45 | ||
!bgcolor=# | !bgcolor=#$bgcolor_general|50 | ||
EOF | EOF | ||
print FILE "!bgcolor=# | print FILE "!bgcolor=#$bgcolor_block|".$ex->{"head"}."\n" if (defined($ex)); | ||
my $step = 1; | my $step = 1; | ||
$step = 5 if ($maxstufe > 14); | $step = 5 if ($maxstufe > 14); | ||
my $zeile = 1; | my $zeile = 1; | ||
for(my $stufe=$step; $stufe<=$maxstufe; $stufe+=$step) | for(my $stufe=$step; $stufe<=$maxstufe; $stufe+=$step) | ||
{ | { | ||
print FILE "|-\n"; | print FILE "|-\n"; | ||
print FILE "|bgcolor=# | print FILE "|bgcolor=#$bgcolor_general|'''$stufe'''\n"; | ||
my $blockfarbe = (($zeile-1)/5)%2; | my $blockfarbe = (($zeile-1)/5)%2; | ||
for (my $lerntech = 0; $lerntech <= $maxlt; $lerntech += 5) | for (my $lerntech = 0; $lerntech <= $maxlt; $lerntech += 5) | ||
Zeile 188: | Zeile 201: | ||
my $sekunden = reihe($stufe-1) * $grundwert * $lernfaktor; | my $sekunden = reihe($stufe-1) * $grundwert * $lernfaktor; | ||
printf FILE "|bgcolor=#%s|%02d:%02d:%02d\n", | printf FILE "|bgcolor=#%s|%02d:%02d:%02d\n", | ||
(($lerntech + $blockfarbe) % 2) ? " | (($lerntech + $blockfarbe) % 2) ? "$bgcolor_block" : $bgcolor_general, | ||
$sekunden / 86400, | $sekunden / 86400, | ||
($sekunden % 86400) / 3600, | ($sekunden % 86400) / 3600, | ||
($sekunden % 3600) / 60; | ($sekunden % 3600) / 60; | ||
} | } | ||
print FILE "|bgcolor=# | print FILE "|bgcolor=#$bgcolor_general|".$ex->{$stufe}."\n" if (defined($ex)); | ||
$zeile++; | $zeile++; | ||
} | } |
Version vom 15. Januar 2009, 23:16 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" => "Angriffsenergie", "gw" => 80000, "mx" => 10 }, { "name" => "Auftragsbeziehung", "gw" => 80000, "mx" => 40 }, { "name" => "Auftragsplanung", "gw" => 6800, "mx" => 70 }, { "name" => "Bauwesen", "gw" => 25000, "mx" => 70 }, { "name" => "Diebstahlschutzwissen", "gw" => 28000, "mx" => 50 }, { "name" => "Getreideverarbeitung", "gw" => 16000, "mx" => 30 }, { "name" => "Gewebeforschung", "gw" => 11600, "mx" => 50 }, { "name" => "Goldabbau", "gw" => 44000, "mx" => 30 }, { "name" => "Glück", "gw" => 16000, "mx" => 15 }, { "name" => "Gruppenheilung", "gw" => 7200, "mx" => 120 }, { "name" => "Innere Macht", "gw" => 36000, "mx" => 50 }, { "name" => "Jagd", "gw" => 23200, "mx" => 50 }, { "name" => "Kochkunst", "gw" => 22000, "mx" => 80 }, { "name" => "Labortechnik", "gw" => 120000, "mx" => 11 }, { "name" => "Lagerlogistik", "gw" => 25000, "mx" => 70 }, { "name" => "Lebensenergie", "gw" => 26000, "mx" => 30 }, { "name" => "Lebenstraining", "gw" => 34000, "mx" => 50 }, { "name" => "Lerntechnik", "gw" => 14000, "mx" => 50 }, { "name" => "Magieverlängerung", "gw" => 48000, "mx" => 30 }, { "name" => "Marktwirtschaft", "gw" => 10000, "mx" => 50 }, { "name" => "Ölverwaltung", "gw" => 26000, "mx" => 60 }, { "name" => "Pflanzenkunde", "gw" => 40000, "mx" => 80 }, { "name" => "Plünderung", "gw" => 37200, "mx" => 30 }, { "name" => "Reparaturwissen", "gw" => 12000, "mx" => 30 }, { "name" => "Schusswaffen", "gw" => 64000, "mx" => 14 }, { "name" => "Selbstheilung", "gw" => 32000, "mx" => 60 }, { "name" => "Seelenverbindung", "gw" => 60000, "mx" => 60 }, { "name" => "Stärketraining", "gw" => 30000, "mx" => 50 }, { "name" => "Überzeugungskraft", "gw" => 34000, "mx" => 50 }, { "name" => "Waffenkunst", "gw" => 26000, "mx" => 30 }, { "name" => "Zauberkunst", "gw" => 240000, "mx" => 8 }, { "name" => "Zaubertruhenwissen", "gw" => 100000, "mx" => 40 } ]; 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]]", "13" => "[[Armbrust des großen Donners]]", "14" => "[[stark durchschlagende Armbrust]]" }, "Zauberkunst" => { "head" => "Anwendbarer Zauber", "1" => "-", "2" => "[[Effektiver Jerodar-Diebstahlzauber]]", "3" => "[[Starker Jerodar-Diebstahlzauber]]", "4" => "[[Scheibe der Kampfgebiete]]", "5" => "[[Effektiver Diebstahlzauber]]", "6" => "[[Kampfunfähigkeits-Schutz]], [[starker Hautbrand]]", "7" => "[[Mächtiger Wegzauber-Schutz]], [[Mächtiger Starreschutz-Zauber]], [[Zauber des langen Lebens]], [[Zauber der unbändigen Wut]]", "8" => "[[Mächtige Sicht der Diebesopfer]]", }, "Labortechnik" => { "head" => "Herstellbare Zauber (Mindest-XP zur Herstellung)", "1" => "[[Heimzauber]] (500 XP)", "2" => "[[großer Heiltrank]] (1.000 XP)", "3" => "[[Zauber der Stille]] (1.500 XP)", "4" => "[[Zauber der Starre]] (2.000 XP)", "5" => "[[Zauber der Vergiftung]] (2.500 XP)", "6" => "[[Zauber der Versteinerung]] (3.000 XP)", "7" => "[[schwache Lebenserweiterung]] (3.500 XP)", "8" => "[[Gegenzauber: Starre]] (4.000 XP)", "9" => "[[Gegenzauber: Auflösung des Schutzes]] (4.500 XP)", "10" => "[[falsche Erfahrung]] (5.000 XP)", "11" => "[[strategischer Hinzauber]] (5.500 XP)", }, }; my $bgcolor_general = "FFFFCC"; # Hintergrundfarbe, falls nichts anderes definiert ist (gelb) my $bgcolor_block = "FFEECB"; # Hintergrundfarbe fuer den 5er-Block (orange) 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 = 11; open(FILE, ">".lc($cf->{"name"}).".txt"); print FILE <<EOF; <div id="CFoptions"></div> <div id="CFcalc">$grundwert</div> <div id="CFlevel"> {| {{Prettytable}} |+ style="text-align: left;" | <small style="float:right;">''(Angaben in Tagen:Stunden:Minuten)''</small>'''Lernzeit pro Stufe, abhängig von der Lerntechnik: ''' |- | |colspan="$colspan" align="center" bgcolor=#$bgcolor_general |'''[[Lerntechnik]]''' |- !bgcolor=#$bgcolor_block|Stufe !bgcolor=#$bgcolor_general|0 EOF print FILE <<EOF if ($maxlt>0); !bgcolor=#$bgcolor_general|5 !bgcolor=#$bgcolor_general|10 !bgcolor=#$bgcolor_general|15 !bgcolor=#$bgcolor_general|20 !bgcolor=#$bgcolor_general|25 !bgcolor=#$bgcolor_general|30 !bgcolor=#$bgcolor_general|35 !bgcolor=#$bgcolor_general|40 !bgcolor=#$bgcolor_general|45 !bgcolor=#$bgcolor_general|50 EOF print FILE "!bgcolor=#$bgcolor_block|".$ex->{"head"}."\n" if (defined($ex)); for(my $stufe=1; $stufe<=$maxstufe; $stufe++) { print FILE "|-\n"; print FILE "|bgcolor=#$bgcolor_general|'''$stufe'''\n"; my $blockfarbe = (($stufe-1)/5)%2; for (my $lerntech = 0; $lerntech <= $maxlt; $lerntech += 5) { my $lernfaktor = 0.97 ** $lerntech; my $sekunden = ($stufe-1) * $grundwert * $lernfaktor; printf FILE "|bgcolor=#%s|%02d:%02d:%02d\n", (($lerntech + $blockfarbe) % 2) ? "$bgcolor_general" : "$bgcolor_block", $sekunden / 86400, ($sekunden % 86400) / 3600, ($sekunden % 3600) / 60; } print FILE "|bgcolor=#$bgcolor_general|".$ex->{$stufe}."\n" if (defined($ex)); } print FILE <<EOF; |} </div> <div id="CFtotal"> {| {{Prettytable}} |+ style="text-align: left;" | <small style="float:right;">''(Angaben in Tagen:Stunden:Minuten)''</small>'''Lernzeit pro Stufe, abhängig von der Lerntechnik: ''' |- | |colspan="$colspan" align="center" bgcolor=#$bgcolor_general |'''[[Lerntechnik]]''' |- !bgcolor=#$bgcolor_block|Stufe !bgcolor=#$bgcolor_general|0 EOF print FILE <<EOF if ($maxlt>0); !bgcolor=#$bgcolor_general|5 !bgcolor=#$bgcolor_general|10 !bgcolor=#$bgcolor_general|15 !bgcolor=#$bgcolor_general|20 !bgcolor=#$bgcolor_general|25 !bgcolor=#$bgcolor_general|30 !bgcolor=#$bgcolor_general|35 !bgcolor=#$bgcolor_general|40 !bgcolor=#$bgcolor_general|45 !bgcolor=#$bgcolor_general|50 EOF print FILE "!bgcolor=#$bgcolor_block|".$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=#$bgcolor_general|'''$stufe'''\n"; my $blockfarbe = (($zeile-1)/5)%2; for (my $lerntech = 0; $lerntech <= $maxlt; $lerntech += 5) { my $lernfaktor = 0.97 ** $lerntech; my $sekunden = reihe($stufe-1) * $grundwert * $lernfaktor; printf FILE "|bgcolor=#%s|%02d:%02d:%02d\n", (($lerntech + $blockfarbe) % 2) ? "$bgcolor_block" : $bgcolor_general, $sekunden / 86400, ($sekunden % 86400) / 3600, ($sekunden % 3600) / 60; } print FILE "|bgcolor=#$bgcolor_general|".$ex->{$stufe}."\n" if (defined($ex)); $zeile++; } print FILE "|}\n</div>\n"; close FILE; } sub reihe { my $z = shift; return ($z * ($z + 1) / 2); }