Benutzer:Count Ypsilon/Skript:cf.pl: Unterschied zwischen den Versionen

aus FreewarWiki, der Referenz für Freewar
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
K (+Veraltet)
 
(31 dazwischenliegende Versionen von 9 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Veraltet|Das aktuelle Script befindet sich in [[FreewarWiki:Bot/Skripts/cf.pl]].}}
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.
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.
Über das Array "extra" kann bei bestimmten Charakterfähigkeiten eine zusätzliche Spalte an die Tabelle angehängt werden.


  <nowiki>#!/usr/bin/perl</nowiki>
<pre>
  <nowiki></nowiki>
#!/usr/bin/perl
  <nowiki>use strict;</nowiki>
 
  <nowiki></nowiki>
use strict;
  <nowiki>my $cfs = [</nowiki>
 
  <nowiki>  { "name" => "Schusswaffen", "gw" => 160000, "mx" => 12 },</nowiki>
my $cfs = [
  <nowiki>  { "name" => "Gruppenheilung", "gw" => 18000, "mx" => 150 },</nowiki>
  { "name" => "Angriffsenergie", "gw" => 80000, "mx" => 10 },
  <nowiki>  { "name" => "Angriffsenergie", "gw" => 200000, "mx" => 10 },</nowiki>
  { "name" => "Auftragsbeziehung", "gw" => 80000, "mx" => 40 },
  <nowiki>  { "name" => "Auftragsplanung", "gw" => 17200, "mx" => 70 },</nowiki>
  { "name" => "Auftragsplanung", "gw" => 6800, "mx" => 70 },
  <nowiki>  { "name" => "Diebstahlschutzwissen", "gw" => 70000, "mx" => 50 },</nowiki>
  { "name" => "Bauwesen", "gw" => 25000, "mx" => 70 },
  <nowiki>  { "name" => "Getreideverarbeitung", "gw" => 40000, "mx" => 30 },</nowiki>
  { "name" => "Diebstahlschutzwissen", "gw" => 28000, "mx" => 50 },
  <nowiki>  { "name" => "Gewebeforschung", "gw" => 29000, "mx" => 50 },</nowiki>
  { "name" => "Getreideverarbeitung", "gw" => 16000, "mx" => 30 },
  <nowiki>  { "name" => "Goldabbau", "gw" => 110000, "mx" => 30 },</nowiki>
  { "name" => "Gewebeforschung", "gw" => 11600, "mx" => 50 },
  <nowiki>  { "name" => "Glück", "gw" => 40000, "mx" => 15 },</nowiki>
  { "name" => "Goldabbau", "gw" => 44000, "mx" => 30 },
  <nowiki>  { "name" => "Innere Macht", "gw" => 90000, "mx" => 50 },</nowiki>
  { "name" => "Glück", "gw" => 16000, "mx" => 15 },
  <nowiki>  { "name" => "Jagd", "gw" => 58000, "mx" => 50 },</nowiki>
  { "name" => "Gruppenheilung", "gw" => 7200, "mx" => 120 },
  <nowiki>  { "name" => "Kochkunst", "gw" => 55000, "mx" => 80 },</nowiki>
  { "name" => "Innere Macht", "gw" => 36000, "mx" => 50 },
  <nowiki>  { "name" => "Lebensenergie", "gw" => 65000, "mx" => 30 },</nowiki>
  { "name" => "Jagd", "gw" => 23200, "mx" => 50 },
  <nowiki>  { "name" => "Lebenstraining", "gw" => 85000, "mx" => 50 },</nowiki>
  { "name" => "Kochkunst", "gw" => 22000, "mx" => 80 },
  <nowiki>  { "name" => "Lerntechnik", "gw" => 35000, "mx" => 50 },</nowiki>
  { "name" => "Labortechnik", "gw" => 120000, "mx" => 20 },
  <nowiki>  { "name" => "Magieverlängerung", "gw" => 120000, "mx" => 30 },</nowiki>
  { "name" => "Lagerlogistik", "gw" => 25000, "mx" => 90 },
  <nowiki>  { "name" => "Marktwirtschaft", "gw" => 25000, "mx" => 50 },</nowiki>
  { "name" => "Lebensenergie", "gw" => 26000, "mx" => 30 },
  <nowiki>  { "name" => "Ölverwaltung", "gw" => 65000, "mx" => 60 },</nowiki>
  { "name" => "Lebenstraining", "gw" => 34000, "mx" => 50 },
  <nowiki>  { "name" => "Plünderung", "gw" => 93000, "mx" => 30 },</nowiki>
  { "name" => "Lerntechnik", "gw" => 35000, "mx" => 50 },
  <nowiki>  { "name" => "Reparaturwissen", "gw" => 30000, "mx" => 30 },</nowiki>
  { "name" => "Magieverlängerung", "gw" => 48000, "mx" => 30 },
  <nowiki>  { "name" => "Selbstheilung", "gw" => 80000, "mx" => 80 },</nowiki>
  { "name" => "Marktwirtschaft", "gw" => 10000, "mx" => 50 },
  <nowiki>  { "name" => "Stärketraining", "gw" => 75000, "mx" => 50 },</nowiki>
  { "name" => "Ölverwaltung", "gw" => 26000, "mx" => 60 },
  <nowiki>  { "name" => "Überzeugungskraft", "gw" => 85000, "mx" => 50 },</nowiki>
  { "name" => "Pflanzenkunde", "gw" => 40000, "mx" => 80 },
  <nowiki>  { "name" => "Waffenkunst", "gw" => 65000, "mx" => 30 },</nowiki>
  { "name" => "Plünderung", "gw" => 37200, "mx" => 30 },
  <nowiki>  { "name" => "Zauberkunst", "gw" => 600000, "mx" => 3 }</nowiki>
  { "name" => "Reparaturwissen", "gw" => 12000, "mx" => 30 },
  <nowiki>];</nowiki>
  { "name" => "Schusswaffen", "gw" => 64000, "mx" => 14 },
  <nowiki></nowiki>
  { "name" => "Selbstheilung", "gw" => 32000, "mx" => 60 },
  <nowiki>my $extra = {</nowiki>
   { "name" => "Seelenverbindung", "gw" => 60000, "mx" => 60 },
  <nowiki>   "Schusswaffen" => {</nowiki>
  { "name" => "Stärketraining", "gw" => 30000, "mx" => 50 },
  <nowiki>        "head" => "Anwendbarer Bogen",</nowiki>
  { "name" => "Überzeugungskraft", "gw" => 34000, "mx" => 50 },
  <nowiki>        "1" => "[[Einfacher Holzbogen]]",</nowiki>
  { "name" => "Waffenkunst", "gw" => 26000, "mx" => 30 },
  <nowiki>       "2" => "[[Einfacher Eisenbogen]]",</nowiki>
  { "name" => "Zauberkunst", "gw" => 240000, "mx" => 8 },
  <nowiki>        "3" => "[[Holzarmbrust der Erfahrung]]",</nowiki>
  { "name" => "Zaubertruhenwissen", "gw" => 100000, "mx" => 40 }
  <nowiki>        "4" => "[[Kleine Armbrust des Lebens]]",</nowiki>
];
  <nowiki>        "5" => "[[Armbrust der Seelen]]",</nowiki>
 
  <nowiki>        "6" => "[[Armbrust der Schutzauflösung]]",</nowiki>
 
  <nowiki>       "7" => "[[Armbrust des Donners]]",</nowiki>
 
  <nowiki>        "8" => "[[Armbrust der Präzision]]",</nowiki>
my $extra = {
  <nowiki>        "9" => "[[Bogen des Lebens]]",</nowiki>
    "Schusswaffen" => {
  <nowiki>        "10" => "[[Durchschlagende Armbrust]]",</nowiki>
        "head" => "Anwendbarer Bogen",
  <nowiki>        "11" => "[[Armbrust der starken Schutzauflösung]]",</nowiki>
        "1" => "[[Einfacher Holzbogen]]",
  <nowiki>        "12" => "[[Bogen des starken Lebens]]"</nowiki>
        "2" => "[[Einfacher Eisenbogen]]",
  <nowiki>    },</nowiki>
        "3" => "[[Holzarmbrust der Erfahrung]]",
  <nowiki></nowiki>
        "4" => "[[Kleine Armbrust des Lebens]]",
  <nowiki>    "Zauberkunst" => {</nowiki>
        "5" => "[[Armbrust der Seelen]]",
  <nowiki>        "head" => "Anwendbarer Zauber",</nowiki>
        "6" => "[[Armbrust der Schutzauflösung]]",
  <nowiki>        "1" => "-",</nowiki>
        "7" => "[[Armbrust des Donners]]",
  <nowiki>        "2" => "[[Effektiver Jerodar-Diebstahlzauber]]",</nowiki>
        "8" => "[[Armbrust der Präzision]]",
  <nowiki>        "3" => "[[Starker Jerodar-Diebstahlzauber]]"</nowiki>
        "9" => "[[Bogen des Lebens]]",
  <nowiki>   },</nowiki>
        "10" => "[[Durchschlagende Armbrust]]",
  <nowiki></nowiki>
        "11" => "[[Armbrust der starken Schutzauflösung]]",
  <nowiki>};</nowiki>
        "12" => "[[Bogen des starken Lebens]]",
  <nowiki></nowiki>
        "13" => "[[Armbrust des großen Donners]]",
  <nowiki>foreach my $cf(@{$cfs})</nowiki>
        "14" => "[[stark durchschlagende Armbrust]]"
  <nowiki>{</nowiki>
    },
  <nowiki>    my $grundwert = $cf->{"gw"};</nowiki>
 
  <nowiki>    my $maxstufe = $cf->{"mx"};</nowiki>
    "Zauberkunst" => {
  <nowiki>   my $maxlt = ($cf->{"name"} eq "Lerntechnik") ? 0 : 50;</nowiki>
        "head" => "Anwendbarer Zauber",
  <nowiki>    my $ex = $extra->{$cf->{"name"}};</nowiki>
        "1" => "-",
  <nowiki>   my $colspan = (defined($ex) ? 12 : 11);</nowiki>
        "2" => "[[Effektiver Jerodar-Diebstahlzauber]]",
  <nowiki></nowiki>
        "3" => "[[Starker Jerodar-Diebstahlzauber]]",
  <nowiki>    open(FILE, ">".lc($cf->{"name"}).".txt");</nowiki>
        "4" => "[[Scheibe der Kampfgebiete]]",
  <nowiki></nowiki>
        "5" => "[[Effektiver Diebstahlzauber]]",
  <nowiki>print FILE <<EOF;</nowiki>
        "6" => "[[Kampfunfähigkeits-Schutz]], [[starker Hautbrand]]",
  <nowiki><!-- gw=$grundwert mx=$maxstufe --></nowiki>
        "7" => "[[Mächtiger Wegzauber-Schutz]], [[Mächtiger Starreschutz-Zauber]], [[Zauber des langen Lebens]], [[Zauber der unbändigen Wut]]",
  <nowiki>'''Lernzeit pro Stufe, abhängig von der Lerntechnik: ''' ''(Angaben in Tagen:Stunden:Minuten)''</nowiki>
        "8" => "[[Mächtige Sicht der Diebesopfer]], [[Sicht der Diebesopfer]]",
  <nowiki>{| {{Prettytable}}</nowiki>
    },
  <nowiki>|</nowiki>
 
  <nowiki>|colspan="$colspan" align="center" bgcolor=#FFFFCC |'''[[Lerntechnik]]'''</nowiki>
    "Labortechnik" => {
  <nowiki>|-</nowiki>
        "head" => "Herstellbare Zauber (Mindest-XP zur Herstellung)",
  <nowiki>!bgcolor=#FFEECB|Stufe</nowiki>
        "1" => "[[Heimzauber]] (500 XP)",
  <nowiki>!bgcolor=#FFFFCC|0</nowiki>
        "2" => "[[großer Heiltrank]] (1.000 XP)",
  <nowiki>EOF</nowiki>
        "3" => "[[Zauber der Stille]] (1.500 XP)",
  <nowiki></nowiki>
        "4" => "[[Zauber der Starre]] (2.000 XP)",
  <nowiki>print FILE <<EOF if ($maxlt>0);</nowiki>
        "5" => "[[Zauber der Vergiftung]] (2.500 XP)",
  <nowiki>!bgcolor=#FFFFCC|5</nowiki>
        "6" => "[[Zauber der Versteinerung]] (3.000 XP)",
  <nowiki>!bgcolor=#FFFFCC|10</nowiki>
        "7" => "[[schwache Lebenserweiterung]] (3.500 XP)",
  <nowiki>!bgcolor=#FFFFCC|15</nowiki>
        "8" => "[[Gegenzauber: Starre]] (4.000 XP)",
  <nowiki>!bgcolor=#FFFFCC|20</nowiki>
        "9" => "[[Gegenzauber: Auflösung des Schutzes]] (4.500 XP)",
  <nowiki>!bgcolor=#FFFFCC|25</nowiki>
        "10" => "[[falsche Erfahrung]] (5.000 XP)",
  <nowiki>!bgcolor=#FFFFCC|30</nowiki>
        "11" => "[[strategischer Hinzauber]] (5.500 XP)",
  <nowiki>!bgcolor=#FFFFCC|35</nowiki>
        "12" => "[[Druckwelle]] (6.000 XP)",
  <nowiki>!bgcolor=#FFFFCC|40</nowiki>
        "13" => "[[schwache Kontrolle der Zeit]] (6.500 XP)",
  <nowiki>!bgcolor=#FFFFCC|45</nowiki>
        "14" => "[[Wolkenstoff]] (7.000 XP)",
  <nowiki>!bgcolor=#FFFFCC|50</nowiki>
        "15" => "[[gigantische Seelenkapsel]] (7.500 XP)",
  <nowiki>EOF</nowiki>
        "16" => "[[Elixier der Bewegung]] (8.000 XP)",
  <nowiki></nowiki>
        "17" => "[[Zauber der unsichtbaren Explosion]] (8.500 XP)",
   <nowiki>print FILE "!bgcolor=#FFEECB|".$ex->{"head"}."\n" if (defined($ex));</nowiki>
        "18" => "[[Sicht der Schutzlosen]] (9.000 XP)",
  <nowiki></nowiki>
        "19" => "[[Lebenserweiterung]] (9.500 XP)",
  <nowiki>for(my $stufe=1; $stufe<=$maxstufe; $stufe++)</nowiki>
        "20" => "[[Zauber der Wettererzeugung]] (10.000 XP)",},
  <nowiki>{</nowiki>
};
  <nowiki>    print FILE "|-\n";</nowiki>
 
  <nowiki>    print FILE "|bgcolor=#FFFFCC|'''$stufe'''\n";</nowiki>
 
  <nowiki>   my $blockfarbe = (($stufe-1)/5)%2;</nowiki>
my $bgcolor_general = "FFFFCC"; # Hintergrundfarbe, falls nichts anderes definiert ist (gelb)
  <nowiki>   for (my $lerntech = 0; $lerntech <= $maxlt; $lerntech += 5)</nowiki>
my $bgcolor_block   = "FFEECB"; # Hintergrundfarbe fuer den 5er-Block (orange)
  <nowiki>   {</nowiki>
 
  <nowiki>        my $lernfaktor = 0.95 ** $lerntech;</nowiki>
 
  <nowiki>        my $sekunden = ($stufe-1) * $grundwert * $lernfaktor;</nowiki>
 
  <nowiki>        printf FILE "|bgcolor=#%s|%02d:%02d:%02d\n", </nowiki>
foreach my $cf(@{$cfs})
  <nowiki>            (($lerntech + $blockfarbe) % 2) ? "" : "FFEECB",</nowiki>
{
  <nowiki>            $sekunden / 86400,</nowiki>
    my $grundwert = $cf->{"gw"};
  <nowiki>            ($sekunden % 86400) / 3600, </nowiki>
    my $maxstufe = $cf->{"mx"};
  <nowiki>            ($sekunden % 3600) / 60;</nowiki>
    my $maxlt = ($cf->{"name"} eq "Lerntechnik") ? 0 : 50;
  <nowiki>    }</nowiki>
    my $ex = $extra->{$cf->{"name"}};
  <nowiki>    print FILE "|bgcolor=#FFFFCC|".$ex->{$stufe}."\n" if (defined($ex));</nowiki>
    my $colspan = 11;
  <nowiki>}</nowiki>
 
  <nowiki></nowiki>
    open(FILE, ">".lc($cf->{"name"}).".txt");
  <nowiki></nowiki>
 
  <nowiki>print FILE <<EOF;</nowiki>
print FILE <<EOF;
  <nowiki>|}</nowiki>
<div id="CFoptions"></div>
  <nowiki></nowiki>
<div id="CFcalc">$grundwert</div>
  <nowiki></nowiki>
<div id="CFlevel">
  <nowiki>'''Gesamtlernzeit bis zur jeweiligen Stufe, abhängig von der Lerntechnik: ''' ''(Angaben in Tagen:Stunden:Minuten)''</nowiki>
{| {{Prettytable}}
  <nowiki>{| {{Prettytable}}</nowiki>
|+ style="text-align: left;" | <small style="float:right;">''(Angaben in Tagen:Stunden:Minuten)''</small>'''Lernzeit pro Stufe, abhängig von der Lerntechnik: '''
  <nowiki>|</nowiki>
|-
  <nowiki>|colspan="$colspan" align="center" bgcolor=#FFFFCC |'''[[Lerntechnik]]'''</nowiki>
|
  <nowiki>|-</nowiki>
|colspan="$colspan" align="center" bgcolor=#$bgcolor_general |'''[[Lerntechnik]]'''
  <nowiki>!bgcolor=#FFEECB|Stufe</nowiki>
|-
  <nowiki>!bgcolor=#FFFFCC|0</nowiki>
!bgcolor=#$bgcolor_block|Stufe
  <nowiki>EOF</nowiki>
!bgcolor=#$bgcolor_general|0
  <nowiki></nowiki>
EOF
  <nowiki>print FILE <<EOF if ($maxlt>0);</nowiki>
 
  <nowiki>!bgcolor=#FFFFCC|5</nowiki>
print FILE <<EOF if ($maxlt>0);
  <nowiki>!bgcolor=#FFFFCC|10</nowiki>
!bgcolor=#$bgcolor_general|5
  <nowiki>!bgcolor=#FFFFCC|15</nowiki>
!bgcolor=#$bgcolor_general|10
  <nowiki>!bgcolor=#FFFFCC|20</nowiki>
!bgcolor=#$bgcolor_general|15
  <nowiki>!bgcolor=#FFFFCC|25</nowiki>
!bgcolor=#$bgcolor_general|20
  <nowiki>!bgcolor=#FFFFCC|30</nowiki>
!bgcolor=#$bgcolor_general|25
  <nowiki>!bgcolor=#FFFFCC|35</nowiki>
!bgcolor=#$bgcolor_general|30
  <nowiki>!bgcolor=#FFFFCC|40</nowiki>
!bgcolor=#$bgcolor_general|35
  <nowiki>!bgcolor=#FFFFCC|45</nowiki>
!bgcolor=#$bgcolor_general|40
  <nowiki>!bgcolor=#FFFFCC|50</nowiki>
!bgcolor=#$bgcolor_general|45
  <nowiki>EOF</nowiki>
!bgcolor=#$bgcolor_general|50
  <nowiki>print FILE "!bgcolor=#FFEECB|".$ex->{"head"}."\n" if (defined($ex));</nowiki>
EOF
  <nowiki></nowiki>
 
  <nowiki>my $step = 1;</nowiki>
print FILE "!bgcolor=#$bgcolor_block|".$ex->{"head"}."\n" if (defined($ex));
  <nowiki>$step = 5 if ($maxstufe > 14);</nowiki>
 
  <nowiki>my $zeile = 1;</nowiki>
 
  <nowiki></nowiki>
for(my $stufe=1; $stufe<=$maxstufe; $stufe++)
  <nowiki>for(my $stufe=$step; $stufe<=$maxstufe; $stufe+=$step)</nowiki>
{
  <nowiki>{</nowiki>
    print FILE "|-\n";
  <nowiki>    print FILE "|-\n";</nowiki>
    print FILE "|bgcolor=#$bgcolor_general|'''$stufe'''\n";
  <nowiki>    print FILE "|bgcolor=#FFFFCC|'''$stufe'''\n";</nowiki>
    my $blockfarbe = (($stufe-1)/5)%2;
  <nowiki>    my $blockfarbe = (($zeile-1)/5)%2;</nowiki>
    for (my $lerntech = 0; $lerntech <= $maxlt; $lerntech += 5)
  <nowiki>    for (my $lerntech = 0; $lerntech <= $maxlt; $lerntech += 5)</nowiki>
    {
  <nowiki>    {</nowiki>
        my $lernfaktor = 0.97 ** $lerntech;
  <nowiki>        my $lernfaktor = 0.95 ** $lerntech;</nowiki>
        my $sekunden = ($stufe-1) * $grundwert * $lernfaktor;
  <nowiki>        my $sekunden = reihe($stufe-1) * $grundwert * $lernfaktor;</nowiki>
        printf FILE "|bgcolor=#%s|%02d:%02d:%02d\n",
  <nowiki>        printf FILE "|bgcolor=#%s|%02d:%02d:%02d\n", </nowiki>
            (($lerntech + $blockfarbe) % 2) ? "$bgcolor_general" : "$bgcolor_block",
  <nowiki>            (($lerntech + $blockfarbe) % 2) ? "FFEECB" : $blockfarbe,</nowiki>
            $sekunden / 86400,
  <nowiki>            $sekunden / 86400,</nowiki>
            ($sekunden % 86400) / 3600,
  <nowiki>            ($sekunden % 86400) / 3600, </nowiki>
            ($sekunden % 3600) / 60;
  <nowiki>           ($sekunden % 3600) / 60;</nowiki>
    }
  <nowiki>    }</nowiki>
    print FILE "|bgcolor=#$bgcolor_general|".$ex->{$stufe}."\n" if (defined($ex));
  <nowiki>    print FILE "|bgcolor=#FFFFCC|".$ex->{$stufe}."\n" if (defined($ex));</nowiki>
}
  <nowiki>    $zeile++;</nowiki>
 
  <nowiki>}</nowiki>
 
  <nowiki></nowiki>
print FILE <<EOF;
  <nowiki>print FILE "|}\n";</nowiki>
|}
  <nowiki></nowiki>
</div>
  <nowiki>close FILE;</nowiki>
<div id="CFtotal">
  <nowiki>}</nowiki>
{| {{Prettytable}}
  <nowiki></nowiki>
|+ style="text-align: left;" | <small style="float:right;">''(Angaben in Tagen:Stunden:Minuten)''</small>'''Gesamtlernzeit bis zur jeweiligen Stufe, abhängig von der Lerntechnik: '''
  <nowiki>sub reihe</nowiki>
|-
  <nowiki>{</nowiki>
|
  <nowiki>    my $z = shift;</nowiki>
|colspan="$colspan" align="center" bgcolor=#$bgcolor_general |'''[[Lerntechnik]]'''
  <nowiki>    return ($z * ($z + 1) / 2);</nowiki>
|-
  <nowiki>}</nowiki>
!bgcolor=#$bgcolor_block|Stufe
  <nowiki></nowiki>
!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);
}
</pre>

Aktuelle Version vom 21. Oktober 2011, 23:31 Uhr

Dieser Artikel beschreibt einen veralteten Zustand oder ein nicht mehr existierendes Objekt. Er dient einzig historiographischem Zweck:
Das aktuelle Script befindet sich in FreewarWiki:Bot/Skripts/cf.pl.

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" => 20 },
   { "name" => "Lagerlogistik", "gw" => 25000, "mx" => 90 },
   { "name" => "Lebensenergie", "gw" => 26000, "mx" => 30 },
   { "name" => "Lebenstraining", "gw" => 34000, "mx" => 50 },
   { "name" => "Lerntechnik", "gw" => 35000, "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]], [[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)",
        "12" => "[[Druckwelle]] (6.000 XP)",
        "13" => "[[schwache Kontrolle der Zeit]] (6.500 XP)",
        "14" => "[[Wolkenstoff]] (7.000 XP)",
        "15" => "[[gigantische Seelenkapsel]] (7.500 XP)",
        "16" => "[[Elixier der Bewegung]] (8.000 XP)",
        "17" => "[[Zauber der unsichtbaren Explosion]] (8.500 XP)",
        "18" => "[[Sicht der Schutzlosen]] (9.000 XP)",
        "19" => "[[Lebenserweiterung]] (9.500 XP)",
        "20" => "[[Zauber der Wettererzeugung]] (10.000 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>'''Gesamtlernzeit bis zur jeweiligen 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);
}