Hallo,
Ich habe eine Frage und wüsste gerne, wie ich eine Variable mit allen anderen Spielern vergleichen kann und abfragen welche am höchsten ist?
Zum Beispiel bei einen DM Server, wieviel kills man gemacht hat in einer Runde. zb. die Variable Kills[killerid]++; wird erhöht bei jeden kill.
Wie kann ich am Ende abfragen, wer die meisten Kills hat? Und es denn auch senden kannn mit %s hat die meisten kills gemacht.
Ich stelle mir das so vor, mit irgendeiner Forschleife. Oder so ein Abstimmungssystem, hat den selben Effekt, welche Variable hat die meisten stimmen.
Ich bin mit meinen Lateien am Ende. Ich hoffe ihr könnt mir da was sagen zu. Liebe Grüße
Wie kann ich abfragen, welcher Spieler die höchste Variable hat?
- iMontreal
- 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
-
-
new idx;
for(new i;i<MAX_PLAYERS;i++;)
{
if(Kills[i] > idx)idx = i;
}
idx hat nun den Wert von der höchsten Killrate von allen Spieler.
Ich hab das mit Handy geschrieben.. -
Idx ist nun die ID des Führenden, hat aber nicht den Wert.
-
Idx ist nun die ID des Führenden, hat aber nicht den Wert.
Auch nicht, so wie er es geschrieben hat, funktioniert der Algorithmus nichtEs muss so heißen:
new idx;
for(new i;i<MAX_PLAYERS;i++;)
{
if(Kills[i] > idx)idx = Kills[i];
}mfg.
-
Hallo Icy., danke schon einmal für deine Antwort.
Sie hat den Anfang schon einmal gemacht. Und dann soll ich nurnoch unter der For-Schleife
format(string,sizeof(string),"Der Spieler %s hat die meisten Kills gemacht. %i Kills",SpielerName(idx),Kills[idx]);
SendClientMessageToAll(Irgendeinetollefarbe, string);
Sollte es irgendwie dann so aussehen. Gut das ist der erste teil, und wie mache ich das ganze nun für Variabeln?
Liebe GrüßeHallo N0SKILL, danke für deine Antwort.
Wenigstens haben wir jetzt schon einmal die ID des Führenden, nun weiß ich aber nicht ob meine Vermutung stimmt, das
man einfach unter der Schleife idx abfragt und wieviele kills idx hat.
Liebe GrüßeVielleicht gibt es auch noch ein paar andere Antworten.
-
Vielleicht gibt es auch noch ein paar andere Antworten.
Wenn du die ID willst schreibe es so:new id;
for(new i,tmp=-1; i<MAX_PLAYERS; i++) {
if(!IsPlayerConnected(i)) continue;
if(Kills[i] > tmp) tmp=Kills[i],id=i;
}format(string,sizeof(string),"Der Spieler %s hat die meisten Kills gemacht. %i Kills",SpielerName(id),Kills[id]);
SendClientMessageToAll(Irgendeinetollefarbe, string);mfg.
-
Das frägt den ersten Platz ab.
Wie frägt man den zweiten Platz ab?Grüße
Mark -
Zum Beispiel so:
new tmpKills[MAX_PLAYERS], tmpID[MAX_PLAYERS], tmp;
for(new i=0; i<MAX_PLAYERS; i++)
{
tmpKills[i] = Kills[i];
tmpID[i] = i;
}
for(new i=0; i<MAX_PLAYERS; i++)
{
for(new j = i+1; j < MAX_PLAYERS; j++)
{
if(tmpKills[i] < tmpKills[j])
{
tmp = tmpKills[i];
tmpKills[i] = tmpKills[j];
tmpKills[j] = tmp;
tmp = tmpID[i];
tmpID[i] = tmpID[j];
tmpID[j] = tmp;
}
}
}2. Platz:
format(str, sizeof(str), "2. Spieler: %s Kills: %d", SpielerName(tmpID[1]), tmpKills[1]); -
Danke, das hat sehr geholfen.
Grüße
Mark -
breadfish.de
Hat das Thema geschlossen.