In diesem Thread möchte ich typische Probleme bei logischen Vergleichen aufzeigen die manchmal passieren.
Nehmen wir an wir möchten alle Bots slayen, schauen wir uns mal diesen Code an.
|
PHP-Quelltext
|
1
2
3
4
5
6
7
|
for(new i=1; i <= MaxClients; i++)
{
if(IsClientInGame(i) && GetClientTeam(i) > 1 && IsPlayerAlive(i) && IsFakeClient(i))
{
// slay
}
}
|
Hier werden folgende Aufrufe gemacht
- Ist spieler inGame?
- Ist Spieler in einem Team das nicht Spectator ist
- Ist der Spieler am Leben?
- Ist der Spieler ein Bot?
Da wir uns hier auf Bots konzentrieren sollte man prüfen ob der Spieler ein Bot ist bevor man die anderen Checks macht.
Wenn der Spieler nämlich kein Bot ist interessiert uns auch sein Team oder sein Leben nicht.
So würde das Script richtig aussehen.
|
PHP-Quelltext
|
1
2
3
4
5
6
7
|
for(new i=1; i <= MaxClients; i++)
{
if(IsClientInGame(i) && IsFakeClient(i) && IsPlayerAlive(i))
{
// slay
}
}
|
Hier werden auf normale Spieler nur noch folgende Aufrufe gemacht
- Ist spieler inGame?
- Ist der Spieler ein Bot?
Den Teamcheck kann man hier im Normalfall auch weg lassen, da Bots (Außer SourceTv) nicht in den Spectatormode wechseln.
MfG
Impact