Mit einer for-Schleife for(new i=0; i<MAX_PLAYERS; i++) liest man ja dann alle verfügbaren Slots aus, 500. Gibt es nicht noch eine ressourcensparendere Methode, wie zB alle abzufragen die on sind?
Ressourcensparende Schleifen
- Uppermost
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
GetMaxPlayers meine ich
-
GetMaxPlayers meine ich
Liest die Zahl aus, die in der cfg steht.
Ist schon um einiges besser (wenn es kein 500 Slots Server ist) als MAX_PLAYERS -
Aja, danke genau das hab ich gesucht
Aber das liest ja die max. Slots aus, kann man auch alle Spieler die online sind abfragen, und nicht alle Slots? -
if(IsPlayerConnected(i))
MFG,
Scriptor! -
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
//Weitere Aktionen
}Würde mir spontan einfallen.
Siehe: http://wiki.sa-mp.com/wiki/Control_Structures#continue
//E: MAX_PLAYERS sollte in dem Fall auch auf die maximale Slot-Anzahl angepasst werden.Grüße
-
Liest die Zahl aus, die in der cfg steht.
Ist schon um einiges besser (wenn es kein 500 Slots Server ist) als MAX_PLAYERSGetMaxPlayers ist TÖDLICH!
Eine zusätzliche Abfrage, welche auch jedes mal ausgeführt wird.Ganz einfach: sa-mp.inc mit Notepad++ öffnen und "#define MAX_PLAYERS 500" ändern. z.B. in 50
Konstanten sind um ein Vielfaches schneller als eine Nichtkonstante Variable....
Achso ja, und dann natürlich noch mit IsPlayerConnected arbeiten -
Gut danke, kann geclosed werden.
@UltimateKeks : Nice Idee, werd ich probieren. -
GetMaxPlayers ist TÖDLICH!
Das stimmt nun auch nicht.
Man kann natürlich #undef und #define nutzen um MAX_PLAYERS zu ändern.einfacher wäre
for(new i,j=GetMaxPlayers();i!=j;i++)
{
// dein Code
}oder wie UltimateKeks schon sagte, nur in andere Form
oben
#undef MAX_PLAYERS
#define MAX_PLAYERS Deine Slotsund dann kannst du die schleife wie gewohnt nutzen
-
Das Ressourcenshonendste ist eigentlich:
new m = GetMaxPlayer();
new i = 0;
for(; i < m; i++)
und dann noch IsPlayerConnected abfragen. -
-
Das Ressourcenshonendste ist eigentlich:
new m = GetMaxPlayer();
new i = 0;
for(; i < m; i++)
und dann noch IsPlayerConnected abfragen.Hat BlackAce doch auch getan, nur platzsparender...
-
Es gibt einen unterschied zwischen:
for(new i = 0; i < ...
und
new i = 0;
und for(; i < ... -
Es gibt einen unterschied zwischen:
for(new i = 0; i < ...
und
new i = 0;
und for(; i < ...
Schon, aber es ist irgendwie Schwachsinn, das außerhalb der Schleife zu deklarieren.
Besonders, weil man sie sehr sehr oft danach nicht braucht. -
breadfish.de
Hat das Thema geschlossen.