Ucitavanje Lozinke


Započeo AristoN, Septembar 23, 2020, 22:19:49 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Problem(error/warning) Pozdrav,kao sto mozete da procitate u Working in Progress radim mod od 0.Nema obavestenja vec 2-3 dana posto koci me ova stvar sto cu je napisem u temu,

- Npr sad kad uradim acc na primer Test_Server lozinka je tripet124 idem relog logujem se izbacuje netacnu lozinku zasto nije mi jasno ?

Deo skripte:
///

Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log):
///

Sta koristis za cuvanje? Posalji nam sve vezano za cuvanje i ucitavanje acc-ova

forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
    INI_Int("Password",PlayerInfo[playerid][pPass]);
    INI_Int("Cash",PlayerInfo[playerid][pCash]);
    INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
    INI_Int("Kills",PlayerInfo[playerid][pKills]);
    INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
    INI_Int("Skin",PlayerInfo[playerid][pSkin]);
    INI_Int("Vip",PlayerInfo[playerid][pVip]);
    INI_Int("Ban",PlayerInfo[playerid][pBanovan]);
    INI_Int("DMwin",PlayerInfo[playerid][pDM]);
    return 1;
}
=============================
stock udb_hash(buf[]) {
    new length=strlen(buf);
    new s1 = 1;
    new s2 = 0;
    new n;
    for (n=0; n<length; n++)
    {
       s1 = (s1 + buf[n]) % 65521;
       s2 = (s2 + s1)     % 65521;
    }
    return (s2 << 16) + s1;
}
=============================
Public OnPlayer Connect
TogglePlayerSpectating(playerid, true);
        INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
        ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_WHITE"Type your password below to login.","Login","Quit");
        //=================================================
        
    }
    else
    {
        ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_WHITE"Registering...",""COL_WHITE"Type your password below to register a new account.","Register","Quit");
    }
