ID des "Besten" ermitteln

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
  • Hallo! Ich habe eine Frage, gibts is einen Befehl oder Befehle, mit dem dir ID des Spielers mit der höchsten Score auswählt? Und es muss auswählen, wenn mehrere Spieler eine gleich hohe Score haben und mehrere Erster sind. Danke!

  • if(strcmp(cmdtext,"/bester",true)==0) {
    new s[128], asc, name[MAX_PLAYER_NAME], sc;
    for(new i=0; i<MAX_PLAYERS; i++) {
    if(IsPlayerConnected(i)) {
    sc=GetPlayerScore(i);
    if(sc>=1) {
    if(asc==0) {
    GetPlayerName(i,name,sizeof(name));
    asc=sc;
    format(s,sizeof(s),"%s ID %d",name,i); }
    else {
    if(sc>asc) {
    GetPlayerName(i,name,sizeof(name));
    asc=sc;
    format(s,sizeof(s),"%s ID %d",name,i); }
    else if(sc==asc) {
    GetPlayerName(i,name,sizeof(name));
    format(s,sizeof(s),"%s, %s ID %d",s,name,i); }}}}}
    if(asc==0) { format(s,sizeof(s),"Niemand hat einen Score über 0"); }
    SendClientMessage(playerid,FARBE,s);
    return 1;
    }
    //EDIT:Ach sheiße, du wolltest ja die ID von dem Typen^^
    //EDIT2: Hast du zufällig sowas wie strget oder strtok deklariert?
    PS: Das mitm Einrücken bekomm ich hier i-wie nicht so ganz hin... :S

  • Was soll passieren, wenn es mehrere mit der gleichen Score gibt? Irgeneinen davon auswählen oder wie?
    Um das zu lösen, musst du einen Schleife benutzen, die die Score aller Spieler kontrolliert mit
    GetPlayerScore(playerid);


    KEKS: Dein Code ist unlesbar,zumindest für mich. Einrücken würde den anderen entgegenkommen

  • Also ich habe woanders ein Object, das sich immer auf jemanden zubewegt (zu ID = 0). Und dann wollte ich, dass es sich immer zum besten bewegt, also zu ID = (id des höchsten).


    Mein Problem ist also, dass ich etwas brauche, dass ständig oder im kleinen Interval die id ermittelt und sie mit meiem im script verwendeten "ID" gleichsetzt, damit ich das weiter im script verwenden kann. Ich hoffe ihr versteht was ich meine.

  • Aber dann kann es es ja nur zu dem Besten bewegen und nicht zu allen Besten
    stock Bester() {
    new asc, sc, be;
    for(new i=0; i<MAX_PLAYERS; i++) {
    if(IsPlayerConnected(i)) {
    sc=GetPlayerScore(i);
    if(sc>=1) {
    if(asc==0) {
    be=i;
    asc=sc; }
    else {
    if(sc>asc) {
    asc=sc;
    be=i; }}}}}
    if(asc==0) { return -1; }
    return be;
    }
    Du verwendest da dann z.b. so:
    new ID=Bester();
    if(ID!=-1) {
    Denn wenn keiner einen Score über 0 hat, dann gibt diese Funktion -1 wieder

  • Sorry, ich hab mich falsch ausgedrückt :rolleyes:


    Ich dachte daran, dass im Chat eine Nachricht erscheint, sobald jemand anderes erster ist, also wenn der erste Platz den Spieler wechselt.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Das muss unter


    public OnPlayerCommandText()


    Aber kann man auch das if für den befehl durch ein if(ID des Besten (be) ändert sich) ersetzen? Ich kenne keinen Befehl dafür.

  • Ich es weiß, es ist schon ziemlich lange her, aber ich habe die Sufu genutzt und bin hier rauf gestoßen, ist es möglich den Namen und den besten Score der besten 3 Spieler aus einer .ini Datei auszulesen?


    Bei mir ist Score so gespeichert:


    Name=PrinceOfBelvedair (z.B.)
    Score=5 (z.B.)


    Es wäre nett wenn mir jemand weiter helfen könnte :)