SA-MP Forums Archive
Help with my Register system - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Help Archive (https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: Help with my Register system (/showthread.php?tid=170137)



Help with my Register system - mrcoolballs - 22.08.2010

I can register and login the first time just fine, but when i log in for a second time it will say, you are not registered, and when i type /register it says i am registered, and when i type login, it says im not registered, what is wrong?

OnPlayerConnect:
Код:
public OnPlayerConnect(playerid)
{
	Regged[playerid] = 0;
	Logged[playerid] = 0;
	new user[MAX_PLAYER_NAME];
	GetPlayerName(playerid, user, MAX_PLAYER_NAME);
	format(user, sizeof(user), "Reg/Users/%s.txt", user);
	if(dini_Exists(user))
	{
		Regged[playerid] = 1;
		Logged[playerid] = 0;
		SendClientMessage(playerid,GREEN,"You are Registered, Please /login <PASSWORD>");
	}
	else
	{
	    SendClientMessage(playerid,GREEN,"You are not Registered, please /register <PASSWORD>");
		return 1;
	}
	return 1;
}
/register
Код:
if(strcmp(cmd,"/register",true) == 0)
	{
		new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(Logged[playerid] == 1)
		{
			SendClientMessage(playerid,GREEN,"You are already logged in!");
			return 1;
		}
	 	
		if(!strlen(tmp))
		{
		    SendClientMessage(playerid,GREEN,"USAGE: /Register <PASSWORD>");
		    return 1;
		}
		new file[256];
		new name[MAX_PLAYER_NAME];
		GetPlayerName(playerid,name,MAX_PLAYER_NAME);
		format(file,sizeof(file),"Reg/Users/%s.txt",name);
		if(dini_Exists(file))
		{
			SendClientMessage(playerid,GREEN,"This account is already registered, please use /login");
		}
		else
		{
		    dini_Create(file);
		    dini_Set(file,"Password",tmp);
		    dini_IntSet(file,"Registered",1);
		    Regged[playerid] = 1;
		    SendClientMessage(playerid,GREEN,"You have succesfully registered, now /login!");
			return 1;
		}
		return 1;
	}
/login

Код:
if(strcmp(cmd,"/login",true) == 0)
	{
		new tmp[256];
		new tmp2[256];
		new file[256];
		new name[MAX_PLAYER_NAME];
		GetPlayerName(playerid,name,MAX_PLAYER_NAME);
		tmp = strtok(cmdtext, idx);
		if(Logged[playerid] == 1)
		{
			SendClientMessage(playerid,GREEN,"You are already registered!");
			return 1;
		}
		if(Regged[playerid] == 0)
		{
			SendClientMessage(playerid,GREEN,"You are not registered, please /register");
			return 1;
		}
		if(!strlen(tmp))
		{
			SendClientMessage(playerid,GREEN,"USAGE: /Login <PASSWORD>");
			return 1;
		}
		format(file,sizeof(file),"Reg/Users/%s.txt",name);

		if(!dini_Exists(file)) 
		{
			SendClientMessage(playerid,GREEN,"You are not registered, please type /register");
			return 1;
		}
		tmp2 = dini_Get(file,"Password");
		if(strcmp(tmp,tmp2,false) != 0)
		{
			SendClientMessage(playerid,GREEN,"You entered an invalid password!");
		}
		else 
		{
		    Logged[playerid] = 1;
		    SendClientMessage(playerid,GREEN,"You have now Logged in");
		    return 1;
		}
		return 1;
}
anyone know?


Re: Help with my Register system - dax123 - 22.08.2010

Quote:
Originally Posted by mrcoolballs
Посмотреть сообщение
I can register and login the first time just fine, but when i log in for a second time it will say, you are not registered, and when i type /register it says i am registered, and when i type login, it says im not registered, what is wrong?

OnPlayerConnect:
pawn Код:
public OnPlayerConnect(playerid)
{
    Regged[playerid] = 0;
    Logged[playerid] = 0;
    new user[MAX_PLAYER_NAME];
    GetPlayerName(playerid, user, MAX_PLAYER_NAME);
    format(user, sizeof(user), "Reg/Users/%s.txt", user);
    if(dini_Exists(user))
    {
        Regged[playerid] = 1;
        Logged[playerid] = 0;
        SendClientMessage(playerid,GREEN,"You are Registered, Please /login <PASSWORD>");
    }
    else
    {
        SendClientMessage(playerid,GREEN,"You are not Registered, please /register <PASSWORD>");
        return 1;
    }
    return 1;
}
/register
pawn Код:
if(strcmp(cmd,"/register",true) == 0)
    {
        new tmp[256];
        tmp = strtok(cmdtext, idx);
        if(Logged[playerid] == 1)
        {
            SendClientMessage(playerid,GREEN,"You are already logged in!");
            return 1;
        }
       
        if(!strlen(tmp))
        {
            SendClientMessage(playerid,GREEN,"USAGE: /Register <PASSWORD>");
            return 1;
        }
        new file[256];
        new name[MAX_PLAYER_NAME];
        GetPlayerName(playerid,name,MAX_PLAYER_NAME);
        format(file,sizeof(file),"Reg/Users/%s.txt",name);
        if(dini_Exists(file))
        {
            SendClientMessage(playerid,GREEN,"This account is already registered, please use /login");
        }
        else
        {
            dini_Create(file);
            dini_Set(file,"Password",tmp);
            dini_IntSet(file,"Registered",1);
            Regged[playerid] = 1;
            SendClientMessage(playerid,GREEN,"You have succesfully registered, now /login!");
            return 1;
        }
        return 1;
    }
/login

pawn Код:
if(strcmp(cmd,"/login",true) == 0)
    {
        new tmp[256];
        new tmp2[256];
        new file[256];
        new name[MAX_PLAYER_NAME];
        GetPlayerName(playerid,name,MAX_PLAYER_NAME);
        tmp = strtok(cmdtext, idx);
        if(Logged[playerid] == 1)
        {
            SendClientMessage(playerid,GREEN,"You are already registered!");
            return 1;
        }
        if(Regged[playerid] == 0)
        {
            SendClientMessage(playerid,GREEN,"You are not registered, please /register");
            return 1;
        }
        if(!strlen(tmp))
        {
            SendClientMessage(playerid,GREEN,"USAGE: /Login <PASSWORD>");
            return 1;
        }
        format(file,sizeof(file),"Reg/Users/%s.txt",name);

        if(!dini_Exists(file))
        {
            SendClientMessage(playerid,GREEN,"You are not registered, please type /register");
            return 1;
        }
        tmp2 = dini_Get(file,"Password");
        if(strcmp(tmp,tmp2,false) != 0)
        {
            SendClientMessage(playerid,GREEN,"You entered an invalid password!");
        }
        else
        {
            Logged[playerid] = 1;
            SendClientMessage(playerid,GREEN,"You have now Logged in");
            return 1;
        }
        return 1;
}
anyone know?
the /register command checks dini_Exists(file) first,
whereas /login command checks Regged[playerid]. maybe the problem comes from here.
I guess you have another functions like /logout or sump-thin' .

find the variable that modifies Regged[playerid] and check if the variable correctly syncs with registration.


PS when your nickname is with forbidden char