Kategorien
Benutzer:Count Ypsilon/Skript:npcmap.pl
Zur Navigation springen
Zur Suche springen
Dieses Perl-Skript liest auf der Standardeingabe die Farbliste ein (wie von Benutzer:Count Ypsilon/Skript:mapcolor.pl erzeugt) und benötigt zusätlich noch ein vorliegendes Karten-Bitmap. Es zeichnet farbige, gefüllte Rechtecke auf die Kartenfelder. Einige Zeilen (siehe Kommentare) müssen an die Grösse des Bildes angepasst werden. Die Ausgabedatei wird in der letzten Zeile geschrieben.
use strict; use GD; # Farbdefinition fuer die NPC-Klassen my $colors = { "1" => 0x4db34d, "2" => 0x33e53f, "3" => 0x7ae533, "4" => 0xaae533, "5" => 0xd9e533, "6" => 0xe5c433, "7" => 0xe59833, "8" => 0xe56b33, "9" => 0xe53f33 }; # Das hier anpassen, je nachdem, welches Input-Bild man hat # (Oberer Teil fuer das Standard-Minibild, unterer Teil fuer # grosse Karte von Tiramon-Webseite) my $i=GD::Image->new(440,210,1); my $j=GD::Image->new("karte.jpg"); $i->copy($j, 0, 0, 0, 0, 440,210); #my $i=GD::Image->new(2231,1050,1); #my $j=GD::Image->new("karte-gross.jpg"); #$i->copy($j, 0, 0, 0, 0, 2231,1050); foreach my $key(keys(%{$colors})) { my $v = $colors->{$key}; printf "$key: %x->", $v; my $b = $v & 0xff; $v=$v>>8; my $g = $v & 0xff; $v=$v>>8; my $r = $v & 0xff; $colors->{$key} = $i->colorAllocate($r,$g,$b); printf "%x %x %x = %x\n", $r, $g, $b, $colors->{$key}; } while(<>) { chomp; my($x, $y, $cat) = split(/,/); next if ($x<0); next if ($y<0); next if ($x>140); next if ($y>140); # Das hier auch anpassen - Umrechnung von Feldkoordinaten in # Pixel $x=($x-55)*5; $y=($y-80)*5; $i->filledRectangle($x,$y,$x+4,$y+4,$colors->{$cat}); #$x=($x-55)*25; #$y=($y-80)*25; #$i->filledRectangle($x+4,$y+4,$x+19,$y+19,$colors->{$cat}); } # alternativ auch einfach jpg statt png schreiben... open(MAP, ">map.png"); print MAP $i->png; close(MAP);