Kategorien
Bearbeiten von „Benutzer:Count Ypsilon/Skript:maplist.pl“
Zur Navigation springen
Zur Suche springen
Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.
Aktuelle Version | Dein Text | ||
Zeile 2: | Zeile 2: | ||
Spalte 1=Gebietsname (leer, falls es sich um ein nicht begehbares Grenzfeld handelt) | Spalte 1=Gebietsname (leer, falls es sich um ein nicht begehbares Grenzfeld handelt) | ||
Spalten 2/3=x und y | |||
Spalte 4=NPC-Name (Feld ist mehrfach in Liste, wenn mehrere NPCs, und einfach mit "none" in Spalte 4, wenn kein NPC) | |||
Spalte | Spalte 5=URL des Kartenfeld-Bildes | ||
Spalte | |||
Achtung - Grenzfelder zwischen zwei Gebieten können mehrfach in der Liste auftauchen, einmal mit gesetzten Gebietsnamen beim Gebiet, zu dem sie gehören, und vorher/nachher noch einmal mit leeren Gebietsnamen im Kontext des Gebiets, bei dem sie als Grenzfeld gelistet sind. | Achtung - Grenzfelder zwischen zwei Gebieten können mehrfach in der Liste auftauchen, einmal mit gesetzten Gebietsnamen beim Gebiet, zu dem sie gehören, und vorher/nachher noch einmal mit leeren Gebietsnamen im Kontext des Gebiets, bei dem sie als Grenzfeld gelistet sind. | ||
Achtung - Quelltext unten enthält ein paar "nowiki"-Tags; auf der Ansichtsseite ist es korrekt, aber wenn man aus der Bearbeiten-Seite kopiert, muss man die entfernen. | |||
use strict; | #!/usr/bin/perl | ||
use LWP::UserAgent; | |||
use URI::Escape; | use strict; | ||
use HTTP::Request; | use LWP::UserAgent; | ||
use URI::Escape; | |||
my $ua = LWP::UserAgent->new(); | use HTTP::Request; | ||
my $host = "http://www.fwwiki.de"; | my $ua = LWP::UserAgent->new(); | ||
my $url = $host . "/index.php/Kategorie:Karten"; | |||
my $host = <nowiki>"http://www.fwwiki.de"</nowiki>; | |||
my $url = $host . "/index.php/Kategorie:Karten"; | |||
while($url ne "") | |||
{ | |||
#print "GET $url\n"; | |||
my $request = HTTP::Request->new("GET", $url); | |||
my $response = $ua->simple_request($request); | |||
my $c = $response->content(); | |||
$url = ""; | |||
while($c =~ /<a([^>]*)>([^<]*)<\/a>/gm) | |||
{ | |||
my ($anchor, $text) = ($1, $2); | |||
my $href; | |||
$href = $1 if ($anchor =~ /href\s*=\s*"([^"]*)"/); | |||
$href =~ s/&/&/g; | |||
my $title; | |||
$title = $1 if ($anchor =~ /title\s*=\s*"([^"]*)"/); | |||
$url = $host.$href if ($text =~ /n.*chste \d+/); | |||
fetchMap($1, $host.$href) if ($text =~ /Karte:\s*(.*)/); | |||
while($url ne "") | } | ||
{ | } | ||
sub fetchMap | |||
{ | |||
my ($text, $href) = @_; | |||
my $request = HTTP::Request->new("GET", $href."?action=edit"); | |||
my $response = $ua->simple_request($request); | |||
my $c = $response->content(); | |||
my @lines = split(/\n/, $c); | |||
my $firstx; | |||
my $curx; | |||
my $cury; | |||
my $opened; | |||
my $firstline = 1; | |||
foreach my $line(@lines) | |||
{ | |||
} | next unless ($line =~ /\{\{Karte\/([^|{}\/]+)(\/([^|{}]+))?(\|([^{}]*))?\}\}(\{\{.*\}\})?/); | ||
my ($vorlage, $sub, $argl, $more) = ($1, $3, $5, $6); | |||
sub fetchMap | my @args = split(/\|/, $argl); | ||
{ | |||
if (!$opened) | |||
{ | |||
$opened = 1 if ($vorlage eq "Beginn"); | |||
next; | |||
} | |||
if ($vorlage eq "Ende") | |||
{ | |||
last; | |||
} | |||
elsif ($vorlage eq "NeueZeile") | |||
{ | |||
$firstline = 0; | |||
$curx = $firstx; | |||
} | |||
elsif ($vorlage eq "Koord") | |||
{ | |||
if (($firstline) && (!defined($firstx))) | |||
{ | |||
$firstx = $args[0]; | |||
} | |||
else | |||
{ | |||
$cury = $args[0]; | |||
} | |||
} | |||
elsif ($vorlage =~ /^Feld\d*$/) | |||
{ | |||
if ($img eq <nowiki>"http://85.10.193.197/freewar/images/map/black.jpg"</nowiki>) | |||
if ($img eq "http:// | |||
{ | { | ||
print " | print ";$curx;$cury;;$img\n"; | ||
} | } | ||
else | else | ||
{ | { | ||
my $img = shift(@args); | |||
push(@args, "none") if (scalar(@args) == 0); | |||
foreach my $npc(@args) | |||
{ | |||
print "$text;$curx;$cury;$npc;$img\n" unless ($npc =~ /^Alt=/); | |||
} | |||
} | } | ||
$curx++; | $curx++; | ||
} | |||
else | |||
{ | |||
</ | print STDERR "unbekannt: $vorlage in '$text'\n" | ||
unless ($vorlage =~ /^(Berg|Leer|Grenzfeld)$/); | |||
if ($vorlage eq "Berg") | |||
{ | |||
my $img = <nowiki>"http://85.10.193.197/freewar/images/map/std.jpg";</nowiki> | |||
print ";$curx;$cury;;$img\n" | |||
} | |||
elsif($vorlage eq "Grenzfeld") | |||
{ | |||
my $img = shift(@args); | |||
print ";$curx;$cury;;$img\n" | |||
} | |||
$curx++; | |||
} | |||
} | |||
} |