Kategorien
Bitte befüllt die Seite DarkfleetWiki:NoSpamUser in alphabetischer Reihenfolge mit den Namen von Wikibenutzern, welche keine Spam-Bots sind. |
DarkfleetWiki:Bot/Skripts/cf.pl
Aus DarkfleetWiki
< DarkfleetWiki:Bot
Version vom 9. November 2010, 10:06 Uhr von Galak (Diskussion | Beiträge) (die sonderfälle sind nun erstmal raus, tragen wir dann später nach, für dinge wo es sinnvoll ist)
#!/usr/bin/perl use strict; # Erstelle Ausgabe-Verzeichnis my $cache_dir = "./cf/"; if (!-e $cache_dir) { my $made_dir = mkdir($cache_dir, 0777); die("unable to create $cache_dir") if ($made_dir != 1); } my $cfs = [ { "name" => "Angriffsstärkewissen", "gw" => 7500, "mx" => 100 }, { "name" => "Antimateriewissen", "gw" => 600000, "mx" => 4 }, { "name" => "Armadaorganisation", "gw" => 432000, "mx" => 10 }, { "name" => "Astrogeologie", "gw" => 600000, "mx" => 2 }, { "name" => "Basiswissen", "gw" => 12000, "mx" => 60 }, { "name" => "Batterietechnologie", "gw" => 600000, "mx" => 4 }, { "name" => "EMP-Technologie", "gw" => 600000, "mx" => 2 }, { "name" => "Glück", "gw" => 40000, "mx" => 15 }, { "name" => "Großhandelswissen", "gw" => 7000, "mx" => 40 }, { "name" => "Handelstransmission", "gw" => 600000, "mx" => 3 }, { "name" => "Holographieaufzeichnung", "gw" => 600000, "mx" => 3 }, { "name" => "Kampftaktik", "gw" => 11000, "mx" => 40 }, { "name" => "Laderaumtechnik", "gw" => 600000, "mx" => 6 }, { "name" => "Marktwirtschaft", "gw" => 5000, "mx" => 30 }, { "name" => "Modulmontage", "gw" => 450000, "mx" => 4 }, { "name" => "NPC-Scannerwissen", "gw" => 600000, "mx" => 3 }, { "name" => "Nanorobotik", "gw" => 600000, "mx" => 4 }, { "name" => "Pech", "gw" => 120000, "mx" => 5 }, { "name" => "Planetenmanagement", "gw" => 3000, "mx" => 100 }, { "name" => "Reparaturwissen", "gw" => 10000, "mx" => 50 }, { "name" => "Ribium-Einspeisung", "gw" => 600000, "mx" => 4 }, { "name" => "Rüstungsdetektion", "gw" => 600000, "mx" => 3 }, { "name" => "Schiffsrüstungswissen", "gw" => 9000, "mx" => 100 }, { "name" => "Schildwissen", "gw" => 8000, "mx" => 100 }, { "name" => "Signatur-Scannertechnik", "gw" => 600000, "mx" => 2 }, { "name" => "Signaturstörung", "gw" => 600000, "mx" => 2 }, { "name" => "Spionagetechnologie", "gw" => 800000, "mx" => 10 }, { "name" => "Sprungtechnologie", "gw" => 600000, "mx" => 2 }, { "name" => "Tarntechnik", "gw" => 120000, "mx" => 20 }, { "name" => "Tiefenscannertechnologie", "gw" => 43210, "mx" => 40 }, { "name" => "Traktorstrahltechnik", "gw" => 600000, "mx" => 3 }, { "name" => "Waffensystemtechnik", "gw" => 600000, "mx" => 3 }, { "name" => "Wurmloch-Reisewissen", "gw" => 7000, "mx" => 25 }, ]; 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 "Basiswissen") ? 0 : 50; my $ex = $extra->{$cf->{"name"}}; my $colspan = 11; open(FILE, ">".$cache_dir.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 vom Basiswissen: ''' |- | |colspan="$colspan" align="center" bgcolor=#$bgcolor_general |'''[[Basiswissen]]''' |- !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 vom Basiswissen: ''' |- | |colspan="$colspan" align="center" bgcolor=#$bgcolor_general |'''[[Basiswissen]]''' |- !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 = 0; for (my $stufe=$step; $stufe<=$maxstufe; $stufe+=$step) { print_zeile($stufe, ++$zeile, $grundwert, $maxlt, $ex); } print_zeile($maxstufe, ++$zeile, $grundwert, $maxlt, $ex) if ($maxstufe % 5); print FILE "|}\n</div>\n"; close FILE; } sub reihe { my $z = shift; return ($z * ($z + 1) / 2); } sub print_zeile { my ($stufe, $zeile, $grundwert, $maxlt, $ex) = @_; 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)); }