Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
20.03.2004, 22:47
-[Phoenix]-



Moinsen!

Wie bekomme ich das hin, dass der Player, nachdem er gestorben ist, seine Waffen wiederbekommt, aber genau dieselben, die er kurz vor dem Ableben noch hatte?

An sonsten hätte ich ja schließlich beim Spawn Waffen einstellen können und das brauch ich nicht.

Weiß jemand Rat?

--

zum Seitenanfang zum Seitenende Profil || Suche
001
20.03.2004, 23:08
Onkel Dittmeyer



Speicher halt den Waffennamen in der CBasePlayer in nem String und Spawn sie vor ihm in der Spawn()

--

zum Seitenanfang zum Seitenende Profil || Suche
002
20.03.2004, 23:50
-[Phoenix]-



Könntest du das noch ein wenig weiter ausführen?

--

zum Seitenanfang zum Seitenende Profil || Suche
003
21.03.2004, 10:05
Onkel Dittmeyer



Gut gut, also du hast deine CBasePlayer Klasse in der baseplayer.h oso deklariert. Da gehst du hin und fügst ihr nen Array aus Chars (= String) zu welches später den Waffennamen enthält, in etwa so:
Quellcode:class CBasePlayer : public CBaseEntity
{
    //...
    char LastItemName[256];
    //...
}
Jetzt musst du den Waffennamen natürlich noch drin speichern beim Ableben des Spielers, und das machen wir - tatatataaaa - in der CBasePlayer::Killed()
oder alternativ in der CGameRules::PlayerKilled():
Quellcode:void CBasePlayer::Killed()
{
   //...
   if (m_pActiveItem)
   {
       ItemInfo LastItem;
       m_pActiveItem->GetItemInfo(&LastItem);
       strcpy(LastItemName, LastItem->pszName);
       m_pActiveItem->Holster();
   }
   //...
}
Und nun können wir die Waffe beim Respawn dem Player ebenso respawnen:
Quellcode:void CBasePlayer::Spawn()
{
   //...
   if (!FStrEq(LastItemName, ""))
      GiveNamedItem(LastItemName);
   //...
}
Ich hoffe du lernst was draus und kopierst das nicht einfach so...

--


Dieser Beitrag wurde am 21.03.2004 um 10:06 von Onkel Dittmeyer bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
004
21.03.2004, 12:14
-[Phoenix]-



Ok, ist echt stark von dir, aber:

1. "class CBasePlayer : public CBaseEntity" gibts net, damit kann ich ja leben,
dann halt in die "class CBasePlayer : public CBaseMonster" das einzig
brauchbare was ich finden konnte. ( Bin mal davon ausgegangen, dass der
Kram in die player.h rein muss. )

2. Außerdem gibts da noch'n Fehler:
error C2819: Der Typ 'ItemInfo' hat keinen
ueberladenen Elementoperator '->'
Dadurch entstehen ntürlich wieder ein paar Folgefehler.

Ich will deine Nerven echt nicht überstrapazieren und jetzt schon froh, dass du mir hilfst.

--

zum Seitenanfang zum Seitenende Profil || Suche
005
21.03.2004, 13:35
Onkel Dittmeyer



-> in .
Ich sollte nicht so viel mit PHP machen... =)

--

zum Seitenanfang zum Seitenende Profil || Suche
006
21.03.2004, 15:05
-[Phoenix]-



Dafür hab ich Verständnis, bring auch öfter was durcheinander.

Danke funzt alles wunderbar.

Nur so ne Frage am Rande, ist es auch möglich alle anderen Waffen, die nicht angewählt waren sondern nur im "Inventar" gewesen sind auch wiederzubekommen?

--

zum Seitenanfang zum Seitenende Profil || Suche
007
21.03.2004, 15:12
Exec



ja, das ist möglich
vorher sollte man aber überhaupt mal verstehen, was man eigendlich macht - in deinem falle ist es also unmöglich, ich glaube du hast ja nicht einmal so richtig verstanden, was du da oben eigendlich gemacht hast

