Dokumentation zu: SetDoorStatus(L)

HR Image


FUNKTION:
	public int SetDoorStatus(string cmd, int state)

DEFINIERT IN:
	/std/room/doors.c
	/sys/doors.h

ARGUMENTE:
	cmd:	Kommando fuer das Durchschreiten der Tuer
	state:	Status-Flag(s), das/die gesetzt werden soll(en)

RÜCKGABEWERT:
	0 (fehlerhafte argumente) oder 1 (ok, status geaendert)

BESCHREIBUNG:
	Damit kann auch nachtraeglich der Status fuer eine Tuer 
	gesetzt bzw. veraendert werden.
	
	Moegliche Flags sind:
	- DS_OPEN        1
	- DS_LOCKED      2	
	- DS_BROKEN      4
	- DS_DESTRUCTED  8

	Achtung, nicht alle Wert-Zusammenstellungen sind sinnvoll :-)

BEISPIEL:
	Um den Status einer Tuer nach Sueden auf 'geknackt' (DS_BROKEN) zu
	setzen, muss man das Flag mit dem bisherigen Status binaer
	verknuepfen:

	// alten Status ermitteln
	int tuerstatus = raum->QueryDoorStatus("sueden");
	
	// binaeres OR des alten status mit DS_BROKEN
	tuerstatus |= DS_BROKEN;

	// neuen Status setzen
	raum->SetDoorStatus("sueden", tuerstatus);

BEACHTE:
	Auf der sicheren Seite ist man immer, wenn man OpenDoor(L),
	CloseDoor(L), LockDoor(L), UnlockDoor(L) oder direkt die Events
	(ET_DOOR_OPEN, ET_DOOR_CLOSE, ET_DOOR_LOCK und ET_DOOR_UNLOCK)
	verwendet, um den Tuer-Status zu veraendern. Dabei gibt man auch
	anderen die Chance, darauf zu reagieren.

	Bei Verwendung von SetDoorStatus: Immer den alten Status mit ver-
	wenden beim Setzen eines neuen Status (wie im Beispiel), sonst kann
	es sein, dass eine vorher offene Tuer hinterher ploetzlich
	geschlossen ist.

	Beim direkten Setzen bestimmter Flags (also ohne Events), sollte man
	das im 'anderen Raum' zu dem die Tuer fuehrt, auch setzen. Bei
	DS_OPEN ist es zum Beispiel wenig sinnvoll, wenn sie auf der einen
	Seite offen und auf der anderen Seite geschlossen ist.

SIEHE AUCH:
	AddDoor(L), OpenDoor(L), CloseDoor(L), LockDoor(L), UnlockDoor(L),
	QueryPathDoor(L), QueryDoorLong(L), QueryAllDoorLong(L), 
	SetDoorStatus(L), QueryDoorFlags(L), SetDoorFlags(L), QueryDoorProp(L),
	SetDoorProp(L), SetDoorEventMsgs(L), QueryDoorEventMsgs(L), 
	QueryDoorName(L), doors


Start » Magierhandbuch » Docu » Lfun » SetDoorStatus Letzte Generierung: 25.04.2021, 01:58
Email an: mud@wl.mud.de
Valid HTML 4.01!