Login & Register help
#1

Hello guys, i would like to know why this system isnt working the right way i mean if you register it suppose to save your acc right away but this here is like this you go in register, you have to relog go in again and then your acc saved

pawn Код:
switch( dialogid )
    {
        case DIALOG_REGISTER:
        {
            if (!response) return Kick(playerid);
            if(response)
            {
                if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_LIGHTBLUE"Registering...",""COL_RED"You have entered an invalid password.\n"COL_LIGHTBLUE"Type your password below to register a new account.\nWe Welcome you Proudly in Forever Free Stunt Server Freeroam Server","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,"Score",0);
                INI_WriteInt(File,"DonatorLevel",0);
                INI_WriteInt(File,"AdminLevel",0);
                INI_Close(File);

                SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
                SpawnPlayer(playerid);
                ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_LIGHTBLUE"Registartion Completed",""COL_GREEN"Great! You Have Registerd, after you quit your stats will be saved\nGood Luck and Have fun staying in here\nif you dont relog your stats will not be saved!","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]);
                    SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
                    ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""COL_LIGHTBLUE"Success!",""COL_GREEN"You have successfully logged in!","Ok","");
                }
                else
                {
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_LIGHTBLUE"Login to your Account",""COL_RED"You have entered an incorrect password.\n"COL_LIGHTBLUE"Type your password below to login.","Login","Quit");
                }
                return 1;
            }
        }
    }
return 1;
}
Thank you for the Help +rep who helps me!
Reply
#2

Make function then...

pawn Код:
stock SavePlayer(playerid)
{
    new INI:File = INI_Open(UserPath(playerid));
    INI_SetTag(File,"data");
    INI_WriteInt(File,"Password",yourenum like pinfo[playerid][Pass]);
    INI_WriteInt(File,"Cash",yourenum like pinfo[playerid][Cash]);
    INI_WriteInt(File,"Admin",yourenum like pinfo[playerid][Admin]);
    INI_WriteInt(File,"Kills",yourenum like pinfo[playerid][Kills]);
    INI_WriteInt(File,"Deaths",yourenum like pinfo[playerid][Deaths]);
    INI_WriteInt(File,"Score",yourenum like pinfo[playerid][Score]);
    INI_WriteInt(File,"DonatorLevel",yourenum like pinfo[playerid][DonatorLevel]);
    INI_WriteInt(File,"AdminLevel",yourenum like pinfo[playerid][AdminLevel]);
    INI_Close(File);
    return true;
}
Then you use function

pawn Код:
SavePlayer(playerid);
So your dialog should look like:

pawn Код:
case DIALOG_REGISTER:
        {
            if (!response) return Kick(playerid);
            if(response)
            {
                if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_LIGHTBLUE"Registering...",""COL_RED"You have entered an invalid password.\n"COL_LIGHTBLUE"Type your password below to register a new account.\nWe Welcome you Proudly in Forever Free Stunt Server Freeroam Server","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,"Score",0);
                INI_WriteInt(File,"DonatorLevel",0);
                INI_WriteInt(File,"AdminLevel",0);
                INI_Close(File);

                SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
                SpawnPlayer(playerid);
                SavePlayer(playerid); // Will save after registering
                ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_LIGHTBLUE"Registartion Completed",""COL_GREEN"Great! You Have Registerd, after you quit your stats will be saved\nGood Luck and Have fun staying in here\nif you dont relog your stats will not be saved!","Ok","");
                        }
        }
You can use this function in commands like when you buy vehicle, house etc in case server crash after it you saved your account better than using global timer to save players data.
Reply
#3

well i have this...
pawn Код:
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("Score",PlayerInfo[playerid][pScore]);
    INI_Int("DonatorLevel",PlayerInfo[playerid][pDonatorLevel]);
    INI_Int("AdminLevel",PlayerInfo[playerid][pAdminLevel]);
    return 1;
}
Reply
#4

Replace this with your login dialog:
pawn Код:
ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_LIGHTBLUE"Registartion Completed",""COL_GREEN"Great! You Have Registerd, after you quit your stats will be saved\nGood Luck and Have fun staying in here\nif you dont relog your stats will not be saved!","Ok","");
Reply
#5

pawn Код:
stock SavePlayer(playerid)
{
    new INI:File = INI_Open(UserPath(playerid));
    INI_SetTag(File,"data");
    INI_WriteInt(File,"Password",PlayerInfo[playerid][pPass]);
    INI_WriteInt(File,"Cash",PlayerInfo[playerid][pCash]);
    INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
    INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
    INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
    INI_WriteInt(File,"Score",PlayerInfo[playerid][pScore]);
    INI_WriteInt(File,"DonatorLevel",PlayerInfo[playerid][pDonatorLevel]);
    INI_WriteInt(File,"AdminLevel",PlayerInfo[playerid][pAdminLevel]);
    INI_Close(File);
    return true;
}
Then its like this...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)