Helló, csinálok egy MySQL-es adminrendszert. Már enumal és PVar-al is próbáltam, de egyik se jó.
A játékos csatlakozik és elõjön egy dialog oda beírja a jelszavát, ekkor PVar-al:
SetPVarInt(playerid, \"LoggedIN\", 1);
vagy enum-al
PlayerInfo[playerid][Logged] = 1;
a játékos bejelentkezik. Ha bejelentkezett
if(GetPVarInt(playerid, \"LoggedIN\") == 1)
akkor betölti az adatokat ugyanez kilépésnél is. Egyik sem mûködik, ha parancsban lekérem akkor is azt írja hogy nem vagyok bejelentkezve.
Gondolkoztam már azon hogy csinálok egy olyat MySQL-be hogy Logged és mikor a játékos bejelentkezik akkor 1 lesz és mikor kilép akkor 0 és így parancsokban is lehetne használni.
Szerintetek mi a megoldás, vagy mért nem jó a PVar se és az enum se?
Másik kérdésem az lenne hogy, hogy lehetne összekötni az enumot az adatbázissal. Pl. Ha egy parancsban frissitem valaki adminszintjét PlayerInfo[playerid][Admin] = Level; akkor frissül az adatbázisban is a Level mezõ. Van egy .inc-em amiben van egy cAdmin(playerid) ami lekéri a játékos adminszintjét. Ezzel meglehet oldani az összekötést? :)
Bocs a hülye megfogalamzásért.
Belép, kijön egy dialog és akkor OnPlayerDialogResponse alatt:
regisztráció
if(!response) return Kick(playerid);
if(strlen(inputtext) == 0)
{
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,\"\"cblue\"Regisztráció - \"cyellow\"Írd be a jelszavad\",\"\"cblue\"Te most egy\"cyellow\"új felhasználót\"cblue\"regisztrálsz! \\nÍrj be egy \"corange\"jelszót\"cblue\"! \\n\",\"OK!\",\"Mégse\");
}
else
{
new EscapedText[64],buffer[129];
mysql_real_escape_string(inputtext, EscapedText);
WP_Hash(buffer,sizeof(buffer),EscapedText);
format(Query,sizeof(Query),\"INSERT INTO `accounts` (Username,Password,IP,Money,Score,Kills,Deaths,Admin) VALUES(\'%s\',\'%s\',\'%s\',\'0\',\'0\',\'0\',\'0\', \'0\')\",pName(playerid),buffer,GetIP(playerid));
mysql_query(Query);
mysql_store_result();
SendClientMessage(playerid,green2,\"» Sikeresen regisztráltál!\");
format(string,sizeof(string),\"\"cgreen\"Sikeresen regisztráltál! \\n\"cwhite\"Név: \"cblue\"%s \\n\"cwhite\"Jelszó: \"cblue\"%s \\n\"cwhite\"ID: \"cblue\"%i \",pName(playerid),inputtext,mysql_insert_id());
ShowPlayerDialog(playerid,DIALOG_INFO,0,\"Regisztrálva!\",string,\"OK\",\"\");
mysql_free_result();
LoadStats(playerid);
SetPVarInt(playerid, \"LoggedIN\", true);
}
bejelentkezés
if(!response) return Kick(playerid);
if(strlen(inputtext) == 0)
{
format(string,sizeof(string),\"\"cblue\"Helló, \"cred\"%s\"cblue\"! \\nTe\"cgreen\" regisztrálva \"cblue\"vagy.\\nÍrd be a \"cred\"jelszavad\"cblue\" a bejelentkezéshez!\",pName(playerid));
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,\"\"cgreen2\"Bejelentkezés\",string,\"OK\",\"Mégse\");
SendClientMessage(playerid,red,\"Kérlek írj be egy jelszót!\");
}
else
{
LoginPlayer(playerid,inputtext);
}
Ez meg a loginplayer, nem akartam bemásolni az egészet...
stock LoginPlayer(playerid,const password[])
{
new string[175], buffer[129], Query[210];
WP_Hash(buffer,sizeof(buffer),password);
format(Query,sizeof(Query),\"SELECT Password FROM `Accounts` WHERE `Username` = \'%s\' AND `Password` = \'%s\'\",pName(playerid),buffer);
mysql_query(Query);
mysql_store_result();
if(mysql_num_rows() != 0)
{
format(string,sizeof(string),\"Sikeresen bejelentkeztél! Üdv, \"cred\"%s\"cgreen\"!\",pName(playerid));
SendClientMessage(playerid,green,string);
LoadStats(playerid);
SetPVarInt(playerid, \"LoggedIN\", true);
}
Persze ha parancsban 1es értéket adok neki, akkor az jó:
SetPVarInt(playerid, \"LoggedIN\", 1);