--

"selbermachen rockt am meisten :D" - -LeJean-

zum Seitenanfang zum Seitenende Profil || Suche
008
21.03.2004, 17:05
Killing Me Softly



Zitat:
-[Phoenix]- postete
Nur so ne Frage am Rande, ist es auch möglich alle anderen Waffen, die nicht angewählt waren sondern nur im "Inventar" gewesen sind auch wiederzubekommen?
Dazu sollte es eigentlich reichen, dem Spieler die Waffen gar nicht erst wegzunehmen.
In CBasePlayer::PlayerDeathThink() wird u.a. PackDeadPlayerItems() aufgerufen. Diese Funktion packt die Waffen in eine WeaponBox (die andere Spieler danach aufsammeln können) und ruft ihrerseits RemoveAllItems() auf (was diese Funktion tut, sollte klar sein *g*).

Ergo: einfach PackDeadPlayerItems() in CBasePlayer::PlayerDeathThink() auskommentieren und schauen, was passiert.

--

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

zum Seitenanfang zum Seitenende Profil || Suche
009
21.03.2004, 17:22
Onkel Dittmeyer



Wird so nicht gehen weil in PlayerDeathThink auch der Code drin steht der den Player wieder spawnt =)

--

zum Seitenanfang zum Seitenende Profil || Suche
010
21.03.2004, 18:08
Killing Me Softly



Er soll ja auch nur PackDeadPlayerItems() in PlayerDeathThink() auskommentieren und nicht die komplette PlayerDeathThink() *g*

--

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

zum Seitenanfang zum Seitenende Profil || Suche
011
21.03.2004, 22:52
-[Phoenix]-



@ Exec

Dein Vertrauen in meine Coding Künste ist echt beeindruckend. Ich hab mich schließlich schon mit zich anderen Problemen herumgeschlagen und sie erfolgreich beseitigt. Ich geh eigentlich nur ins Forum, wenn ich absolut nicht mehr weiter weiß.

@ Onkel Dittmeyer / Killing Me Softly

So etwas ähnliches hab ich schon versucht, hat leider nicht geklappt, nun hab ich aber einen neuen Denkansatz und probier mal ne Rund rum.

--

zum Seitenanfang zum Seitenende Profil || Suche
012
21.03.2004, 23:57
-[Phoenix]-



Ist tatsächlich nur PackDeadPlayerItems() nur hat die Angelegenheit noch nen kleinen Bug, man bekommt zwar alle Waffen, aber nicht alle sind auswählbar. So etwas wie z.B. die "Hornet Gun" oder die Granaten, der Raketenwerfer usw. verursachen da ein paar Probs. Mal sehen was man da noch so machen kann

--

zum Seitenanfang zum Seitenende Profil || Suche
013
22.03.2004, 14:49
[RMen]OneStone



Wenn du tatsächlich nur mit unlösbaren Fragen ins Forum kommst, dann solltest du dir überlegen, ob du wirklich zum Coden am SDK geeignet bist, wenn du bereits für so eine Simple Frage hier posten musst.

--

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

zum Seitenanfang zum Seitenende Profil || Suche
014
22.03.2004, 18:56
-[Phoenix]-



Dieses Forum kann man nur lieben, auf der einen Seite wird man zur S** gemacht und auf der anderen wird einem tatsächlich geholfen mit qualitativ hochwertigen Antworten.

--

zum Seitenanfang zum Seitenende Profil || Suche
015
22.03.2004, 21:30
[RMen]OneStone



Wie schön, dass so viele Menschen Kritik so gut verkraften!

--

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

zum Seitenanfang zum Seitenende Profil || Suche
016
23.03.2004, 16:25
-[Phoenix]-



Wer mit Kritik nicht umgehen kann, wird in dieser Welt wohl nicht weiterkommen. ;)

--

zum Seitenanfang zum Seitenende Profil || Suche