=============================
public OnPlayerDisconnect(playerid, reason)
{
    new INI:File = INI_Open(UserPath(playerid));
    INI_SetTag(File,"data");
    INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
    INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
    INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
    INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
    INI_WriteInt(File,"Skin",PlayerInfo[playerid][pSkin]);
    INI_WriteInt(File,"Vip",PlayerInfo[playerid][pVip]);
    INI_WriteInt(File,"Ban",PlayerInfo[playerid][pBanovan]);
    INI_WriteInt(File,"DMwin",PlayerInfo[playerid][pDM]);
    INI_Close(File);
}
=============================
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch( dialogid )
    {
        case DIALOG_REGISTER:
        {
            if (!response) return Kick(playerid);
            if(response)
            {
                if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_WHITE"Registering...",""COL_RED"You have entered an invalid password.n"COL_WHITE"Type your password below to register a new account.","Register","Quit");
                new INI:File = INI_Open(UserPath(playerid));
                INI_SetTag(File,"data");
                INI_WriteInt(File,"Password",udb_hash(inputtext));
                INI_WriteInt(File,"Cash",0);
                INI_WriteInt(File,"Admin",0);
                INI_WriteInt(File,"Kills",0);
                INI_WriteInt(File,"Deaths",0);
                INI_WriteInt(File,"Skin",0);
                INI_WriteInt(File,"Vip",0);
                INI_WriteInt(File,"Ban",0);
                INI_WriteInt(File,"DMWin",0);
                INI_Close(File);
                
				SetSpawnInfo(playerid, 0, 0,1728.7982,-1668.4337,22.6094,43.5554, 0, 0, 0, 0, 0, 0);
				SpawnPlayer(playerid);
				SetCameraBehindPlayer(playerid);
				SetPlayerArmour(playerid, 999999);
                GivePlayerMoney(playerid, 5000000);
                SetPlayerScore(playerid, 24);
                SetPlayerSkin(playerid, 121);
                SetPlayerScore(playerid,3);
                GivePlayerWeapon(playerid,24,100);
	   			GivePlayerWeapon(playerid,25,500);
	   			GivePlayerWeapon(playerid,31,500);
				TogglePlayerSpectating(playerid, false);

                //ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"Great! Your Y_INI system works perfectly. Relog to save your stats!","Ok","");
=============================
=============================

Pošalji response dialoga za login, koji hash koristiš ?
Ex-Developer : GodFather Community
Ex-Developer : Balkan ForEver Community
Developer : Venezuela Community



evo on Dialog Response a za hash koristim ovo
stock udb_hash(buf[]) {
    new length=strlen(buf);
    new s1 = 1;
    new s2 = 0;
    new n;
    for (n=0; n<length; n++)
    {
       s1 = (s1 + buf[n]) % 65521;
       s2 = (s2 + s1)     % 65521;
    }
    return (s2 << 16) + s1;
}
[/b]
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch( dialogid )
    {
        case DIALOG_REGISTER:
        {
            if (!response) return Kick(playerid);
            if(response)
            {
                if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_WHITE"Registering...",""COL_RED"You have entered an invalid password.n"COL_WHITE"Type your password below to register a new account.","Register","Quit");
                new INI:File = INI_Open(UserPath(playerid));
                INI_SetTag(File,"data");
                INI_WriteInt(File,"Password",udb_hash(inputtext));
                INI_WriteInt(File,"Cash",0);
                INI_WriteInt(File,"Admin",0);
                INI_WriteInt(File,"Kills",0);
                INI_WriteInt(File,"Deaths",0);
                INI_WriteInt(File,"Skin",0);
                INI_WriteInt(File,"Vip",0);
                INI_WriteInt(File,"Ban",0);
                INI_WriteInt(File,"DMWin",0);
                INI_Close(File);
                
				SetSpawnInfo(playerid, 0, 0,1728.7982,-1668.4337,22.6094,43.5554, 0, 0, 0, 0, 0, 0);
				SpawnPlayer(playerid);
				SetCameraBehindPlayer(playerid);
				SetPlayerArmour(playerid, 999999);
                GivePlayerMoney(playerid, 5000000);
                SetPlayerScore(playerid, 24);
                SetPlayerSkin(playerid, 121);
                SetPlayerScore(playerid,3);
                GivePlayerWeapon(playerid,24,100);
	   			GivePlayerWeapon(playerid,25,500);
	   			GivePlayerWeapon(playerid,31,500);
				TogglePlayerSpectating(playerid, false);

                //ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"Great! Your Y_INI system works perfectly. Relog to save your stats!","Ok","");

DIALOG_LOGIN, od ovog dialoga pošalji
Ex-Developer : GodFather Community
Ex-Developer : Balkan ForEver Community
Developer : Venezuela Community



Pre svega ovoga ispod posalji mi dialog za login ( OnDialogResponse ), mozda si zeznuo nesto unutar njega :P

Sve deluje u redu!

Ajmo ovako, probaj izbaci hash, stavi da ti pPass bude string, zatim samo sacuvaj kao string, ne kao integer, tako da ti izbaci tekst koju sifru sacuva i da li uopste sacuva :

INI_WriteString(File, "Password", strval(inputtext));


Ovo gore je kada se igrac registruje, OnDialogResponse za DIALOG_REGISTER

Takodje svuda gde koristis sifru moras staviti string umesto integer

forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
    INI_String("Password", PlayerInfo[playerid][pPass]);
    INI_Int("Cash",PlayerInfo[playerid][pCash]);
    INI_Int("Admin",PlayerInfo[playerid][pAdmin]);



Evo ti dialog login kod On Dialog Response

                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_RED"You have entered an incorrect password.n"COL_WHITE"Type your password below to login.","Login","Quit");
[/b]

Daj mi ceo OnDialogResponse za dialog DIALOG_LOGIN, apsolutno sve


Okej, dok ne dodjes pogledaj primer kako najjednostavnije treba da izgleda OnDialogResponse za Login :

if(!response) return Kick(playerid); //Ako klikne na izlaz da ga kicka
if(response)
{
    if(udb_hash(inputtext) == PlayerInfo[playerid][pLozinka]) //Proverava sifru igraca
    {
        INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid); //Ucitava igraca
        
        SpawnPlayer(playerid); //Spawnuje ga
        return 1;
    }
    else //Ako ne pogodi sifru da mu opet izadje dialog za login
    {
        Dialog_Show(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login", "Sifra koju ste ukucali nije tacna!\nVas account je pronadjen.Unesite lozinku","Login","Izadji");
    }
}
return 1;


Ovako nesto maybe?

Evo cjeli onDialogResponse

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch( dialogid )
    {
        case DIALOG_REGISTER:
        {
            if (!response) return Kick(playerid);
            if(response)
            {
                if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_WHITE"Registering...",""COL_RED"You have entered an invalid password.n"COL_WHITE"Type your password below to register a new account.","Register","Quit");
                new INI:File = INI_Open(UserPath(playerid));
                INI_SetTag(File,"data");
                INI_WriteInt(File,"Password",udb_hash(inputtext));
                INI_WriteInt(File,"Cash",0);
                INI_WriteInt(File,"Admin",0);
                INI_WriteInt(File,"Kills",0);
                INI_WriteInt(File,"Deaths",0);
                INI_WriteInt(File,"Skin",0);
                INI_WriteInt(File,"Vip",0);
                INI_WriteInt(File,"Ban",0);
                INI_WriteInt(File,"DMWin",0);
                INI_Close(File);
                
				SetSpawnInfo(playerid, 0, 0,1728.7982,-1668.4337,22.6094,43.5554, 0, 0, 0, 0, 0, 0);
				SpawnPlayer(playerid);
				SetCameraBehindPlayer(playerid);
				SetPlayerArmour(playerid, 999999);
                GivePlayerMoney(playerid, 5000000);
                SetPlayerScore(playerid, 24);
                SetPlayerSkin(playerid, 121);
                SetPlayerScore(playerid,3);
                GivePlayerWeapon(playerid,24,100);
	   			GivePlayerWeapon(playerid,25,500);
	   			GivePlayerWeapon(playerid,31,500);
				TogglePlayerSpectating(playerid, false);

                //ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"Great! Your Y_INI system works perfectly. Relog to save your stats!","Ok","");
            }
        }

        case DIALOG_LOGIN:
        {
            if ( !response ) return Kick ( playerid );
            if( response )
            {
                if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
                {
                    INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
                    GivePlayerMoney(playerid,PlayerInfo[playerid][pCash]);
                    SetSpawnInfo(playerid, 0, 0,1728.7982,-1668.4337,22.6094,43.5554, 0, 0, 0, 0, 0, 0);
				    SpawnPlayer(playerid);
				    SetPlayerSkin(playerid, 121);
		            SetPlayerScore(playerid,3);
        			SetPlayerArmour(playerid, 999999);
        			GivePlayerWeapon(playerid,24,100);
	   				GivePlayerWeapon(playerid,25,500);
	   				GivePlayerWeapon(playerid,31,500);
				    TogglePlayerSpectating(playerid, false);
                    ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"You have successfully logged in!","Ok","");
                }
                else
                {
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_RED"You have entered an incorrect password.n"COL_WHITE"Type your password below to login.","Login","Quit");
                }
                return 1;
                
           		if(dialogid == 1)
    {

Ovo je sve super, probaj onu metodu sto sam ti naveo gore, da ne hash-ujes sifru vec da sacuvas kao plain tekst, tako da vidis sta ce sacuvati

Citat: V01D poslato Septembar 24, 2020, 22:44:18 POSLE PODNE
Ovo je sve super, probaj onu metodu sto sam ti naveo gore, da ne hash-ujes sifru vec da sacuvas kao plain tekst, tako da vidis sta ce sacuvati
Mos mi malo objasniti detalnije nisam nesta najvise skonto.

Izvinjavam se na dp
@V01D  jel mogu da ubacim novi reg/log system ali kao FilterScriptu ?