Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
18.06.2000, 12:13
PsyDAD



Ich hab eine Funktion geschrieben um den Spieler automatisch einem Team zuzuordnen.
Der Spieler kommt entweder zu dem Team mit weniger Spielern oder wenn beide Teams gleich viele Spieler haben, zu einem zufälligen Team.
Es wird fehlerfrei kompiliert, aber sobald die Funktion im Spiel aufgerufen wird stürzt es ohne irgendwelche Fehlermeldungen ab.

Kann mir jemand sagen wo hier der Fehler ist ?

-----------------------
int AutoTeam()
{
int iPlayersTeam1 = 0;
int iPlayersTeam2 = 0;
int iPlayerTeam;
for (int i = 1; i <= gpGlobals->maxClients; i++)
{
CBasePlayer *pPlayer = (CBasePlayer *)UTIL_PlayerByIndex (i);
if (pPlayer->m_iPlayerTeam == 1)
iPlayersTeam1++;
else if (pPlayer->m_iPlayerTeam == 2)
iPlayersTeam2++;
}

if (iPlayersTeam1 > iPlayersTeam2)
iPlayerTeam = 2;
else if (iPlayersTeam2 > iPlayersTeam1)
iPlayerTeam = 1;
else if (iPlayersTeam1 == iPlayersTeam2)
{
switch ( RANDOM_LONG( 0, 1 ) )
{
case 0:
iPlayerTeam = 1;
break;
case 1:
iPlayerTeam = 2;
break;
}
}

return iPlayerTeam;
}
-----------------------

Ich hoffe ihr könnt mir helfen...

PsyDAD

PS: Wieso tut das mit [ c o d e ] / [ / c o d e ] hier nicht ?

--

zum Seitenanfang zum Seitenende Profil || Suche
001
18.06.2000, 13:06
Tomz



es sollte eigentlich mit [ pre ] gehen. Ich mach mal nen versuch:
<pre>
10 cls
20 print "Hello World"
30 input
40 end
</pre>
Ist mir halt nichts besseres eingefallen.

--

...denn das atombrot wird nicht ruhen bis es den letzten erwischt hat...

zum Seitenanfang zum Seitenende Profil || Suche
002
18.06.2000, 14:54




Es liegt an Deiner for-Schleife. Versuch mal dass:

for (int i = 1; i <= gpGlobals->maxClients; i++)
{
CBasePlayer *pPlayer = (CBasePlayer *)UTIL_PlayerByIndex (i);

if (pPlayer)
{ if (pPlayer->m_iPlayerTeam == 1)
iPlayersTeam1++;
else if (pPlayer->m_iPlayerTeam == 2)
iPlayersTeam2++;
}
}

--

zum Seitenanfang zum Seitenende Profil || Suche
003
18.06.2000, 16:27
PsyDAD



ah, jetzt seh ich den Fehler auch...
Danke für deine Hilfe Codeman.

Ich hab einfach einfach folgendes oben bei der for Schleife eingefügt:

if (!pPlayer)
continue;

Kommt auf das Gleiche wie dein Vorschlag...

PsyDAD

--

zum Seitenanfang zum Seitenende Profil || Suche
004
18.06.2000, 23:18
Prefect



Es gibt immer eine einfachere Lösung :)

ChangePlayerTeam(plr, TeamWithFewestPlayers(), TRUE, FALSE);

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