Szerző Téma: Belépve vagy nem  (Megtekintve 927 alkalommal)

Belépve vagy nem
« Dátum: 2012. április 20. - 22:16:00 »
0 Show voters
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.
« Utoljára szerkesztve: 2012. április 20. - 22:21:55 írta cSoNgI »

Belépve vagy nem
« Válasz #1 Dátum: 2012. április 21. - 10:23:16 »
0 Show voters
Elvileg minden lehetséges. :D
Ez alapján a 2 sor alapján nincs benne hiba..
A teljes kód vagy kódrészlet átnézése /bemásolása esetén a hiba megtalálásának esélye többszörösére növekszik, azaz kérlek másold be a kódrészletet.

Belépve vagy nem
« Válasz #2 Dátum: 2012. április 21. - 11:34:18 »
0 Show voters
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);

Belépve vagy nem
« Válasz #3 Dátum: 2012. április 27. - 19:52:02 »
0 Show voters
Bocs a bumpért, senki sem tud segíteni? :(

Belépve vagy nem
« Válasz #4 Dátum: 2012. április 27. - 20:02:44 »
0 Show voters
Én valahogy nem látok benne hibát..

Belépve vagy nem
« Válasz #5 Dátum: 2012. április 28. - 10:26:52 »
0 Show voters
Hát hiba az nincs, de mégse ad a pvar-nak igaz értéket, nem értem... Ha parancsban megcsinálom hogy a pvar értéke true legyen akkor jó, de így nem. :(

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal