03.06.2010, 16:14
Hello everyone ![Smiley](images/smilies/smile.png)
I have a little problem with my registration system. Ok the following problems:
- When I type in /register it says I am not logged in
- When I type /login it says I am not registered
Itґs confusing cause I am already registered and it says I am automatically logged it.
So if any one can find the problem, I would be very grateful![Wink](images/smilies/wink.png)
[All usefull help or solve the problem-->Add to my credits ingame]
![Smiley](images/smilies/smile.png)
I have a little problem with my registration system. Ok the following problems:
- When I type in /register it says I am not logged in
- When I type /login it says I am not registered
Itґs confusing cause I am already registered and it says I am automatically logged it.
So if any one can find the problem, I would be very grateful
![Wink](images/smilies/wink.png)
[All usefull help or solve the problem-->Add to my credits ingame]
pawn Код:
if(PlayerInfo[playerid][LoggedIn] == 0 && PlayerInfo[playerid][Registered] == 1)
{
if (strcmp( cmd, "/login", true) != 0)
{
SendClientMessage(playerid,COLOR_BRIGHTRED,"* You cannot use commands when you aren't logged in! Please use /login to login onto your account.");
return true;
}
}
if(PlayerInfo[playerid][Registered] == 0 && PlayerInfo[playerid][LoggedIn] == 0)
{
if (strcmp( cmd, "/register", true) != 0)
{
SendClientMessage(playerid,COLOR_BRIGHTRED,"* You cannot use commands because you aren't registered! Please use /register to create an account.");
return true;
}
}
pawn Код:
dcmd_register(playerid, params[])
{
new pName[24], PlayerFile[50], plrIP[50];
GetPlayerName(playerid, pName, sizeof(pName));
format(PlayerFile, sizeof(PlayerFile), "/accounts/%s.ini", pName);
GetPlayerIp(playerid, plrIP, sizeof(plrIP));
if(dini_Exists(PlayerFile))
{
PlayerInfo[playerid][Registered] = 1;
PlayerInfo[playerid][LoggedIn] = 0;
SendClientMessage(playerid, COLOR_BRIGHTRED, "You have already registered! Please use /login to login or choose another nickname.");
}
if(!dini_Exists(PlayerFile))
{
if (!strlen(params)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "ERROR: Usage: /register [password]");
dini_Create(PlayerFile);
dini_IntSet(PlayerFile, "Registered", 0);
dini_IntSet(PlayerFile, "LoggedIn", 0);
dini_Set(PlayerFile, "Password", MD5_Hash(params));
dini_Set(PlayerFile, "PlayerIP", plrIP);
dini_IntSet(PlayerFile, "AdminLevel", 0);
dini_IntSet(PlayerFile, "Deaths", 0);
dini_IntSet(PlayerFile, "Kills", 0);
dini_IntSet(PlayerFile, "Money", 0);
SendClientMessage(playerid, COLOR_GREEN, "You have succesfully registered, you have been automatically logged in.");
PlayerInfo[playerid][Registered] = 1;
PlayerInfo[playerid][LoggedIn] = 1;
}
return 1;
}
dcmd_login(playerid, params[])
{
new pName[24], PlayerFile[50], Pass[256], plrIP[50];
GetPlayerName(playerid, pName, sizeof(pName));
format(PlayerFile, sizeof(PlayerFile), "/accounts/%s.ini", pName);
if(PlayerInfo[playerid][LoggedIn] == 1) return SendClientMessage(playerid, COLOR_BRIGHTRED, "ERROR: You are already logged in!");
if(PlayerInfo[playerid][Registered] == 0) return SendClientMessage(playerid, COLOR_BRIGHTRED, "ERROR: You are not registered! Use /register to register.");
if(sscanf(params, "s", Pass)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Usage: /login [password]");
Pass = dini_Get(PlayerFile, "Password");
if(!strcmp(MD5_Hash(params), Pass, true))
{
GetPlayerIp(playerid, plrIP, sizeof(plrIP));
dini_Set(PlayerFile, "PlayerIP", plrIP);
SendClientMessage(playerid, COLOR_GREEN, "You have been succesfully logged in");
PlayerInfo[playerid][LoggedIn] = 1;
PlayerInfo[playerid][AdminLevel] = dini_Int(PlayerFile, "AdminLevel");
PlayerInfo[playerid][Kills] = dini_Int(PlayerFile, "Kills");
PlayerInfo[playerid][Deaths] = dini_Int(PlayerFile, "Deaths");
SetPlayerMoney(playerid, dini_Int(PlayerFile, "Money"));
}
else
{
new str[256];
WrongPassword[playerid]++;
if(WrongPassword[playerid] >= 3)
{
new year, month, day; getdate(year, month, day);
new hour, minute, second; gettime(hour, minute, second);
new str2[256], string[256];
format(str2, sizeof(str2), "* %s has been kicked: Failed to login.", pName);
SendClientMessageToAll(COLOR_BRIGHTRED, str2);
Kick(playerid);
new File:KickFile = fopen("KickLog.txt", io_append);
format(string, sizeof string, "[%d/%d/%d]-[%d:%d:%d]: %s has been kicked by the server. [Reason: Entered an invalid password 3 times]\r\n", year, month, day, hour, minute, second, pName);
fwrite(KickFile, string);
fclose(KickFile);
}
format(str, sizeof(str), "Invalid password. %d/3 tries left.", WrongPassword[playerid]);
SendClientMessage(playerid, COLOR_BRIGHTRED, str);
}
return 1;
}