Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/doc/beispiele/misc/bsptransporter1.c b/doc/beispiele/misc/bsptransporter1.c
new file mode 100644
index 0000000..3e26020
--- /dev/null
+++ b/doc/beispiele/misc/bsptransporter1.c
@@ -0,0 +1,132 @@
+inherit "std/transport";
+
+/* wolke.c Ein Beispiel zur Programmierung eines Transporters */
+/* von Rumata (mit kleinen Bugfixes von Wargon ;) */
+
+#include <properties.h>
+#include <language.h>
+
+create()
+{
+  ::create();
+  SetProp( P_NAME, "Woelkchen" );
+  AddId( ({ "wolke", "woelkchen" }) );
+  SetProp( P_GENDER, NEUTER );
+  SetProp( P_INT_SHORT, "Auf einer kleinen Wolke" );
+  SetProp( P_INT_LONG,
+	  "Du sitzt auf einer kleinen Wolke, die zwischen Jofs und Rumatas\n"
+	  +	"Arbeitszimmer hin- und herpendelt. Wenn sie niedrig fliegt, kannst\n"
+	  +	"Du bestimmt von ihr heruntersteigen.\n"
+	  );
+  SetProp( P_SHORT, "Eine kleine Wolke" );
+  SetProp( P_LONG,
+	  "Diese suesse kleine Cumuluswolke schwebt zwischen Jofs und Rumatas\n"
+	  +	"Arbeitszimmer hin und her. Vielleicht kannst Du auf sie draufsteigen.\n"
+	  );
+  SetProp(P_LIGHT, 1 );
+  SetProp(P_TRANSPARENT,1);
+  // Man soll auf(in) die Wolke und von ihr herunter schauen koennen.
+    
+  /*** Meldungen, die Transporter geben koennen ***/
+  
+  SetProp( P_DEPARTMSG, ({
+    "Die Wolke steigt in die Luft.\n", 
+    "Die Wolke fliegt davon.\n"
+  }) );
+  // Die erste Meldung ist fuer Leute auf der Wolke.
+  // Die zweite fuer Leute in dem Raum, in dem die Wolke ankommt.
+      
+  SetProp( P_ARRIVEMSG, ({
+    "Die Wolke naehert sich dem Boden von @@QueryArrived@@.\n",
+    "Eine kleine Wolke schwebt herab.\n"
+  }) );
+  // Die erste Meldung ist fuer Leute auf der Wolke.
+  // Die zweite fuer Leute in dem Raum, aus dem die Wolke abreist.
+    
+  SetProp( P_ENTERMSG, ({
+    "steigt auf die Wolke",
+    "kommt auf die Wolke"
+  }) );
+  // Die erste Meldung ist fuer den Raum, aus dem der Spieler kommt.
+  // (=Raum). Die zweite Meldung ist fuer Spieler in dem Raum, in
+  // den der Spieler geht (=Transporter).
+	
+  SetProp( P_LEAVEMSG, ({
+    "steigt von der Wolke",
+    "steigt von der Wolke"
+  }) );
+  // Die erste Meldung ist fuer den Raum, aus dem der Spieler kommt.
+  // (=Transporter). Die zweite Meldung ist fuer Spieler in dem Raum,
+  // in den der Spieler geht (=Raum).
+      
+  SetProp( P_LEAVEFAIL, "Die Wolke schwebt viel zu hoch" );
+  // Meldung, die kommt, wenn ein Spieler den Transporter verlassen
+  // will, aber dieser an keinem Raum angelegt hat.
+  // Ist der Parameter ein String (so wie hier), so bekommt nur
+  // der betreffende Spieler die Meldung, wenn sie ein Array aus
+  // 2 Elementen ist, bekommt der Spieler die erste und alle
+  // anderen Spieler im Transporter die zweite (mit dem Namen
+  // des Spielers davor).
+  // Moeglich waere also auch:
+  /*
+     SetProp( P_LEAVEFAIL, ({
+     "Die Wolke schwebt viel zu hoch zum Herunterspringen",
+     "faellt fast von der Wolke"
+     }) );
+  */
+
+  SetProp( P_ENTERFAIL, "Es passen nur 5 Passagiere auf die Wolke.\n" );
+  // Diese Meldung bekommt der Spieler, wenn er versucht, einen
+  // vollen Transporter zu betreten. Hier ist nur eine Meldung
+  // (an den Spieler) vorgesehen.
+
+  SetProp( P_MAX_PASSENGERS, 5 );
+  // Maximale Anzahl der Spieler, die sich im Transporter befinden
+  // koennen. Fuer Gegenstaende gibt es keine Beschraenkung.
+
+  /* Verben */
+  AddCmd( ({ "steig", "steige", "spring", "springe" }), "steige" );
+
+  /* Kurs */
+  AddRoute( "players/rumata/workroom", 30, 20, "Rumatas Arbeitszimmer" );
+  // Hier wird der Raum /players/rumata/workroom als Anlegeplatz
+  // in den Kurs eingefuegt. Der Transporter verweilt 30sek in diesem
+  // Raum und faeht dann 20sek lang, bis er den naechten Punkt
+  // erreicht. Danach kann man noch den Code angeben, der bei
+  // QueryArrived zurueckgegeben wird, setzen. Wird kein Code
+  // gesetzt, wo wird dort ein Leerstring zurueckgegeben. 0 wird
+  // dann zurueckgegeben, wenn der Transporter an keinem Raum angelegt
+  // hat.
+
+  AddMsg( "Die Wolke treibt nun im Wind Richtung Jofs Arbeitszimmer.\n", 30 );
+  // Hier wird eine Meldung ausgegeben, und der Transporter reist 30sek lang
+  // weiter.
+
+  AddMsg( "Die Wolke beginnt zu sinken.\n", 10 );
+  AddRoute( "players/jof/workroom", 30, 20, "Jofs Arbeitszimmer" );
+  AddMsg( "Die Wolke treibt nun im Wind Richtung Rumatas Arbietszimmer.\n", 30 );
+  AddMsg( "Die Wolke beginnt zu sinken.\n", 10 );
+  // Nach dem Letzten Haltepunkt wird der Kurs wieder von vorn
+  // befahren.
+ 	
+  Start();
+  // Lasse den Transporter am ersten dieser Haltepunkte starten.
+}
+
+steige(str)
+{
+  string arg, arg2;
+  
+  if (sscanf( str, "auf %s", arg ) > 0 && id(old_explode(arg," ")[0]))
+    return Enter();
+  // Wenn sicher ist, dass der Spieler die Wolke BEsteigen will,
+  // kann man mit return Enter() alle weiteren Tests durchfuehren.
+
+  if (sscanf( str, "von %s", arg ) > 0 && id(old_explode(arg, " ")[0]))
+    return Leave();
+  // Das selbe gilt fuer das ABsteigen und Leave().
+  // Verben sollten nach Enter() oder Leave() keine weiteren Befehle
+  // enthalten.
+}
+
+