Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
27.03.2002, 11:08
Gnomo



Hi!
Ich habe vor den player erst nach einigen Sekunden respawnen zu lassen. Nun habe ich bereits in der player.cpp und in der multiplay_gamerules.cpp nachgeschaut aber nichts gefunden. Gibt es überhaupt so eine Variable?
Ich hoffe ihr könnt mir helfen.

--

zum Seitenanfang zum Seitenende Profil || Suche
001
27.03.2002, 11:49
Rockefeller



Jein, wenn du dir mal das alte Verhalten von HL anschaust, wirst du merken, dass man zwar erst nach einer gewissen Verzögerung respawnen kann (ca. eine Sekunde würde ich mal schätzen), aber dass der Respawn nach Druck auf Fire ausgelöst wird.

Ich hab jetzt grade auch nichts gefunden, wo man die Verzögerung einstellen kann. Aber wenn du den Player automatisch respawnen lassen willst, kommt wohl noch ein bisschen Arbeit auf dich zu. Da sollte es aber auch Tuts zu geben.

--

zum Seitenanfang zum Seitenende Profil || Suche
002
27.03.2002, 12:38
RirA



Ist ganz leicht:
player.cpp, PlayerDeathThink:

/*if (!fAnyButtonDown && !( g_pGameRules->IsMultiplayer() && CVAR_GET_FLOAT("mp_forcerespawn") > 0 && (gpGlobals->time > (m_fDeadTime + 5))) )
return;*/

if(gpGlobals->time < (m_fDeadTime + 15)) //das hier ist entscheidend
return;

--

zum Seitenanfang zum Seitenende Profil || Suche
003
27.03.2002, 14:11
Gnomo



Ja hast Recht. Danke euch!!

--

zum Seitenanfang zum Seitenende Profil || Suche
004
30.03.2002, 13:10
Gnomo



Hi!
Eine Frage habe ich noch. Wie schreibe ich wenn der player tot ist ins hud so etwas wie:"Respawn in 15 sec." ?
THX Gnomo

--

zum Seitenanfang zum Seitenende Profil || Suche
005
30.03.2002, 13:24
RirA



FUCK!
ClientPrint(pev, HUD_PRINTCENTER, "Respawn in 15 sec.\n");

--

zum Seitenanfang zum Seitenende Profil || Suche
006
30.03.2002, 13:32
Mexil



*rofl* genau das alles hab ich vor ca. 1 Monat durchgemacht...

Wenn du was ins HUD selber schreiben willst, reicht ClientPrint nicht, dafuer muesstest du eine neue Message deklaerieren und Clientside halt ein neues Hud Element.

--


Move In!

VISIT US Move In!

zum Seitenanfang zum Seitenende Profil || Suche
007
30.03.2002, 19:49
R2-D2



doch das reicht

--

®2-D2
Believe in Retrieve :)

Projects:
Monkey-Strike (Leader/Coder)
Water Wars (Head Coder)
Mixed Mod (Coder)

zum Seitenanfang zum Seitenende Profil || Suche
008
30.03.2002, 20:41
Mexil



K, jetzt geht's um die Definition des Huds... fuer mich ist ein eine ClientPrintfausgaben noch nicht das Hud, aber muss jeder selber wissen...

--


Move In!

VISIT US Move In!

zum Seitenanfang zum Seitenende Profil || Suche
009
30.03.2002, 21:14
Rockefeller



Interessant wäre z.B. eine countdown, und dafür bracht man dann wirklich n Hud-Element.

--

zum Seitenanfang zum Seitenende Profil || Suche
010
31.03.2002, 10:36
RirA



Nein, braucht man nicht:

if(gpGlobals->time < (m_fDeadTime + 15))
{
if (gpGlobals->time == (m_fDeadTime + 3))
{
ClientPrint(pev, HUD_PRINTCENTER, "3...\n");
}
if (gpGlobals->time == (m_fDeadTime + 2))
{
ClientPrint(pev, HUD_PRINTCENTER, "2...\n");
}
if (gpGlobals->time == (m_fDeadTime + 1))
{
ClientPrint(pev, HUD_PRINTCENTER, "1...\n");
}
return;
}

--

