Von überall kommt ihr über dieses Logo auf diese Seite zurück!

LPC Tutorial


Wir haben immer wieder Leute in unserem Mud, die sich wenig bis gar nicht mit Programmierung auseinandergesetzt haben. Aus diesem Grund habe ich dieses Tutorial zusammengestellt, welches einen Einblick in gewisse Grundstrukturen geben soll. Da wir in Sinn? die Unitopia Mudlib benutzen sind auch die Beispiele nicht ohne weiteres auf andere Mudlibs übertragbar.

Objekte

Prinzipiell ist alles was man beim Spielen im Mud antrifft ein Objekt. Ob nun Spieler, NPCs, Räume, Gegenstände (wie Waffen, Fackeln, Rucksäcke, etc). Jedes Objekt bekommt demnach erstmal die Regeln mit auf den Weg, die jedes Objekt beinhaltet (Dies ist bei uns in /i/item). Sollte dann das Objekt ein Raum werden, so müssen dann die Funktionen, die einen Raum ausmachen, hinzugefügt werden (Wie z.B. die Möglichkeit, Dinge in den Raum reintun zu können, oder auch die Möglichkeit, Ausgänge setzen zu koennen, etc). Ähnlich muss das mit einem NPC gemacht werden, der nun noch die Möglichkeiten braucht, um zu reden, um Waffe zu führen, um Dinge in sein Inventory aufnehmen zu können, um Lebenspunkte zu haben, usw.

Wenn nun ein Objekt geladen wird, wird ein sogenanntes Blueprint erstellt. Dieses Blueprint ist ein Objekt, das nur in dem Fall, wo das geladene Objekt in die Welt bewegt wird, sich auch in der Welt befindet. In diesem Fall gibt es dieses Objekt lediglich einmal. Sollte man ein Objekt clonen, befindet sich das Blueprint nicht in der Welt, sondern dient als Kopiervorlage fuer das Klonen dieses Objektes, damit es nicht jedesmal neu gelesen und neu kompiliert werden muss.

Jedes Objekt hat prinzipiell 3 Funktionen, die definiert werden koennen, welche zu bestimmten Gegebenheiten aufgerufen werden. Diese Funktionen heissen create(), init() und reset().

Wenn ein Objekt erschaffen wird, dann wird die Funktion create() aufgerufen. Diese Funktion wird sofort ausgefuehrt, wenn ein Objekt entweder über load_object geladen wird (und es vorher noch nicht geladen war) oder etwa über clone_object "kopiert" wird. In diesem Fall befindet sich das Objekt auch noch in keinem anderen Objekt wie einem Raum oder aehnlichem, so dass auch eine Abfrage nach dieser (über environment()) eine 0 zurückgibt. In der create() Funktion werden normalerweise die ganzen Festwerte eines Objektes gesetzt. Dies sind im Normalfall der Name, die Short, die Long, das Geschlecht, etc.

Wenn ein Spieler nun das erste mal mit einem Objekt in Kontakt kommt (das Raumobjekt betritt, den gleichen Raum wie andere Objekte betritt, etwas aus einem Rucksack oder einem anderen container nimmt), dann wird die Funktion init() aufgerufen. In dieser Funktion werden unter anderem die add_actions (fuer das Befehlparsing) gesetzt. Heisst also, sobald ein Objekt (Monster oder Spieler) ein anderes mit einem add_action-Aufruf in der init() Funktion hat, wird diese "action" fuer jenes Objekt ermöglicht.

Die reset()-Funktion schliesslich wird regelmaessig ausgefuehrt. (Das Zeitintervall wird vom Driver festgelegt) In dieser Funktion sollten unter anderem Objekte, die sich in dem Raum befinden sollten, überprüft werden und wenn nicht vorhanden ersetzt werden.



Zurück auf die Programmieren-Seite <> Homepage