Morgengrauner Dokumentation
Dateipfad: /home/mud/mudlib/doc//wiz/obj_geruest/*
*----------------------------------------------------------------------
* obj_geruest
* Dieses File ist Teil der Morgengrauen-Mudlib.
* Dieses File wird optimal formatiert, wenn Tabulatoren 4 Zeichen breit
* sind.
*
* Allgemeines Geruest fuer ein Objekt. Wer eigene Objekte schreibt,
* sollte sie nicht ganz so intensiv kommentieren wie dieses hier, aber
* hier sollen gleichzeitig, die grundlegenden Mechanismen erlaeutert
* werden.
*
* 16.08.92 Rumata
* Ueberarbeitet am 24.08.94 von Viper
*----------------------------------------------------------------------
*/
inherit "std/thing"; /* Leite aus den std-Objekten ab */
#include /* Stelle Namen der Faelle und der Geschlechter */
/* dem Objekt zur Verfuegung. */
create()
{
::create();
/* Diese Zeile NIEMALS vergessen!!! */
AddId( "ball" );
AddId( "strandball" );
/* Unter diesen Bezeichnungen fuehlt der Ball sich "angesprochen" */
/* Mann sollte mit Ids nicht sparen, damit die Spieler nicht ewig */
/* nur nach dem richtigen Namen eines Objektes suchen muessen. */
SetProp( P_NAME, "Ball" );
SetProp( P_GENDER, MALE );
SetProp( P_ARTICLE, 1 );
/* Diese Meldungen ermoeglichen es der Mudlib, das Objekt richtig */
/* zu deklinieren. SetProp(P_ARTICLE, 1) kann wegfallen, da 1 Default ist. */
SetProp( P_SHORT, "Ein bunter Ball" );
SetProp( P_LONG, "Was fuer ein huebscher kleiner Strandball.\n"
+"Wem koenntest Du den mal zuwerfen?\n" );
/* Beschreibungen zur Betrachtung des Balls. */
SetProp( P_VALUE, 10 );
SetProp( P_WEIGHT, 250 );
/* Bei diesen Werten sollte die Verhaeltnismaessigkeit */
/* nicht aus den Augen gelassen werden. */
}
init()
{
::init();
/* NICHT VERGESSEN */
/* Wenn keine eigenen Aktionen definiert werden sollen, so kann die */
/* Funktion init ganz weggelassen werden. Ein init, das nur */
/* ::init() aufruft ist ueberfluessig. */
add_action( "wurf", "werf", 1 );
add_action( "wurf", "wirf" );
/* werfe, werf oder wirf jemandem den Ball zu. Man sollte darauf */
/* achten, dass natuerliche Saetze als Eingabe akzeptiert werden. */
}
/*************************************************************************/
/************* Die grundlegenden Funktionen enden hier *******************/
/*************************************************************************/
/* Eine Beispielaktion fuer den Ball. */
wurf( argument )
{
/* "werf ball rumata zu" wird als Argument "ball rumata zu" bekommen. */
string arg1, arg2;
string ziel;
object zielObj;
if ( sscanf( argument, "%s %s zu", arg1, arg2 ) != 2 ) return 0;
/* Rueckgabe von 0 bedeutet, dass dieses Objekt mit der Eingabe */
/* nichts anfangen konnte, und dass der Gamedriver das naechste */
/* Objekt befragen soll. */
if ( id( arg1 ) )
/* Welches der Argumente spricht den Ball an ? */
/* Das andere muss dann das Ziel des Balls sein. */
ziel = arg2;
else if ( id( arg2 ) )
ziel = arg1;
else
return 0;
/* Keines der Argumente war der Ball. */
zielObj = present( ziel, environment() );
/* Suche ein Objekt, das sich als Ziel angesprochen fuehlt. */
if ( ! zielObj )
{
write( "Hier ist kein \"" + ziel + "\".\n" );
return 1;
/* Hier wird 1 zurueckgegeben, da der Ball das Kommando den */
/* Befehl bearbeiten konnte. Er hat zwar kein Ziel gefunden, */
/* aber man kann ja nicht alles haben. :-) */
}
if( !living( zielObj ) )
{
write( "Und wie soll " + zielObj->name(WER,1) + " den Ball fangen?\n" );
return 1;
/* Nur lebende Wesen sollen Baelle fangen koennen. */
}
write( "Du wirfst " + zielObj->name(WEN,1) + " den Ball zu.\n" );
/* Mitteilung an den Werfer */
say( PL->name(WER,2) + " wirft " + zielObj->name(WEM,2)
+ " einen Ball zu.\n", zielObj );
/* Mitteilung an alle Wesem im selben Raum. */
tell_object( zielObj, "Hoppla, " + PL->name(WER,2)
+ " wirft Dir einen Ball zu.\n" );
/* Mitteilung an den Beworfenen */
if ( move( zielObj ) ) return 1;
/* Es hat geklappt. */
move( environment() );
/* Im Fehlerfall soll der Ball zu Boden fallen. */
write( "Aber " + zielObj->QueryPronoun(WER)
+ " kann ihn nicht fangen.\nDer Ball plumpst zu Boden.\n" );
say( "Aber " + zielObj->QueryPronoun(WER)
+ " kann ihn nicht fangen.\nDer Ball plumpst zu Boden.\n", zielObj );
tell_object( zielObj,
"Aber Du kannst ihn nicht fangen.\nDer Ball plumpst zu Boden.\n" );
return 1;
}
zurück zur Übersicht