RemoveFixedObject()
===================

FUNKTION
--------
::

	void RemoveFixedObject(string filename);

DEFINIERT IN
------------
::

	/std/laden.c

ARGUMENTE
---------
::

	str
	  Dateiname des Objektes, welches nicht mehr dauerhaft im Laden sein
	  soll.

RUeCKGABEWERT
-------------
::

        keiner

BESCHREIBUNG
------------
::

	Objekte, die mittels der Funktion AddFixedObject() im Laden
	eingebunden werden, sind dort staendig verfuegbar. Um diesen Zustand
	wieder aufzuheben, kann man sie mittels dieser Funktion wieder
	entfernen. Eventuell im Lager befindliche Objekte dieser Art werden
	hierbei nicht zerstoert und koennen durchaus noch gekauft werden,
	bis sie alle sind. Danach gibt es sie dort nicht mehr!

BEISPIELE
---------
::

	Im allen Laeden gibt es schon ein Objekt, welches dort
	standardmaessig erhaeltlich ist. Folgende Zeile sorgt dafuer:
	  AddFixedObject("/obj/boerse",80,({"boerse","geldboerse"}));
	Wenn man das in seinem Laden nicht wuenscht, kann man die Geldboerse
	mittels folgender Zeile wieder aus dem Laden loeschen:
	  RemoveFixedObject("/obj/boerse");
	Es ist nicht moeglich, keine oder mehrere Objekte anzugeben, um auf
	diese Weise alle bzw. mehrere Objekte als nicht mehr staendig
	verfuegbar zu markieren.

SIEHE AUCH
----------
::

	AddFixedObject(), SetStorageRoom(), /std/store.c


Last modified: Thu Jun 18 14:19:19 1998 by Patryn

