#include <a_samp>
#include <a_mysql>
#define GET_INT(%1,%2) mysql_fetch_field_row(tmp, %2);%1 = strval(tmp)
#define GET_STR(%1,%2) mysql_fetch_field_row(%1, %2)
new
mysql_kapcsolat;
public OnFilterScriptInit()
{
print(\"Valami\");
mysql_kapcsolat = mysql_connect(\"localhost\", \"root\", \"kamionozas\", \"\");
mysql_query(\"SELECT * FROM `adminok` WHERE `szint` >= \'1\'\", -1, -1, mysql_kapcsolat);
mysql_store_result(mysql_kapcsolat);
while(mysql_retrieve_row())
{
new tmp[32], neve[MAX_PLAYER_NAME], adminszint;
GET_INT(adminszint, \"szint\");
GET_STR(neve, \"nev\");
printf(\"%s - %d\", neve, adminszint);
}
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
Remélem ennek alapján megtudod csinálni :D
Akkor ott kezdeném hogy mysql sokra többre képes megadhatod neki hogy milyen adatot olvasson be egy adat táblából.
Amit írtál kódot abban feleslegesen kéred le az összes adatot.
mysql adatbázisból így kérd le mivel neked csak kettõ adatra van szükséged:
mysql_query(\"SELECT `Username`, `Level` FROM `players` WHERE `Level` > 0 ORDER BY `Level` DESC\");
Természetesen az `Username` és a `Level` kifejezést írd arra amit te használsz.
Ez kiválasztja a players adat táblát azokon belül az Username és Level mezõt így vissza térési értéknek csak ez lesz.
A WHERE utáni rész már egybõl csak a 0-nál nagyobb adminszintel rendelkezõ adatokra korlátozza a lekérést.
Az ORDER BY `Level` DESC pedig csökkenõ sorrendbe rendezi.
Természetesen továbbra is kell a
mysql_store_result();
while(mysql_fetch_row(Line))
Ciklus utasítás hogy végig mennyen az összes érvényes találaton.
Mivel csak két adatot kérsz le így az adat táblából akkor nem kell ennyi sscanf format \"p<|>{d}s[24]{s[16]s[30]s[24]s[60]ddd}d{ddddddddddddddddddddds[3700]dd}\"
Csak kettõ mivel két adat van lekérve.
[pawn]
sscanf(Line,\"p<|>s[24]d\", adminname, level);
[/pawn]
while(mysql_fetch_row(Line))
{
print(line); // hogy lásd milyen adatot kell darabolnod sscanf segítségével ha át tanulmányoztad akkor kiveszed a print sort
sscanf(Line,\"p<|>s[24]d\", adminname, level);
format(DIALOGstring,2000,\"%s%s(%d)\\n\",DIALOGstring,adminname,level);
}