Navigation: Table of Contents, Index, next: MUSH-Programmierung in Imbris, Teil 2, prev: Imbris für Newbies
Ich spiele nicht mehr im Imbris MUSH. Erstens habe ich keine Zeit mehr dafür, und zweitens gab es mir zuwenig Spieler dort. Das ist schade, denn von der Idee her hat Imbris mich damals (1997/98) total begeistert.
Dies ist eine Seite, in der ein paar Programmierbeispiele vorgestellt werden, die speziell für den Imbris MUSH gedacht sind. Bevor man sich mit dem Programmieren auseinandersetzt, sollte man allerdings ein paar Mal in Imbris gespielt haben. Ab dem dritten oder vierten Mal kann man dann ans Programmieren gehen, falls man Zeit und Lust dazu hat. Wer neu ist, sollte sich einmal die Seite für Newbies, dh. für Anfänger, anschauen. Wer sich schon besser auskennt, kann sich ja an The MUSH Manual wenden.
Auf dieser Seite finden sich code Beispiele für:
Auf einer zweiten Seite stelle ich den code für den Trommelverkäufer vor.
Zu beachten ist bei all diesen Beispielen, dass in einem MUSH ein Befehl immer auf einer Zeile getippt werden muss. Was hier auf der WWW Seite also auf mehreren Zeilen verteilt ist, muss im MUSH auf einer Zeile eingegeben werden! Ein weiteres Muss ist der Verzicht auf alle Umlaute. Bitte verwendet die entsprechenden Umschreibungen ae, oe und ue. Will man sich einmal ansehen, wie das folgende Beispiel aussieht, kann man den Trommelladen mit allem drum und dran in der Stadt Imbris vom Bazar aus erreichen.
Bevor man mit einem Raum anfängt, sollte man sich vielleicht fragen: Was können die anderen Spieler in meinem Raum erleben? In Imbris hat es meist wenig Leute, umso interessanter sind Räume, die man auch alleine erforschen kann, die auch ohne weitere Mitspieler interessant sind. Einfach ein Privates Zimmer zu programmieren ist meiner Meinung nach nicht Grund genug, um seinen Raum angeschlossen zu bekommen.
Wir fangen an, indem wir mit @dig/teleport einen Raum
graben und ihn beschreiben. Die @desc
Beschreibung ist der Text, der erscheint, wenn man den Raum betritt.
Die dazu gehörige Hilfe bekommt man mit help @dig
und help @desc.
@dig/teleport Trommelladen
@desc here = In Nooms Trommelladen faellt das Licht gedaempft durch
die Fenster ein. Staubige Regale entlang den Waenden biegen sich unter
dem Gewicht der vielen Trommeln, die hier aufgestapelt sind. Von
grossen, fast mannsgrossen tandrischen Drachtrommeln bis hin zu
kleinen Doppeltrommeln fuer das Fest der Feuerkinder gibt es hier fast
alles. Alle Trommeln scheinen aus dem Nordosten von Imberia zu
kommen. Hinter der Theke gibt es eine Tuer, an der ein "Privat" Zettel
haengt. Der Holzboden knarrt.
Nun fügen wir noch ein paar Sinneseindrücke hinzu. Die
dazu gehörige Info bekommt man mit +hilfe sinne.
Hier setzen wir zum ersten Mal sogenannte Attribute, in dem
wir &ATTRIBUT objekt = wert verwenden. here
bezeichnet dabei den Raum, in dem man sich gerade befindet.
&GERUCH here = Der Trommelladen ist erfuellt von einem exotischen,
wuerzigen Geruch. Offensichtlich zuendet Iloorg von Zeit zu Zeit
Raeucherstaebchen an, und ihr Geschmack haengt in allen Ritzen und
Spalten. Dazu kommt noch der leichte Ginger Geruch, der allen
Tandrisch anhaengt, und das nach Nuessen riechende Trommelfett, mit
dem die Tandrisch die Felle fuer ihre Trommeln nachbehandeln.
&GERAEUSCH here = Leichter Laerm dringt von der Strasse
herein. Hier drinnen ist es aber ruhig und friedlich. Ein leichter
Windhauch bringt das Glockspiel ueber der Tuere zum klingen. Der Boden
knarrt. Es ist still hier.
&GEFUEHL here = Hier ist es ruhig und kuehl. Eine entspannte,
wuerzige Atmosphaere erfuellt den Raum.
Nun fügen wir noch ein paar Details hinzu. Details
ermöglichen es den Spielern, in einem Raum ein wenig zu Forschen.
Es gibt hier mehrere Ideologien: Viele meinen, dass man fast jedes
Substantiv der @desc Beschreibung in einem Detail
näher beschreiben sollte (und alle dort auftauchenden Substantive
auch wieder!). Dieser Meinung bin ich nicht. Ich denke vielmehr,
dass es nur wenige Details geben sollte, die dafür, sofern sie
nicht Teil eines Rätsels sind, sehr deutlich als solche erkennbar
sein sollten. Derartige Details werden dann GROSS geschrieben. Siehe
auch +hilfe detail.
&DETAIL_TROMMEL here = Jede Trommel hier traegt die
typischen, trandrischen schwarz-roten MALEREIEN.
&DETAIL_MALEREIEN here = Die Malereien zeigen Drachen und
Menschen die miteinander ringen, hohe Berge, enge Taeler, und ab und
zu eine schreckliche, duestere Burg, auf unwegsamen Felsen errichtet.
Nun muss der Raum noch an den Rest der Welt angeschlossen werden! Solange er dies nicht ist, warnt uns der MUSH davor, indem er von Zeit zu Zeit meldet, You own a floating room!. Um diese Warnung zu umgehen, setzen wir in diesem Raum einen Flag, der dies unterdrückt:
@set here = FLOATING
Vgl. hierzu help FLOATING. Den Weg nach draussen
können wir problemlos programmieren. Wir wählen uns einfach
einen Raum aus, zu dem man zutritt haben möchte (der eigene Raum
muss natürlich in dessen Nähe passen, so wie der
Trommelladen in die Nähe des Bazars passt). Der Bazar hat die
Nummer #67. Deswegen erzeugen wir einen Ausgang mit:
@open Hinaus <HI>;hi;raus;bazar;ba = #67
@succ hi = Du verlaesst den Trommelladen.
@osucc hi = verlaesst den Trommelladen.
@odrop hi = kommt aus dem Trommelladen.
Ein paar Aliase nicht vergessen. Vor allem hinaus und
hi sind Aliase, die man, wo immer möglich, mit einbauen
sollte. Dokumentation hierzu mit help @open.
Das Attribut @succ beschreibt, was derjenige sieht,
der den Ausgang benützt, @osucc beschreibt, was die
Verbleibenden sehen, und @odrop beschreibt, was
diejenigen sehen, die am anderen Ende des Ausgangs stehen. Vor allem
@osucc ist wichtig, damit man Personen folgen kann, die
den Raum verlassen. Siehe auch die entsprechenden help
Seiten. Wenn man also im Trommelladen steht, und hinaus
tippt, dann wird man vom Trommelladen auf den Bazar befördert.
Hierzu sieht man das @succ Attribut, die Leute im
Trommelladen sehen @osucc, und die Leute auf dem Bazar
sehen @odrop.
Einen Rückweg vom Bazar in den Trommelladen können wir leider nicht programmieren, da uns der Bazar nich gehört. Damit wir trotzdem immer schnell in unseren Raum teleportieren können, machen wir:
@link me = here
Doch wem gehört nun der Bazar? Wenn wir ex #67
eintippen, erfahren wir, dass der Bazar Sarokar gehört. Deswegen
fragen wir Sarokar nach einem Zutritt vom Bazar zu unserem
Trommelladen:
post/sende sarokar = Hallo! Ich bin relativ neu hier und habe mir
nun einen eigenen Raum gebaut. Es ist ein Trommelladen. Schau ihn Dir
einmal an, wenn Du Lust hast. Ich wuerde mich freuen, wenn man einen
Zugang vom Bazar zu Trommelladen haben koennte. Kannst Du einen
solchen Zugang bauen? Mein Trommelladen hat die Nummer #2546, so dass
ich mir ein '@open Zum Trommelladen <ZT>;zt;laden;trommel = #2546
vorgestellt habe.
In derselben Art machen wir einen kleinen Gegenstand. Siehe auch
help @create und help @lock.
@create Feuervogel
@lock Feuervogel = me
@desc Feuervogel = Der Feuervogel sieht aus wie ein rot-oranger
Pfau, mit kobaltblauen Augen. Sein Blick ist stumm und ein wenig
beaengstigend. Saehe er nicht so wunderbar zart aus, koennte dieser
starre, blaue Blick laehmend wirken. Mit seinem geschwungenen Hals und
den wie Lava schillernden FEDERN scheint er aber nicht sehr bedrohlich
zu sein. Sein Nest scheint auf einem Regal in einem der hinteren,
dunklen Ecken des Ladens versteckt zu sein.
&DETAIL_FEDERN Feuervogel = Wenn Du versuchst, Dich dem Vogel zu
naehern, weicht er zurueck. Verfolgst Du ihn, flattert er auf! Erst
jetzt bemerkst Du, dass er brutale KLAUEN traegt. Seine Federn kannst
Du nicht genauer in Augenschein nehmen. Sie schillern in allen rot und
orange Toenen.
&DETAIL_KLAUEN Feuervogel = Die Klauen des Feuervogels sind etwa
fingerlange Klingen aus einem dunkelroten, metallisch glaenzendem
Material. Wie der Vogel aufflattert und mit seinen Klauen nach Dir
hackt, fuerchtest Du um Dein Gesicht, solltest Du Dich ihm weiter
naehern.
Hierfür brauchen wir Aktionen. Siehe auch +hilfe
Aktionen. Eine zufällige Aktion wird alle 30 Sekunden
ausgelöst. Indem wir eine höhere Anzahl Aktionen angeben,
als wirklich vorhanden sind, werden diese auch entsprechend seltener
angegeben. Persönlich mag ich es nämlich nicht sehr, wenn
in einem Raum zuviele derartigen Aktionen passieren. Dies kann man
entsprechend weiter ausbauen.
&ACTION_ANZAHL here=10
&ACTION_0 here = Das Murmeln der Leute auf dem Basar toent von der
Strasse herein.
&ACTION_1 here = Der Feuervogel betrachtet Dich neugierig.
Zuerst bauen wir einen zweiten Raum, wobei wir uns die Nummer des neu erschaffenen Raumes merken:
@dig/teleport Keller
@desc here = Hier ist es kalt und finster. Die Waende sind aus grob
behauenen Steinen, und staubig, SPINNWEBEN fuellen die dunklen Ecken
des Kellers. Ein leichter Hauch von Moder erfuellt den Raum.
&DETAIL_SPINNWEBEN here = Die Spinnweben sind gross, schwer von
Staub. Im duesteren Licht hier unten siehst Du kleine, vielbeinige
Schatten in den Netzen haengen. Ab und zu erzittern die
Netze. Vielleicht ist es nur ein Lufthauch. Wenn Du aber genauer
hinschaust, siehst Du, wie eine grosse, sich schnell bewegende Spinne
eine Schmeissfiege umwickelt. Die Spinnen sind ueberall. Es koennte
sich in diesem Moment eine auf Dich abseilen und Dir im Nacken landen!
&GERUCH here = Es riecht hier unten nach modrigem Erdreich. Ab und
zu riechst Du den ueblen, zaehen Geruch von Faekalien und
Faeulniss. Man koennte meinen, Du seist in frischen Hundekot getreten,
und von Zeit zu Zeit erreicht Dich ein Hauch davon.
Zuerst gehen wir wieder in den Trommelladen (mit dem Zauberwort
heim) und verbinden diese beiden Räume, indem
wir vom Laden aus einen Ausgang zum neuen Raum und zurück
schaffen:
@open Durch die Falltuere hinab <FT>;runter;hinab;ft = #2447, Hoch
<HO>;ho;raus
@succ ft = Du oeffnest die Falltuere und
kletterst hinab.
@osucc ft = oeffnet die Falltuere und
klettert hinab.
@odrop hi = schiebt eine Trommel beiseite und klettert aus der
dahinter liegenden Falltuere.
@set ft = DARK
Der DARK Flag macht den Ausgang unsichtbar. Danach gehen wir
hinunter (hinab) und beschreiben noch den Rückweg:
@succ ho = Du kletterst hoch.
@osucc ho = klettert hoch.
Wir gehen wieder zurück in den Laden, benutzen diesmal aber
den normalen Ausgang, hoch. Zu allerletzt müssen
wir nämlich noch eine Möglichkeit schaffen, um diesen Raum
zu entdecken! Wie oben der Trommelladen
beschrieben wurde, wurde der knarrende Holzboden erwähnt. Dies
ist der Tip für den Geheimgang, wir setzen einfach noch ein
Attribut:
&DETAIL_HOLZBODEN here = Der Holzboden ist fest gefuegt und sieht
relativ neu aus. Um festzustellen, warum er knarrt, muesste man ihn
vielleicht abklopfen.
Und um den Boden abzuklopfen, fügen wir noch einen neuen Befehl
ein. Neue Befehle sind Attribute, die so aussehen: $befehl:
aktionen.
&KNOCK here = $*klopf*boden*: @emit %N faengt an, den Boden
abzuklopfen. Tatsaechlich, hinter einer grossen Trommel toent es
hohl! Die Trommel kann man sicher verschieben.
&SCHIEBEN here = $*schiebe*trommel: @emit %N verschiebt eine
Trommel.%rUnter der Trommel befindet sich eine Falltuere!; @set
ft=!DARK; @wait 60=@set ft=DARK; @wait 65=@emit Illorg schiebt die
Trommel zurueck auf ihren Platz.%rIloorg sagt, "Schnueffler! Lasst mir
bloss meinen Laden in Ruhe!!"
Iloorg ist der Verkäufer im Trommelladen, der auf der zweiten Code-Seite besprochen wird.
Jeder Text, der nun 'klopf' und 'boden' enthält, wird als Befehl interpretiert, den Boden abzuklopfen. Dies ist problematisch, weil man nun nicht einmal mehr über das Abklopfen des Bodens reden kann, ohne diesen Befehl auszulösen. Andererseits kann man nun mit jeder Menge Befehle den Boden abklopfen: klopfe den Boden ab, Noom klopft den Boden ab, ich klopfe den holzboden ab, und so weiter. Das selbe gilt fuer das Verschieben der Trommeln. Persönlich habe ich es nämlich am lieber, wenn man nicht allzulange nach Befehlen raten muss.
Hier werden nach dem Verschieben der Trommel zwei Sachen gemacht:
Erstens wird die Falltüre auf !DARK gesetzt, und
zweitens wird ein timer gestartet, welcher nach einer Minute die
Falltüre wieder schliesst (dh. auf DARK setzt und
somit unsichtbar macht).
Was die seltsamen Prozent Zeichen sollen, erfährt man mit help
substitution.
Navigation: Top, Table of Contents, Index, next: MUSH-Programmierung in Imbris, Teil 2, prev: Imbris für Newbies