Jump to content
  • 0

pomoc Registrace - přehození dialogů


W1nCZ

Dotaz

Vytvářím registraci přes dini. Jednoduše přihlásíte se pokud soubor s vaším jménem neexistuje zobrazí vám to dialog registrace a poté vytvoří soubor. Příště když se připojíte na server a už soubor existuje zobrazí dialog přihlášení a po zadání hesla přihlásí hráče.

Bohužel registrace se povede heslo se uloží do souboru, rovnou mě to přihlásí, ale příště když přijdu na server znovu zobrazí se mi zas registrace.

public OnPlayerConnect(playerid)
{
	new cesta[48];
	format(cesta, sizeof(cesta), "/Users/%.sav", Jmeno(playerid));
	if(dini_Exists(cesta))
	{
	    ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Přihlášení", "Pro přihlášní zadejte vaše heslo.", "Potvrdit", "Odpojit");
	}
	else if(!dini_Exists(cesta))
	{
	    ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, "Registrace", "Nemáte zaregistrovaný účet. Zadejte vaše budoucí heslo", "Potvrdit", "Odpojit");
	}
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
	// Ukládání
    new cesta[48];
	format(cesta, sizeof(cesta), "/Users/%.sav", Jmeno(playerid));
    dini_IntSet(cesta, "Money", GetPlayerMoney(playerid));
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
   	new cesta[48];
	format(cesta, sizeof(cesta), "/Users/%s.acc", Jmeno(playerid));
	if(dialogid == 0)
	{
 		if(!response) return Kick(playerid);
   		if (!strlen(inputtext)) return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, "Registrace", "Zadejte heslo.", "Potvrdit", "Odpojit");
		else
		{

		    dini_Create(cesta);
            dini_IntSet(cesta, "Password", udb_hash(inputtext));
            SendClientMessage(playerid, YELLOW, "Jsi úspěšně přihlášený.");
        }
	}
	else if(dialogid == 1)
	{
	    if(!response) return Kick(playerid);
   		else if (!strlen(inputtext)) return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Přihlášení", "Pro přihlášní zadejte vaše heslo.", "Potvrdit", "Odpojit");
		else if(udb_hash(inputtext) != dini_Int(cesta, "Password")) return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Přihlášení", "Zadali jste špatné heslo! Zkuste to znovu.", "Potvrdit", "Odpojit");
        else if(udb_hash(inputtext) == dini_Int(cesta, "Password"))
        {
        	// Načítání
		    SendClientMessage(playerid,RED, "Jste přihlášen.");
			SetPlayerMoney(playerid, dini_Int(cesta, "Money"));
		}
	}
	return 1;
}

stock Jmeno(playerid)
{
new n[26];
GetPlayerName(playerid, n, sizeof(n));
return n;
}

Vše co se toho týká. Kompilator nic nehlásí.

Link to comment
Share on other sites

6 odpovědí na tuto otázku

Recommended Posts

  • 0

a jsi si jistej že se ten soubor uloží a zůstane tam uloženej?

Ano soubor i uložené heslo. Nevíš přesně jak funguje ten hash. Místo písmen jako heslo se mi tam zapsaly čísla.

Jinak vím, že jsem měl někdy podobný problém bylo to jen nějaké prohození těch dialogů, ale už nevím co to spravilo. Jen sem něco zkopíroval do kódu. :/

Link to comment
Share on other sites

  • 0
  • Globální moderátor

buď jsem slepej nebo tam žádná chyba není, jedině zkus zjednodušit tu podmínku ve které to blbne stačí tam pak else a ne else if balbla

 

 

a jinak hash, na to je algoritmus který nenávratně zašifruje heslo ... :d co víc k tomu říct

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...