handle (void* object);
Liefert ein Handle eines Engine-Objekts
zurück.
Ein Handle ist eine eindeutige Objektnummer, die jedweder var oder jedem Skill zugewiesen werden kann und das betreffende Objekt identifiziert.
Parameter:
object - ENTITY*, ACTION*, STRING*, BMAP*, VIEW*, PANEL*, TEXT*, FONT*, SOUND*,
oder MATERIAL* Pointer.
Rückgabewert
Handle des Objekts.
Geschwindigkeit
Schnell
Bemerkungen
- Anders als ein Pointer überlebt ein Handle auf ein Engine-Objekt das Laden/Speichern und enthält bei jedem Laufen-Lassen der Anwendung denselben Wert.
- Um ein Handle zu einem lite-C-Struct, das kein Engine-Objekt ist, zu bekommen, verwenden Sie den pVars-Pointer.
- Auch
nach dem Speichern und Laden eines Spieles ist garantiert,
dass ein Handle, das mithilfe dieser Anweisung
generiert wurde, immer auf dasselbe Objekt verweist - bei Pointern
ist dies nicht garantiert.
- In Single-Player-Systemen ist das Handle
einer Entity direkt nach dem Erstellen gültig
(► ent_create). In Multiplayer-Systemen
dagegen kann es bis zu 0.5 Sekunden dauern, bis die Entity
auf allen angeschlossenen PCs erzeugt wurde und das Handle
gültig wird. Bis das Handle gültig wird, kann die Variable client_id abgefragt werden: while (client_id != dplay_id) wait(1);. Bevor es gültig wird, kann das Entity-Handle nicht benutzt werden.
- Das Handle wird in den ersten 4 Bytes eines Engine-Objektes gespeichert. Es besteht aus einer eindeutigen Indexnummer plus einer um 24 Bit nach links verschobenen Objekt-Identifiktionsnummer
aus der folgenden Tabelle.
Das Handle läßt sich zur Identifikation des Typs eines Objekts benutzen. Um das Handle in eine var, die die Indexnummer enthält, umzuwandeln,
verschieben
Sie es um 24 Bit nach rechts und das Ergebnis verschieben Sie dann
um 10 Bit nach links.
INVALID |
-1 |
ENTITY |
4 (global) |
ENTITY |
5 (local) |
ENTITY |
8 (layer) |
STRING |
10 |
FONT |
11 |
BMAP |
12 |
MATERIAL |
13 |
SOUND |
14 |
STREAM |
15 |
TEXT |
20 |
PANEL |
21 |
VIEW |
22 |
Beispiel:
if(entity)
{
my.skill48 = handle(entity); // store entity pointer
}
you = ptr_for_handle(my.skill48); // restore YOU;
Siehe auch:
ptr_for_handle,pVars
► Aktuelle Version Online