Hey,
wie kann ich den Level höchsten aus der Datenbank auslesen und im Textdraw ausgeben?
Benutze Mysql r31.
mfg
Hey,
wie kann ich den Level höchsten aus der Datenbank auslesen und im Textdraw ausgeben?
Benutze Mysql r31.
mfg
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ß
Für das auslesen von einem Eintrag braucht man keine Schleife
Für das auslesen von einem Eintrag braucht man keine Schleife
Wie meinst du das?
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.
Alles anzeigenmysql_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.
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
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.