Level höchsten auslesen und im Textdraw ausgeben[MYSQL]

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
  • mysql_function_query(MyConnection, "SELECT Level FROM `Spieler` ORDER BY Level DESC LIMIT 1", true, "LoadHightesLevel", "", "");



    enum HightesPlayer
    {
    PlayerLevel
    }


    forward LoadHightesLevel();
    public LoadHightesLevel()
    {
    new rows, fields, Total[30];
    cache_get_data(rows, fields);
    for(new x = 0; x < rows; x++)
    {
    cache_get_field_content(x,"Level", Total);
    HightesPlayer[PlayerLevel] = strval(Total);
    TextDrawSetString(Dein Textdraw, HightesPlayer[PlayerLevel]);
    }
    return 1;
    }


    Hier hast du mal einen Denkanstoß

  • mysql_function_query(MyConnection, "SELECT Level FROM `Spieler` ORDER BY Level DESC LIMIT 1", true, "LoadHightesLevel", "", "");


    und:
    forward LoadHightesLevel();
    public LoadHightesLevel()
    {
    new rows, fields, str[30];
    cache_get_data(rows, fields);
    if(!rows) return 1;
    HightesPlayer[PlayerLevel] = cache_get_field_content_int(0,"Level");
    format(str, sizeof(str), "Max.Level: %d", HightesPlayer[PlayerLevel]);
    TextDrawSetString(DeinTextdraw, str);
    return 1;
    }


    So reicht es.


  • 2168) : error 028: invalid subscript (not an array or too many subscripts): "HightesPlayer"
    was ist an dem enum falsch?

  • Ach, das wurde als enum angelegt, habe ich nicht drauf geachtet. Man darf sich auf nichts verlassen.


    forward LoadHightesLevel();
    public LoadHightesLevel()
    {
    new rows, fields, str[30];
    cache_get_data(rows, fields);
    if(!rows) return 1;
    format(str, sizeof(str), "Max.Level: %d", cache_get_field_content_int(0,"Level"));
    TextDrawSetString(DeinTextdraw, str);
    return 1;
    }
    Eigentlich reicht es so sowieso, wenn du den Wert sonst nirgends brauchst.

  • forward LoadHightesLevel(); public LoadHightesLevel() { new rows, fields, str[30]; cache_get_data(rows, fields); if(!rows) return 1; format(str, sizeof(str), "Max.Level: %d", cache_get_field_content_int(0,"Level")); TextDrawSetString(DeinTextdraw, str); return 1; }


    und wenn man den Namen auch noch raussuchen will, muss man dann den Query noch umschreiben?

  • Ja, dann musst du im SELECT noch den Name hinzufügen, und im Callback (LoadHightesLevel) noch den Name auslesen.
    Versuche dich daran mal.


    Haut nicht so ganz hin haha :D



    public TopBox()
    {
    mysql_function_query(mycon, "SELECT Level AND Name FROM `User` ORDER BY Level DESC LIMIT 1", true, "LoadHightesLevel", "dd", "playerid",1);
    return 1;
    }
    forward LoadHightesLevel(playerid);
    public LoadHightesLevel(playerid)
    {
    new rows, fields, str[30];
    cache_get_data(rows, fields);
    if(!rows) return 1;
    format(str, sizeof(str), "Max.Level: %d, Name:%s", cache_get_field_content_int(0,"Level"),cache_get_field_content(0,"Name",User[playerid][Username],mycon,34));
    SendClientMessageToAll(ROT,str);
    return 1;
    }

  • public TopBox()
    {
    mysql_function_query(mycon, "SELECT Level, Name FROM `User` ORDER BY Level DESC LIMIT 1", true, "LoadHightesLevel", "d", "playerid");
    return 1;
    }
    forward LoadHightesLevel(playerid);
    public LoadHightesLevel(playerid)
    {
    new rows, fields, str[30];
    cache_get_data(rows, fields);
    if(!rows) return 1;
    cache_get_field_content(0,"Name",str);
    format(str, sizeof(str), "Max.Level: %d, Name:%s", cache_get_field_content_int(0,"Level"), str);
    SendClientMessageToAll(ROT,str);
    return 1;
    }


    Wir können hier "str" als Namensspeicher nutzen, da es zuvor nicht verwendet wird.