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