Hallo da ich zu blöd bin eine for schleife zu machen wie geht das genau?
for(new i; sizeof i,MAX_PLAYERS >i)
Hallo da ich zu blöd bin eine for schleife zu machen wie geht das genau?
for(new i; sizeof i,MAX_PLAYERS >i)
for(new i; i != MAX_PLAYERS; i++)
Alternativ geht auch < statt !=
Was bezweckt deine dargestellt Schleife zu dieser ?
for(new i = 0;i < MAX_PLAYERS;i++)
Aber die findet man überall alleine schon wenn man for schleife bei google eingibt..
Dafür ist auch der kleine Scriptingfragen Thread geeignet
for(neue Variable; Bedingung; Zähler)
Würde das nun jetzt gehen?stock SendAdminMSG(rang,const string[],color)
{
for(new i; i != MAX_PLAYERS; i++)
{
SendClientMessage(i,color,const string);
}
return 1;
}
@BlackAce
Da Pro
Vor dem SendClientMessage fehlt halt noch: if(rang == PlayerInfo[i][pRang])
Eben mit deinen Variablen Namen.
Sonst sehen alle die message.
Kann mich dennoch mal wer aufklären wo der unterschied im Sinn liegt sprich ausführlich erklärt? Danke
for(new i; i != MAX_PLAYERS; i++)
for(new i=0;i < MAX_PLAYERS;i++)
for(new i; i != MAX_PLAYERS; i++)
wenn man man eine variable neu deklariert, steht sie immer auf NULL.
Deswegen braucht man da nicht immer new i = 0
schreiben.
ansonsten gibt es da keinen anderen Unterschied
wenn man man eine variable neu deklariert, steht sie immer auf NULL.
Deswegen braucht man da nicht immer new i = 0
schreiben.
ansonsten gibt es da keinen anderen Unterschied
Sag bloß..Das ist mir schon bewusst.. Aber warum ist bitte "!=(Ungleich)" ein Ersatz für "größer als"?
Heißt das etwa solange die vari == 0-500 ist = ++?
naja... != ist ja nicht größer gleich
Kann mich dennoch mal wer aufklären wo der unterschied im Sinn liegt sprich ausführlich erklärt? Danke
for(new i; i != MAX_PLAYERS; i++)
for(new i=0;i < MAX_PLAYERS;i++)
Aber warum ist bitte "!=(Ungleich)" ein Ersatz für "größer als"?
habe ich übersehen. Aber diese Funktion ht für mich eigentlich keinen Sinn...... :-D.
In DIESEM Fall ist es das durchaus.
Pro "Runde", also pro "Durchlauf" der Schleife wird die Variable (hier: i) um 1 erhöht und es ERFÜLLT somit die Bedingung dass i _nicht_ 500 (also MAX_PLAYERS, je nachdem, wie hoch) ist. Gleiches ist ja nun bei "größer als". Wenn die Schleife bei der 2. Runde ist, dann ist sie nicht in der 500. Runde, sprich 2 ist kleiner 500: Bedingung erfüllt, weiter gehts.
Man sollte aber beachten (soweit ich jetzt klar denke), dass man statt "<" lieber (zumindest in diesem Fall) auf "<=" zurückgreifen sollte. Denn so wird der 500. Spieler auch noch einbezogen, bei "<" ginge es "nur" bis 499.
Aber warum ist bitte "!=(Ungleich)" ein Ersatz für "größer als"?
Heißt das etwa solange die vari == 0-500 ist = ++?
Ungleich hat den Vorteil, das nicht noch geprüft werden muss in welche Richtung, die Bedinung evtl nicht stimmt.
Das sind zwar vielleicht nur ein oder zwei millisekunden, aber ich optimiere meine Sachen gerne,
deswegen hab ich das mal so benutzt
TutNichts:
Warum sollte man auf 501 Durchläufe haben, wenn man nur 500 braucht?
0 - 499 = 500
0 - 500 = 501
Also in so einer Schelife ist <= nicht sinnvoll.
Kann zum Array out of Bounds führen, was Programme, absolut nicht mögen
Ungleich hat den Vorteil, das nicht noch geprüft werden muss in welche Richtung, die Bedinung evtl nicht stimmt.
Das sind zwar vielleicht nur ein oder zwei millisekunden, aber ich optimiere meine Sachen gerne,
deswegen hab ich das mal so benutzt
Tatsache? Wow, ok, danke für die Information! :o
edit:
@BlackAce:
Täusche ich mich evtl.?!
Weil jetzt mal gesprochen würde "<=" doch kleiner gleich lauten, oder?
Und wenn ich sage:
500 <= 500
würde er die 500 doch noch machen aber die:
501 <= 500
wäre dann nicht mehr möglich, oder bin ich jetzt komplett falsch?
Weil jetzt mal gesprochen würde "<=" doch kleiner gleich lauten, oder?
Und wenn ich sage:
500 <= 500
würde er die 500 doch noch machen aber die:
501 <= 500
wäre dann nicht mehr möglich, oder bin ich jetzt komplett falsch?
Du täuscht dich
idR fangen Zahlen/Arrays bei Programmier/Scriptsprachen bei 0 an.
Initialisiere ich nun meine Variable i, in der schleife mit 0 und möchte MAX_PLAYERS(500) durchläufe,
brauch ich den kleiner als Operator -> 0 - 499 = 500
initialisiere ich meineVariable allerdings mit 1, kann ich kleiner gleich nutzen, denn dann hab ich auch 500 durchläufe -> 1 - 500 = 500
mache ich das jetzt mit 0, hab ich 501 dürchläufe 0 - 500 = 501
Die beiden letzteren sind aber irgendwie ziehmlich scheiß Ideen
Einfach aus dem Grund, man hat 1. einen nicht initialisierten Wert und zwar 500, denn ein Array mit 500 Einträgen geht von 0 - 499
und 2. hast du bei der 2. Option einen ungebrauchten Wert und zwar den ersten, bzw 0.
Die Folge unnötiger Speicherverbrauch und Index out of Bounds
//Edit: falsch verstanden
Da hast du antürlich recht, denn 500 ist ja noch in dem Rahmen, wenn die Bedingung 500 <= 500 ist
alles drüber - nicht
Ah, ja, dooong, da war ja was.
Stimmt, klar.
Dann habt ihr meine Vermutung lediglich bestätigt, danke für die ausführliche Erklärung TutNichts & BlackAce