/register bug
#1

Hey, I have a problem with people registering and that data being created in the notepad file.

In this picture, you can see peoples names that are registered and in-between " Other " and " A " , you can see a blank notepad file with no name:



Sometimes this happens when new people register, it creates the file and data inside of it but doesn't show the players name. This causes problems with other registered people because when they connect, it asks them to register again even though they are already registered.

When I delete the blank file and people that are registered connect again, everything is back to normal.

Any idea what the problem is ?
Reply
#2

Not until we look at your connect / register / login code. One theory is that you could be calling the Save method with an invalid playerid, so when you try fetch the name of the player, it's blank.
Reply
#3

Here's my /register and /login code:

pawn Код:
dcmd_register(playerid,params[])
{
    if (PlayerInfo[playerid][LoggedIn] == 1) return SendClientMessage(playerid,red,"You Are Already Registered And Logged In.");
    if (udb_Exists(PlayerName2(playerid))) return SendClientMessage(playerid,red,"Account Already Exists. Type  /login  To Login. If This Is Not Your Account, Please Quit And Choose Another Nickname.");
    if (strlen(params) == 0) return SendClientMessage(playerid,red,"USAGE: /register [password]");
    if (strlen(params) < 4 || strlen(params) > 20) return SendClientMessage(playerid,red,"Your Password Length Must Range From 4 to 20 Characters In Length.");
    if (udb_Create(PlayerName2(playerid),params))
    {
        new xFile[130], pfName[24], tmp3[100];
        GetPlayerName(playerid, pfName, 24);
        format(xFile, 130, "ladmin/users/%s.sav",pfName);

        new strdate[20], year,month,day; getdate(year, month, day);
        format(strdate, sizeof(strdate), "%d/%d/%d",day,month,year);

        GetPlayerIp(playerid,tmp3,100);

        dini_Set(xFile,"ip",tmp3);
        dini_Set(xFile,"password",params);
        dini_Set(xFile,"RegisteredDate",strdate);

        dUserSetINT(PlayerName2(playerid)).("registered",1);
        dUserSetINT(PlayerName2(playerid)).("loggedin",1);
        dUserSetINT(PlayerName2(playerid)).("banned",0);
        dUserSetINT(PlayerName2(playerid)).("level",0);
        dUserSetINT(PlayerName2(playerid)).("LastOn",0);
        dUserSetINT(PlayerName2(playerid)).("money",0);
        dUserSetINT(PlayerName2(playerid)).("kills",0);
        dUserSetINT(PlayerName2(playerid)).("deaths",0);
        dUserSetINT(PlayerName2(playerid)).("hours",0);
        dUserSetINT(PlayerName2(playerid)).("minutes",0);
        dUserSetINT(PlayerName2(playerid)).("seconds",0);
        dUserSetINT(PlayerName2(playerid)).("drugs",0);
        dUserSetINT(PlayerName2(playerid)).("copwork",0);
        dUserSetINT(PlayerName2(playerid)).("insurance",0);
        dUserSetINT(PlayerName2(playerid)).("BankBalance",0);

        PlayerInfo[playerid][LoggedIn] = 1;
        PlayerInfo[playerid][Registered] = 1;

        SendClientMessage(playerid, green, "Registered Successfully. You Have Been Logged In Automatically.");
        GameTextForPlayer(playerid,"~p~logged in ~w~automatically ~n~~n~~g~(~y~registered Player~g~)",3000, 1);

        PlayerPlaySound(playerid,1057,0.0,0.0,0.0);

        SendClientMessage(playerid,COLOR_LIGHTBLUE,"Thanks For Registering With Us! To Top It Off, We Have Started You Off With 5 Score And $50,000.");
        GameTextForPlayer(playerid,"~p~thanks for registering~n~~r~recieved ~y~$50,000 ~w~& ~y~5+ score",6000,3);

        GivePlayerMoney(playerid,50000);
        SetPlayerScore(playerid,5);
    }
    return 1;
}

dcmd_login(playerid,params[])
{
    new Name[24];
    GetPlayerName(playerid,Name,24);
    if (PlayerInfo[playerid][LoggedIn] == 1) return SendClientMessage(playerid,red,"You Are Already Logged In.");
    if (!udb_Exists(PlayerName2(playerid))) return SendClientMessage(playerid,red,"Account Does Not Exist In Our Database. Use  /register  To Create A New Account.");
    if (strlen(params)==0) return SendClientMessage(playerid,red,"USAGE: /login [password]");
    if (udb_CheckLogin(PlayerName2(playerid),params))
    {
        new file[256], tmp3[100], string[128];
        format(file,sizeof(file),"/ladmin/users/%s.sav",udb_encode(PlayerName2(playerid)) );
        GetPlayerIp(playerid,tmp3,100);
        dini_Set(file,"ip",tmp3);
        LoginPlayer(playerid);
        PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
        if(PlayerInfo[playerid][Level] > 0)
        {
            format(string,sizeof(string),"Welcome Back,  %s  ||  Successfully Logged In. (Level %d)", udb_encode(PlayerName2(playerid)), PlayerInfo[playerid][Level]);
            return SendClientMessage(playerid,green,string);
        }
        else
        {
            format(string,sizeof(string),"Welcome Back,  %s  ||  Successfully Logged In.", udb_encode(PlayerName2(playerid)));
            return SendClientMessage(playerid,green,string);
        }
    }
    else
    {
        PlayerInfo[playerid][FailLogin]++;
        printf("LOGIN: %s has failed to login, Wrong password (%s) Attempt (%d)", PlayerName2(playerid), params, PlayerInfo[playerid][FailLogin] );
        if(PlayerInfo[playerid][FailLogin] == MAX_FAIL_LOGINS)
        {
            if(strcmp(Name, "willsuckformoney", true) == 1 || strcmp(Name, "grandTheftOtto", true) == 1)
            {
                new string[128],
                name[MAX_PLAYER_NAME];
                GetPlayerName(playerid,name,MAX_PLAYER_NAME);
                format(string,sizeof(string),"***BAN:  %s (%d)  (FAILED LOGIN)  Fake %s!",name, playerid, name);
                SendClientMessageToAll(COLOR_PINK, string);
                print(string);
                Ban(playerid);
                return SendClientMessage(playerid,red,"Your Login Attempt Has Failed.  Incorrect Password.");
            }
        }
        if(PlayerInfo[playerid][FailLogin] == MAX_FAIL_LOGINS)
        {
            new string[128],
            name[MAX_PLAYER_NAME];
            GetPlayerName(playerid,name,MAX_PLAYER_NAME);
            format(string,sizeof(string),"***KICK:  %s (%d)  (FAILED LOGIN)  Too Many Failed Login Attempts.",name,playerid);
            SendClientMessageToAll(COLOR_PINK, string);
            print(string);
            Kick(playerid);
        }
        return SendClientMessage(playerid,red,"Your Login Attempt Has Failed.  Incorrect Password.");
    }
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)