Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
18.03.2004, 16:01
Barney_Roxx



ich habe da eine erweiterte cheat funktion.
das ganze aktiviere ich (admin) über die konsole mit einem command. wenn ich das commmand eingebe wird eine funktion aufgerufen die eine variable auf true/false setzt. mein problem ist aber, das jeder spieler das selber machen muss, damit es klappt. das will ich aber nicht. es soll für jeden spieler dann gleich sein, sobald ich dieses command ausführe.
also:

ich habe in der player.h in der CBasePlayer klasse eine variable vom type bool definiert. dann habe ich hald bei clientcommand eine else/if anweisung die dann die member funktion CBasePlayer :: Cheating() aufruft wo dann die variable auf true oder false gesetzt wird.

wenn ich dann das command eingebe ist der cheat nur für mich verfügbar aber nicht für die spieler. mir ist eigentlich klar warum, da es ja in der clientcommand funktion ist, und somit ist es ja logisch das jeder, der das command eingibt, dieses cheat feature dann hat weil er die variable auf true oder false setzt.

ich möchte es ja aber so, das nur ich dieses command schreiben muss, damit alle dann davon profitieren oder nicht. wie muss ich das machen damit für alle spieler nach eingabe des commands, die variable dann auf true oder false ist?

die abfrage der bool variable, ob sie true oder false ist, geschieht in der player spawn funktion.

--

zum Seitenanfang zum Seitenende Profil || Suche
001
18.03.2004, 16:21
[RMen]OneStone



Quellcode:for(int i = 1; i <= gpGlobals->maxPlayers; ++i)
  ((CBasePlayer *) CBaseEntity::Instance(GET_ENTITY_BY_INDEX(i)))->Cheating();
Einzelne Namen können abweichen, habe gerade kein SDK an der Hand.

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
002
18.03.2004, 16:27
Killing Me Softly



Die Frage ist, ob CBasePlayer wirklich der allerbeste Platz dafür ist, diese Cheat-Variable zu beherbergen. Mir würde spontan ein halbes duzent Klassen einfallen, die besser geeignet wären (CGameRules steht dabei an oberster Stelle).

Damit du deinen Code jetzt nicht umschreiben musst könntest du die Variable static deklarieren ( static bool m_fMyCheat; ) was zur Folge hätte, das der Wert von m_fMyCheat bei allen Playern identisch ist (auch wenn sie erst später dem Spiel beitreten, was bei Einsteins Lösung nicht gegeben wäre).

--

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

zum Seitenanfang zum Seitenende Profil || Suche
003
18.03.2004, 17:02
Barney_Roxx



das mit static ist glaub die lösung, konnte es noch nicht testen...
was ich aber nicht ganz verstehe:

wieso muss bzw. kann die variable von jedem spieler initialisiert werden? ich dachte drum das wenn die variable mal auf true oder false gesetzt ist, so ist sie das dann auch. ich meine die ist ja nicht mehrmals vorhanden so das sie jedesmal wieder initialisiert werden muss/kann. versteht ihr was ich meine? ist das klassen-style? mit den features der klassen kenne ich mich eben noch nicht so gut aus.

--

zum Seitenanfang zum Seitenende Profil || Suche
004
18.03.2004, 17:24
Killing Me Softly



Zitat:
Barney_Roxx postete
wieso muss bzw. kann die variable von jedem spieler initialisiert werden? ich dachte drum das wenn die variable mal auf true oder false gesetzt ist, so ist sie das dann auch. ich meine die ist ja nicht mehrmals vorhanden...
Doch, sie ist sogesehen mehrmals vorhanden. Für jeden Spieler gibt es eine eigene Instanz von CBasePlayer. Bei 8 Spielern macht das 8 Objekte (oder Instanzen) vom Typ CBasePlayer. Jeder Spieler hat ne Waffe in der Hand, aber nicht jeder Spieler die gleiche und du würdest dich auch etwas wundern, wenn dein Health-Wert runtergeht, nur weil drei Killometer weiter weg ein anderer Spieler angeschossen wird (ok, der Health-Wert steht nicht direkt in CBasePlayer aber das Beispiel ist so schön anschaulich).

--

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

zum Seitenanfang zum Seitenende Profil || Suche