Immer den Höchsten wert anzeigen lassen, wie?

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
  • Abend,


    Und zwar habe ich eine Frage, ich bin derzeit an einem Müll System dran der anzeigen soll wie viel Müll in einem Haus ist.
    Es wird alle 30 Minuten ein Zufalls wert generiert und für das Haus festgelegt, so.


    wenn der Müllmann nun einen Befehl eingibt um anzeigen zulassen welches haus wie viel Müll hat, soll das Haus mit dem meisten müll von oben nach unten angezeigt werden.


    Also:


    55
    54
    50
    32
    16
    8
    usw ..


    Wie stelle ich das an?
    Ich habe hier irgendwo mal gelesen gehabt es ginge mit der Funktion Max(); nur finde ich im Internet nichts über diese Funktion ^,^
    Hoffe ihr könnt mir da weiter helfen.



    Grüße

  • Und wofür steht array[10] für die Zeichen oder wie? also 10 Zahlen?

  • Hö aber wie funktioniert das ganze den jetzt?


    So schaut mein Code jetzt aus:

    ocmd:mhauser(playerid)
    {
    for(new hausid=1;hausid<MAX_HAUSER;hausid++)
    {
    if(PlayerDaten[playerid][pTutorial] == 1)return SendClientMessage(playerid,ORANGE," Du bist noch im Tutorial!");
    if(PlayerDaten[playerid][pLogin] == 0)return SendClientMessage(playerid,ORANGE ," Du bist nicht Eingeloggt!");
    {
    new array[10] = {0,1,2,3,4,5,6,7,8,9};
    new i, maxi=-1;

    for(; i != 10; ++i)if(array[maxi] < array[i]) maxi = i;
    {
    format(array, sizeof(array), "[MÜLL-SYSTEN]: Hausnummer: %d Menge: %d", hausid, HInfo[hausid][Muellmenge]);
    SendClientMessage(playerid, ORANGE, array);
    }
    }
    }
    return 1;
    }

  • ocmd:mhauser(playerid)
    {
    for(new hausid=1;hausid<MAX_HAUSER;hausid++)
    {
    if(PlayerDaten[playerid][pTutorial] == 1)return SendClientMessage(playerid,ORANGE," Du bist noch im Tutorial!");
    if(PlayerDaten[playerid][pLogin] == 0)return SendClientMessage(playerid,ORANGE ," Du bist nicht Eingeloggt!");
    {
    new array[10] = {0,1,2,3,4,5,6,7,8,9};
    new i, maxi=0,string[145];

    for(; i < 10; ++i)if(array[maxi] < array[i]) maxi = i;
    {
    format(string, sizeof(string), "[MÜLL-SYSTEN]: Hausnummer: %d Menge: %d", maxi, HInfo[maxi][Muellmenge]);
    SendClientMessage(playerid, ORANGE, array);
    }
    }
    }
    return 1;
    }


    Wobei die geschwungenen Klammern nach der Zeile mit der Schleife nicht notwendig sind.


    Die Meldung würde so aber ziemlich oft kommen, aber ich denke das weißt du, weil das sieht ja eh nach einem Test Befehl aus.


    EDIT:
    IPrototypeI: Ist mir auch klar, siehe letzter Satz. ;)

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Was du willst ist nicht der Max. Wert, sondern das Array sortierend von größte bist kleinste Menge. Da es keine native Funktion dafür gibt musste dir selbst was schreiben. Du kannst dir z.B. mal quickSort von RyDeR` angucken, und das entsprechend deiner Bedürfnisse anpassen.


    Doch das gibt es bereits siehe oben den Link zur Include von Slice.
    Ebenfalls möchte ich anmerken für Jeffry das dies nur ein Beispiel Code ist von ihn und um eine genaueres beispiel zu haben poste doch mal die variable in dem du den Müll speicherst.


    Das was ich gepostet habe war auch nur ein beispiel um den index zu ermitteln des arrays, welcher den höchsten wert besitzt.


    /edit
    Jeffry ich wollte damit anmerken das er hoffentlich nicht den code von dir einfach rauskopiert und hofft das es funktioniert, da das array in det schleife mit dem inhalt deklariert ist ^^ ich meinte sas könnte für Verwirrung sorgen. Upps das hat er selbst gemacht.

    Einmal editiert, zuletzt von IPrototypeI ()