Password issue?
#1

pawn Код:
OnPlayerconnect callback
if(fexist(UserPath(playerid)))
    {
        INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
        new string[128],gname[MAX_PLAYER_NAME];
        GetPlayerName(playerid,gname,sizeof(gname));
        format(string,sizeof(string),""OL_WHITE"Welcome back "COL_LIGHTBLUE"%s "COL_WHITE"Chaos "COL_BLUE"Cops "COL_WHITE"N "COL_RED"Robbers"COL_WHITE" Server developed by Unlimited Gaming. Please "COL_GREEN"login "COL_WHITE" to continue.",gname);
        ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,""COL_WHITE"Login to CCNR",string,"Login","Quit");
    }
    else
    {
        ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_RED"Registering...",""COL_WHITE"Type your password below to register a new account to Chaos "BLUE"C"COL_WHITE"N"COL_RED"R","Register","Quit");
    }

OnPlayerDisconnect callback

    new INI:File = INI_Open(UserPath(playerid));
    INI_SetTag(File,"data");
    INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
    INI_WriteInt(File,"Level",PlayerInfo[playerid][pAdmin]);
    INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
    INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
    INI_Close(File);

OnPlayerDeath callback

 PlayerInfo[killerid][pKills]++;
    PlayerInfo[playerid][pDeaths]++;

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,"User Password",udb_hash(inputtext));
                INI_WriteInt(File,"Total Cash",0);
                INI_WriteInt(File,"Admin Level",0);
                INI_WriteInt(File,"Total Kills",0);
                INI_WriteInt(File,"Total Deaths",0);
                INI_Close(File);

                ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_GREEN"Success!, Registered",""COL_GREEN"You have registered in Chaos Cops N Robbers Server, choose class","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]);
                    ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"You have successfully logged in Chaos Cops N Robbers Server, choose class","Ok","");
                }
                else
                {
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,""COL_WHITE"Login",""COL_RED"You have entered an incorrect password.\n"COL_WHITE"Type your password below to login.","Login","Quit");
                }
                return 1;
            }
            }
        }
    return 1;
}

and on top..:
enum pInfo
{
    pPass,
    pCash,
    pAdmin,
    pKills,
    pDeaths
}
new PlayerInfo[MAX_PLAYERS][pInfo];

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]);
    return 1;
}

stock UserPath(playerid)
{
    new string[128],playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),PATH,playername);
    return string;
}

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;
}
The problem is that the first user registers well but if a second file is been registered on the folder . when i try to login as a second player(second file) it says that the password is wrong example:

if i register as one player named KINGMACHINE
with the password iamsexy
it saves well and you can login
but if you register with other name like NOONLIKEME
with the password nogate
when i try to login it says wrong password..

Whats the problem?
Reply
#2

any help??
Reply
#3

Hi i have used this login/reg system before and the prob might be here , so try that way with nothing else after the INI parsefile:

Код:
OnPlayerconnect callback
if(fexist(UserPath(playerid)))
    {
        INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);   
        ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,""COL_WHITE"Login to CCNR",string,"Login","Quit");
    }
    else
    {
        ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_RED"Registering...",""COL_WHITE"Type your password below to register a new account to Chaos "BLUE"C"COL_WHITE"N"COL_RED"R","Register","Quit");
    }
Second part can be in the actual register dialog response.

This system is quite straight forward and simple to use or edit worked perfect for me so can you post the Register dialog response please ? ill compare to mine and what can be wrong. lets try to get it working hehe
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)