deshalb hab ich mich dran gemacht den Mapper mit folgender Funktionalitaet auszustatten:
Allgemeine Infos:
Alt+#naechster Ausgang wird als Einbahnstrasse erzeugt
Alt+$der naechste Knoten wird auch erzeugt, wenn es auf den Koordinaten schon einen Knoten gibt.
Alt+Navigationstastenneuer Ausgang in der angegebenen Richtung (wenn dort schon ein Punkt existiert wird eine Verbindung geschaffen, ansonsten wird ein neuer Punkt erzeugt)
Shift+uloescht alle Markierungen in der aktuellen Map
rechte Maustaste oder Doppelklick:es wird zum angeklickten Punkt gesprungen
linke Maustaste:vorgesehen fuer interaktive Kommandos, z.Zt. Ausgabe von Bildschirm-/Mapkoordinaten ggf. gefundener Punkt View Bewegung:
Ctrl+linke Maustaste ziehen:Aufziehen eines Zoomfensters (Zoom)
Ctrl+rechte Maustaste:eine Zoomstufe zurueck (Unzoom) Interaktion:
Shift+linke Maustaste:Markieren/Demarkieren von Knoten
Shift+linke Maustaste ziehn:Markieren der Knoten im Rechteck
Auswahlsyntax fuer mark, unmark,sf ai und lna
(all|map|level|region dx dy dz|marked|((nodes|named) knotenid/name[-knotenid2/name2]+)
g (Punktname|id)(Go) Springt zu dem angegebenen Punkt
go Punktname/id(GoOther) Springt zum angegebenen Punkt, wenn der (benannte) Punkt nicht in der aktuellen Map zu finden ist, werden alle Maps durchsucht.
sm (mapname|id)(SwitchMap) schaltet zur angegebenen Map um. Es wird zum zuletzt aktiven Punkt in der Map gesprungen. Erzeugen:
asp -d(&|#|x*|$|!)?(Richtungsid|-name|0) ((-m(Mapid|-name))? -p(Punktid|-name))? (Name des Ausgangs)?(AddSPecial) Hinzufuegen des speziellen Ausgangs in der Richtung [wenn Richtung 0 zum Punkt Map/Punkt] mit dem angegebenen Namen, geht auch fuer Verbindungen zu Knoten, die mehr als eine Einheit weg liegen (asp -drichtung -ppunktid)
ae (((&|#|x*|$|!)?(Richtungsid|-name)|marked) )+(AddExit) in den angegebenen Richtungen werden Ausgaenge erzeugt, ggf. mit Knoten verbunden oder neue Knoten erzeugt, bei der Angabe von marked zwischen allen markierten Knoten Verbindungen erzeugt, wobei aber ein Knoten in einer Richtung nur einen Ausgang haben darf. Fuer das (#|x*|$|!) siehe Syntax
ar special exit name(AddReverse)wenn der aktuelle raum nur einen Ausgang bzw. einen Zugang hat, wird ein/der Ausgang mit dem angegebenen Spezialausgang erzeugt/ueberschrieben (praktisch fuer: raus, verlasse xxx)
alb richtung raumnummer(AddLaB) dieser Befehl soll Unterstuetzung zum Mappen von unlogischen Labyrithen geben. Wenn man diese z.B. mit dem Ablegen von Muenzen mappt, kann man den Befehl sehr einfach nutzen, indem man eine neue Map anlegt und dann als Raumnummern einfach die Muenzenanzahl in den Raeumen nimmt. Die Raeume werden im doppelten Abstand der normalen Befehle angelegt, weil das die Uebersichtlichkeit erhoeht. Weil in diesen Labs Hin- und Rueckwege nicht uebereinstimmen, werden die meisten Ausgaenge wohl getrennt dargestellt. Es wird immer nur der Hinweg zum angegebenen Raum erzeugt, falls der Raum noch nicht exisitiert wird er in der angegebenen Richtung erzeugt, also aufpassen wenn dort schon ein Raum vorhanden ist, dann muss der Zielraum mit an (AddNode) z.b. mit der interaktiven Mausunterstuetzung woanders erzeugt werden.
am mapname(AddMap) es wird eine neue Map mit dem angegebenen Namen erzeugt, wenn dieser noch nicht existiert. Diese enthaelt schon den Punkt 0.
cgrid xpos ypos -sx Breite (-sy Hoehe)? (-di)?(CreateGRID) Erzeugt ein Netz in der Map, in dem der aktuelle Punkt die Position (xpos,ypos) hat (z.B. (0,0) links unten oder (Breite-1,Hoehe-1) rechts oben). Wenn die Hoehe nicht angegeben wird, wird ein quadratisches Netz erzeugt. Mit der Angabe von -di werden auch die Diagonalen erzeugt.
an (-r(knotenid|name)) x y? z? $?(AddNode) Erzeugt einen neuen Knoten (kann auch interaktiv mit der Maus erzeugt werden)
MP (-a(Knotenid/-name)?|-r((x*)richtungsname|id)?)? (x|dx) (y|dy)? (z|dz)? (-m(mapid|name))? marked?(MovePoint) Verschiebt die angegebenen Knoten:
sn ((richtungsid|name) )+(SplitNode) splittet vom aktuellen Knoten einen neuen Knoten ab, der die angegebenen Ausgaenge vom vorherigen Knoten uebernimmt.
mh knotenname/id(MakeHouse) Mit diesem Kommando wird der Massstab aller markierten Knoten halbiert und zwar so, dass die Position des angegebenen Knotens unverändert bleibt. Damit kann z.B. das Innere eines kleinen Gebaeudes dargestellt werden, ohne das es Ueberschneidungen gibt. Die Knoten erhalten ein zusätzliches Flag, das im Info als "Gebaeude" dargestellt wird. Von diesen Knoten aus werden Ausgaenge auch mit dem halben Masstab erzeugt, so das es keine Ueberschneidungen mit aeusseren Wegen gibt. Wenn man einen dieser inneren Knoten mit einem aeusseren verbinden will, musss man es mitasp -drichtung -pknotennummer/id machen. Die so modifzierten Knoten erscheinen in der Karte blau. Loeschen:
DE ((-d#?(Richtungsid|-name|0) ((-m(Mapid|-name))? -p(Punktid|-name))? (Name des Ausgangs)?)|((#?(Richtungsid|-name)|marked) )+)(DeleteExit) loescht die Ausgaenge in den angegebenen Richtungen. Wenn ein # vor der Richtung steht, dann wird nur der Ausgang in Hinrichtung geloescht. Die Angabe von marked bewirkt das Entfernen aller Verbindungen zwischen den markierten Knoten
DP ((PunktId/-name|marked) )?(DeletePoint) loescht die angegebenen Knoten, wenn keiner angeben dann den aktuellen Punkt, und bei marked alle markierten Knoten, alle Wege die von ihm weg- und zu ihm hinfuehren (in allen Maps). Die Punktnummer kann spaeter beim Erzeugen neuer Knoten wiederverwendet werden. Sonstiges:
QVerlassen ohne speichern (Vorher abspeichern)
save ((map )+|all)?Speichert die Map in Dateien fuer Koordinaten, Ausgaenge und Infos ab. Wenn nichts angegeben wird, wird die aktuelle Karte, sonst die angegebenen Karten bzw. bei all alle Karten abgespeichert.
lpc (marked|map)?(makeLPC) erzeugt bzw. aktualisiert die LPC-Files fuer die angegebenen Knoten (markierte, ganze Map, wenn nichts angegeben fuer den akutellen Knoten)
poly [von_level]<[bis_level] farbe koordinatenpaare [-tText](Polygon) zeichnet Polygone, die innerhalb der angegebenen Level oder ueberall sichtbar sind, in der angegebenen Farbe und plaziert den ggf. vorhandenen Text im Schwerpunkt des Polygons
opt ((para (0|1)?|numbers|grid|vgrid|level maxlevel)|schluesselwort wert?)(Options) setzt bzw. schaltet die Optionen (es koennen eindeutige teilstrings benutzt werden (z.B. opt num)):
ai (color|name|short|long|exa|ways|npc|house|port|tport|tank|pub|shop|Schluesselwort) (text) (-r (all|map|level|region dx dy dz|marked|((nodes|named) knotenid/name+))?(AddInfo) fuegt dem aktuellen Punkt oder den durch die Auswahlsyntax angegebenen Knoten die angegebenen Informationen hinzu, der Text wird direkt als String fuer die Anzeige uebernommen. Wenn kein Text angegeben wird, dann wird der aktuelle Wert des Attributs geloescht. Die benannten Schluesselworte werden auch noch anderweitig ausgewertet, bei selbstgewaehlten Schluesselworten (beliebig viele) ist das nicht der Fall.
Beispiele:
vorgegebene Schluesselworte: short,Kurzbeschreibung long,Langbeschreibung npc,NPCs name,Name ways,WegeKnoten exa,komplett untersucht house,Haeuser tport,Teleporter port,Hafen shop,Laden pub,Kneipe tank,Tanke color,Farbe des Knotens in Anzeige
si (Punktname|-id)?(ShowInfo) Zeigt das Info des angebenen bzw. des aktuellen Knotens an.
aec #?richtung (farbe)?(AddExitColor) weisst dem Ausgang in der angegebenen Richtung (wenn # nicht angegeben wird auch in der Rueckrichtung) die angegebene Farbe zu. Ohne Farbangabe wird die Farbe wieder geloescht. Der Ausgang wird in der entsprechenden Farbe dargestellt.
aecmd #?richtung (kommandos)?(AddExitCommand) weisst dem Ausgang in der angegebenen Richtung (wenn # nicht angegeben wird, auch in der Rueckrichtung) die angegebenen Kommandos zu. Ohne Kommandostrings werden die vorhandenen Kommandos geloescht. Die Kommandos werden bei si (ShowInfo) hinter dem Ausgang angezeigt und in der Map durch ein + symbolisiert. Der Nutzen liegt im Notieren der noetigen Kommandos und ausserdem werden diese Kommandos vor dem Bewegungsbefehl vom Mapper ans tf geschickt, wenn man sich im Mapper bewegt.
aecmd richtung (tuerbezeichnung)?(AddExitDoor) weisst dem Ausgang in der angegebenen Richtung den uebergebenen Bezeichner fuer einen Verschluss (Tor, Portal, Luke usw.) zu. Dabei sollten grossgeschriebene Begriffe fuer fest verschlossene Dinge (nur mit Schluessel zu oeffnen) und Kleingeschriebenes fuer einfach zu oeffnende Verschluesse genutzt werden. Ohne Bezeichnung wird die ggf. vorhandene geloescht. Der Bezeichner wird bei si (ShowInfo) hinter dem Ausgang angezeigt und in der Map durch den ersten Buchstaben symbolisiert.
lna (-m|u )?Schluesselwort (all|map|level|region dx dy dz)((task)|!?(suchstring))?(ListNodeswithAttribute) Es werden alle Knoten aufgelistet die das angegebene Schluesselwort enthalten und die zugehoerigen Inhalte, sofern sie innerhalb der angegebenen Region liegen.
Wenn der Parameter -m angegeben wird, werden die gefundenen Knoten markiert. Bei -u werden sie demarkiert.
sf ((+|-)?flagname (all|map|level|region dx dy dz|((nodes|named) knotenid/name+)?)?(SetFlag) SetFlag setzt bzw. loescht Flags eines oder mehrerer Knoten bzw. zeigt die Flags des aktuellen Knoten an.
? [schluesselwort]Zeigt ein Hilfefenster an, in dem entweder die allgemeine Hilfeuebersicht angezeigt wird oder der Hilfetext zu dem jeweiligen Schluesselwort
Pfeil hoch und Pfeil runterLiefert die zuletzt verwendeten Befehle (ohne Richtungskommandos), die verwendet wurden. Dabei werden die Befehle nur einmal gespeichert, wenn derselbe Befehl noch einmal verwendet wird, wird nur die aktuellste Referenz gehalten. Es gibt keine Grenze fuer die Historygroesse.
undo (anzahl)?die Undo Funktion nimm die Aktionen de(r) letzten (anzahl) Befehl(e) zurueck. Dies ist so implementiert, dass die Gegenbefehle zum letzen Befehl in der Undoliste gespeichert werden und dann bei der Ruecknahme ausgefuehrt werden. Das ist speicherschonender als das Sichern der kompletten Daten bei jedem Schritt. Leider ist es auch komplizierter, die Gegenbefehle zu erzeugen. Deshalb ist diese Funktion noch mit Vorsicht zu geniessen, sollte aber unbedingt getestet werden, damit ich die Fehler, die dabei auftreten schnell beheben, kann. Bei Fehlern bitte genaue Aktionsfolge vor der Ruecknahme, am besten eine Kopie der Ausschriften des Mappers auf der Konsole an mich senden, so dass ich die Fehler nachvollziehen kann.
zoom [stufen]Zoomt die angegebene Zahl von Stufen in die Map rein
unzoom [stufen]Zoomt die angegebene Zahl von Stufen aus der Map raus
moveview anzahl*richtung oder mv anzahl*richtungVerschiebt die Ansicht um die angegebene Anzahl in die Richtung, dabei sind alle Richtungen moeglich z.B. mv 5*wob oder moveview 13*sswob ,)), der aktuelle Knoten bleibt bestehen
center (node knotenname/id|view x (y (z)?)?|screen x (y (z)?)?)?Zentrieren der Ansicht:
ei ($typ name|nummer|typ|typ beginn_des_namens)(EditInfo) Parameter:
ci §§ typ name(§attribut wert)+(CreateInfo)
ci §§ NPC Waechter§hp 125§level 20§weapon Schwert[637]erzeugt das Objekt Waechter des Typs NPC mit den angegebenen Attributen. die [637] weisst darauf hin, das es fuer das Schwert auch ein Objekt mit genau dieser Nummer gibt.
oi (nummer|typ|typ beginn_des_namens)?(ObjectInfo)
di (nummer|typ|typ beginn_des_namens)(DeleteInfo)
saveObjectsSpeichert alle im Mapper vorhandenen Objekte ab. Die entstehende Datei kann z.b. so aussehen. Beim Verlassen des Mappers wird nicht gespeichtert!
loadObjectsLaedt die Objekte aus der Datei map.info im Mudverzeichnis. Beim Start des Mappers werden diese auch geladen.
18.03.2001 Michael Hunger Mesirii@mg.mud.de