wrong password
#1

hello i got a problem with player data save i register normaly but when i login it said invalid password what happen?

PHP код:
#include <a_samp> 
#include <YSI\y_ini> 
#define DIALOG_REGISTER 1 
#define DIALOG_LOGIN 2 
#define DIALOG_SUCCESS_1 3 
#define DIALOG_SUCCESS_2 4 
#define PATH "test/Users/%s.ini" 
#define COL_WHITE "{FFFFFF}" 
#define COL_RED "{F81414}" 
#define COL_GREEN "{00FF22}" 
#define COL_LIGHTBLUE "{00CED1}" 
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

/*Credits to Dracoblue*/ 
stock udb_hash(buf[]) { 
    new 
length=strlen(buf); 
    new 
s1 1
    new 
s2 0
    new 
n
    for (
n=0n<lengthn++) 
    { 
       
s1 = (s1 buf[n]) % 65521
       
s2 = (s2 s1)     % 65521
    } 
    return (
s2 << 16) + s1

main() 

        print(
"\n----------------------------------"); 
        print(
" Blank Gamemode by your name here"); 
        print(
"----------------------------------\n"); 

public 
OnGameModeInit() 

        
SetGameModeText("Blank Script"); 
        return 
1

public 
OnGameModeExit() 

        return 
1

public 
OnPlayerRequestClass(playeridclassid

        return 
1

public 
OnPlayerConnect(playerid

    if(
fexist(UserPath(playerid))) 
    { 
        
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra true, .extra playerid); 
        
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_WHITE"Type your password below to login.","Login","Quit"); 
    } 
    else 
    { 
        
ShowPlayerDialog(playeridDIALOG_REGISTERDIALOG_STYLE_INPUT,""COL_WHITE"Registering...",""COL_WHITE"Type your password below to register a new account.","Register","Quit"); 
    } 
    return 
1

public 
OnPlayerDisconnect(playeridreason

    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_Close(File); 
    return 
1

public 
OnPlayerSpawn(playerid

        return 
1

public 
OnPlayerDeath(playeridkilleridreason

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

public 
OnVehicleSpawn(vehicleid

        return 
1

public 
OnVehicleDeath(vehicleidkillerid

        return 
1

public 
OnPlayerText(playeridtext[]) 

        return 
1

public 
OnPlayerCommandText(playeridcmdtext[]) 

        if (
strcmp("/mycommand"cmdtexttrue10) == 0
        { 
                
// Do something here 
                
return 1
        } 
        return 
0

public 
OnPlayerEnterVehicle(playeridvehicleidispassenger

        return 
1

public 
OnPlayerExitVehicle(playeridvehicleid

        return 
1

public 
OnPlayerStateChange(playeridnewstateoldstate

        return 
1

public 
OnPlayerEnterCheckpoint(playerid

        return 
1

public 
OnPlayerLeaveCheckpoint(playerid

        return 
1

public 
OnPlayerEnterRaceCheckpoint(playerid

        return 
1

public 
OnPlayerLeaveRaceCheckpoint(playerid

        return 
1

public 
OnRconCommand(cmd[]) 

        return 
1

public 
OnPlayerRequestSpawn(playerid

        return 
1

public 
OnObjectMoved(objectid

        return 
1

public 
OnPlayerObjectMoved(playeridobjectid

        return 
1

public 
OnPlayerPickUpPickup(playeridpickupid

        return 
1

public 
OnVehicleMod(playeridvehicleidcomponentid

        return 
1

public 
OnVehiclePaintjob(playeridvehicleidpaintjobid

        return 
1

public 
OnVehicleRespray(playeridvehicleidcolor1color2

        return 
1

public 
OnPlayerSelectedMenuRow(playeridrow

        return 
1

public 
OnPlayerExitedMenu(playerid

        return 
1

public 
OnPlayerInteriorChange(playeridnewinterioridoldinteriorid

        return 
1

public 
OnPlayerKeyStateChange(playeridnewkeysoldkeys

        return 
1

public 
OnRconLoginAttempt(ip[], password[], success

        return 
1

public 
OnPlayerUpdate(playerid

        return 
1

public 
OnPlayerStreamIn(playeridforplayerid

        return 
1

public 
OnPlayerStreamOut(playeridforplayerid

        return 
1

public 
OnVehicleStreamIn(vehicleidforplayerid

        return 
1

public 
OnVehicleStreamOut(vehicleidforplayerid

        return 
1

public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[]) 

    switch( 
dialogid 
    { 
        case 
DIALOG_REGISTER
        { 
            if (!
response) return Kick(playerid); 
            if(
response
            { 
                if(!
strlen(inputtext)) return ShowPlayerDialog(playeridDIALOG_REGISTERDIALOG_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_Close(File); 
                
SetSpawnInfo(playerid001958.331343.1215.36269.15000000); 
                
SpawnPlayer(playerid); 
                
ShowPlayerDialog(playeridDIALOG_SUCCESS_1DIALOG_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(playeridPlayerInfo[playerid][pCash]); 
                                        
ShowPlayerDialog(playeridDIALOG_SUCCESS_2DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"You have successfully logged in!","Ok",""); 
                } 
                else 
                { 
                    
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_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
            } 
        } 
    } 
    return 
1

public 
OnPlayerClickPlayer(playeridclickedplayeridsource

        return 
1

Reply
#2

Could you try printing the value of the password loaded from the account's file when you login? I figure it has something to do with the fact that you try to load it as an integer, while it is a string.
Reply
#3

this problem is only when i Start Server In Windows , in linux gamemodes work good
Reply
#4

PHP код:
INI_Int("Password",PlayerInfo[playerid][pPass]); 
- to -
PHP код:
INI_String("Password"PlayerInfo[playerid][pPass],129); 
______________
PHP код:
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra true, .extra playerid); 
- to -
PHP код:
INI_ParseFile(UserPath(playerid), "LoadUser_data", .bExtra true, .extra playerid, .bPassTag true); 
______________
PHP код:
forward LoadUser_data(playerid,name[],value[]);  
public 
LoadUser_data(playerid,name[],value[]) 
- to -
PHP код:
forward LoadUser_data(playeridtag[], name[], value[]);
public 
LoadUser_data(playeridtag[], name[], value[]) 
Then try again and inform us if its working or no.
Reply
#5

1nspire, There's a lot of wrong things with yours.

____________________
PHP код:
new str[128]; 
INI_String("Password"PlayerInfo[playerid][pPass],129); 
to
PHP код:
INI_String("Password"PlayerInfo[playerid][pPass], 128); 
____________________
PHP код:
INI_ParseFile(UserPath(playerid), "LoadUser_user", .bExtra true, .extra playerid, .bPassTag true); 
to
PHP код:
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra true, .extra playerid); //This will load all forwards named LoadUser_* 
____________________
PHP код:
forward LoadUser_data(playeridtag[], name[], value[]); 
public 
LoadUser_data(playeridtag[], name[], value[]) 
to
PHP код:
forward LoadUser_data(playeridname[], value[]); 
public 
LoadUser_data(playeridname[], value[])   // data here mean the tag. 
____________________
Please test your code before helping someone.
there's %s and _data for a reason.
Reply
#6

Quote:
Originally Posted by Meller
Please test your code before helping someone.
there's %s and _data for a reason.
The code is tested and working like a charm, I had the same problem as him and this fixed it for me.
Please, test my code before judging.
Reply


Forum Jump:


Users browsing this thread: