Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
11.01.2002, 23:51
Nicemice
Moderator


Um Teilmengen von Spielern zu erstellen, speichere ich die Pointer auf die einzelnen CBasePLayer in einer Liste. Der Code funktioniert auch wunderbar solange kein weiterer Spieler das Spiel betritt, doch falls einer das Spiel betritt, ergeben sich Ungereihmtheiten mit den Spielern ich schon in die Liste aufgenommen habe.
Wie ist das mit den Pointern auf CBasePlayer Objekte ? Kann es sein, das wenn ein Spieler das Spiel betritt, und ich vorher auf einen bereits gejointe Spieler 'zeige' nun auf den neuen Spieler 'zeige'. Ist das vielleicht eine Liste, wo alle Elemente nach hinten verschoben werden, wenn ein Element hinzugefügt wird ?

Wenn ja, was soll ich dann anstatt dessen in der Liste speichern ? Den Entity Index ? Was ist für jedes Entity eintdeutig ?

--

www.d3opencoop.com - A Doom3 Cooperative Mod

zum Seitenanfang zum Seitenende Profil || Suche
001
12.01.2002, 10:20
thinktank



Also ich würde end ENTINDEX nehmen, soweit ich weiß sind die Player praktischerweise sind die Indixes 1-32 die Player, somt kannste eine Schleife wie die hier ausm Hl-Code bauen :

for ( i = 1; i <= gpGlobals->maxClients; i++ )
{
CBaseEntity *pPlayer = UTIL_PlayerByIndex( i );
if ( pPlayer)
UTIL_ShowMessage( pString, pPlayer );
}

--

zum Seitenanfang zum Seitenende Profil || Suche
002
12.01.2002, 12:45
Nicemice
Moderator


Also ändert sich der Entityindex während eines Spiels nicht ?
Ist jedem Entity genau ein Index zugeordnet ?

--

www.d3opencoop.com - A Doom3 Cooperative Mod

zum Seitenanfang zum Seitenende Profil || Suche
003
12.01.2002, 13:36
Prefect



Ja natürlich - alle Entities befinden sich in einem großen Array und werden nicht hin- und hergeschoben. Noch besser als ein entindex ist allerdings ein EHANDLE: Das ist eine Klasse, die praktisch einen (CBaseEntity *) enthält, sich aber automatisch auf 0 zurücksetzt, wenn die angezeigte Entity verschwindet. Wenn du nämlich nur den entindex speichern würdest könnte es sein, daß der betroffene Spieler das Spiel verläßt und direkt darauf ein neuer das Spiel betritt - mit dem gleichen entindex. Beim EHANDLE hast du dieses Problem nicht.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
004
12.01.2002, 13:44
Killing Me Softly



Der Entityindex ist für jedes Entity während seiner Lebensdauer eindeutig und ändert sich nicht. Jedes Entity hat seinen eigenen Index und damit läßt sich jedes Entity anhand des Index eindeutig identifizieren.

Und jetzt kommt ne klitzekleine Einschränkung: Wird ein Entity zerstört (Spieler verläßt das Game) so wird der Index frei und kann dann für ein anderes (neues) Entity benutzt werden (neuer Spieler betritt das Game).

Zitat:
Nicemice postete
...Kann es sein, das wenn ein Spieler das Spiel betritt, und ich vorher auf einen bereits gejointe Spieler 'zeige' nun auf den neuen Spieler 'zeige'. Ist das vielleicht eine Liste, wo alle Elemente nach hinten verschoben werden, wenn ein Element hinzugefügt wird ?...

Nein - nein - nein (nur um deine ursprünglichen Fragen zu beantworten). Ein Zeiger auf ein Objekt zeigt nicht plötzlich irgendwo anders hin, nur weil ein neues Objekt erzeugt wurde. Da wird auch nichts verschoben oder verrückt. Muss also an was anderem liegen.

[Edit] Prefect war mal wieder schneller...

--

Der Horizont vieler Menschen ist ein Kreis mit Radius Null - und das nennen sie ihren Standpunkt.


Dieser Beitrag wurde am 12.01.2002 um 13:46 von Killing Me Softly bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
12.01.2002, 14:27
Nicemice
Moderator


so, ich habs nochmal getestet. Sobald ein neuer Spieler das Spiel betritt, ist der Zeiger auf einen Spieler(der vorher schon auf dem Server war) eine Anderer als vorher.

Prefekt, gibts irgendwo ein Tutorial zu EHANDLES, das sagt mir nämlich gar nix.

--

www.d3opencoop.com - A Doom3 Cooperative Mod

zum Seitenanfang zum Seitenende Profil || Suche