zum Seitenanfang zum Seitenende Profil || Suche
011
31.03.2002, 12:46
TheTinySteini



Hm, so is schlecht. Denn die Chance, dass gpGlobals->time wirklich == (m_fDeadTime + 2) etc. ist, ist sehr gering. Also besser so:
Quellcode:if(gpGlobals->time < (m_fDeadTime + 15))
{
  if (gpGlobals->time <= (m_fDeadTime + 1)) {
    ClientPrint(pev, HUD_PRINTCENTER, "1...\n");
  } else if(gpGlobals->time <= (m_fDeadTime + 2)) {
    ClientPrint(pev, HUD_PRINTCENTER, "2...\n");
  } else if (gpGlobals->time <= (m_fDeadTime + 3)) {
    ClientPrint(pev, HUD_PRINTCENTER, "3...\n");
  }
  return;
}

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
012
31.03.2002, 12:50
RirA



Also Tiny, ausnahmsweise, liegst du falsch, denn gpGlobals->time == (m_fDeadTime + 2)) tritt zu 100% ein, denn die Zeit wird ja in diesem Fall immer abgefragt.

--

zum Seitenanfang zum Seitenende Profil || Suche
013
31.03.2002, 16:20
Prefect



Uh oh. Hast du schonmal überlegt, daß Framerates unterschiedlich sein können? Was ist z.B. bei einer Frametime von 0.09 Sekunden. 2 / 0.09 ergibt aber keine konstante Framezahl. D.h. nach 22 Frames ist die Zeit gleich m_fDeadTime + 1.98, nach 23 Frames ist die Zeit dann m_fDeadTime + 2.07.

Wer Floats mit == vergleicht hat meistens ein ernsthaftes Problem.

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
014
31.03.2002, 16:48
TheTinySteini



Eben. Die Framerates sind ja nicht die bloße Erfindung von 3D-Programmieren, sondern ergeben sich schlicht aus der Zeit, die ein kompletter Berechnungsdurchlauf benötigt, und zwar 3D-Grafik + alles andere drum rum (KI, aber eben auch Respawn-Code). Also kann man nicht davon ausgehen, dass die Funktion tatsächlich jede Millisekunde ausgeführt wird.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
015
31.03.2002, 19:26
RirA



Ihr mögt ja recht haben, aber probiert es aus, es geht - zumindest bei mir... :-)

--

zum Seitenanfang zum Seitenende Profil || Suche
016
02.04.2002, 00:14
TheTinySteini



Hm... vielleicht denkt da ja auch der Compiler sehr quer, nimmt das +1 als Addition mit nem Integer auf, macht damit m_fDeadtime auch zu nem Int und vergleicht dann mit nem zum Int gecasteten time. Würde net viel Sinn machen und wäre reine Willkür, aber könnte ja sein.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
017
02.04.2002, 00:28
Killing Me Softly



was haltet ihr davon?
Quellcode:
char msg[128]; //ja, ist viel zu viel ;)
sprintf(msg,"%d...\n",(int)(gpGlobals->time-m_fDeadTime));
ClientPrint(pev, HUD_PRINTCENTER, msg);  

--

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

zum Seitenanfang zum Seitenende Profil || Suche
018
02.04.2002, 00:37
RirA



auch gut :-)

--

zum Seitenanfang zum Seitenende Profil || Suche
019
02.04.2002, 02:47
Rockefeller



Das könnte tatsächlich sein, weil (m_fDeadTime + 1) wird ziemlich sicher auf nen Integer gecastet, obwohl... hmm bin doch etwas unsicher...
Also (m_fDeadTime + 1.0) wär klar ein Float.

Aber wenn (m_fDeadTime + 1) zu Integer gecastet würde, dann würde sicherlich auch das gesamte (gpGlobals->time <= (m_fDeadTime + 1)) auf Integer gecastet.

Und RirAs Aussage bestätigt das. Und Zufall kann das nicht sein, denn die Wahrscheinlichkeit, dass zwei frag-mich-nich-wieviel-byteige Fließkomma-Variablen tatsächlich gleich sind, ist doch sehr unwahrscheinlich, alleine, wenn man sich mal die verdammt krummen Frame-Times anguckt.

--

zum Seitenanfang zum Seitenende Profil || Suche