Dcmd_Login -
Tessar - 12.12.2010
Hey guys,
I have made a dcmd_login command and have found out that I can log in with any password on my account. Can somebody help me fix this.
Dcmd Register and Login command
Код:
dcmd_register(playerid, params[])
{
new pName[24], pFile[50], plrIP[50];
GetPlayerName(playerid, pName, sizeof(pName));
format(pFile, sizeof(pFile), "/Tsystem/Users/%s.ini", pName);
GetPlayerIp(playerid, plrIP, sizeof(plrIP));
if(dini_Exists(pFile))
{
SendClientMessage(playerid, COLOR_GRAD1, "You have already registered! Please use /login to login or choose another nickname.");
}
if(!dini_Exists(pFile))
{
if (!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /register [password]");
new buf[145];
WP_Hash(buf, sizeof(buf), params);
dini_Create(pFile);
dini_Set(pFile, "Password", buf);
dini_IntSet(pFile, "AdminLevel", 0);
dini_IntSet(pFile, "Deaths", 0);
dini_IntSet(pFile, "Kills", 0);
dini_IntSet(pFile, "Swat", 0);
dini_IntSet(pFile, "Money",500);
dini_IntSet(pFile, "Score",1);
dini_Set(pFile, "PlayerIP", plrIP);
SendClientMessage(playerid, COLOR_ORANGE, "You have succesfully registered.");
SendClientMessage(playerid, COLOR_ORANGE, "Please use /login to login!");
PlayerInfo[playerid][Registered] = 1;
PlayerInfo[playerid][LoggedIn] = 0;
gPlayerLogged[playerid] = 0;
OnlineTimer[playerid] = SetTimerEx("OnlineTime",60000,true,"i",playerid);
}
return 1;
}
dcmd_login(playerid, params[])
{
new pName[24], pFile[128], Pass[256], plrIP[50];
GetPlayerName(playerid, pName, sizeof(pName));
format(pFile, sizeof(pFile), "/Tsystem/Users/%s.ini", pName);
if(PlayerInfo[playerid][LoggedIn] == 1)
{
SendClientMessage(playerid, COLOR_LIGHTGREEN, "You are already logged in!");
return 1;
}
if(PlayerInfo[playerid][Registered] == 0)
{
SendClientMessage(playerid, COLOR_YELLOW, "You are not registered! Use /register to register.");
return 1;
}
if(sscanf(params, "s", Pass))
{
SendClientMessage(playerid, COLOR_WHITE, "Usage: /login [password]");
return 1;
}
Pass = dini_Get(pFile, "Password");
new buf[145];
WP_Hash(buf, sizeof(buf), params);
new PassCheck[145];
if(strcmp(PassCheck, buf, false) == 0)
{
new str[128];
GetPlayerIp(playerid, plrIP, sizeof(plrIP));
dini_Set(pFile, "PlayerIP", plrIP);
if (PlayerInfo[playerid][AdminLevel] == 0)
{
format(str, sizeof str, "%s you have been succesfully logged in!",pName);
SendClientMessage(playerid, COLOR_YELLOW, str);
}
if (PlayerInfo[playerid][AdminLevel] > 1)
{
format(str, sizeof str, "%s you have been succesfully logged in, Admin-level: %d",pName, PlayerInfo[playerid][AdminLevel]);
SendClientMessage(playerid, COLOR_LIGHTRED, str);
SendClientMessage(playerid, COLOR_GREEN,"Your an admin. We hope you wont hack!");
}
PlayerInfo[playerid][LoggedIn] = 1;
PlayerInfo[playerid][AdminLevel] = dini_Int(pFile, "AdminLevel");
PlayerInfo[playerid][Kills] = dini_Int(pFile, "Kills");
PlayerInfo[playerid][Deaths] = dini_Int(pFile, "Deaths");
PlayerInfo[playerid][SwatRights] = dini_Int(pFile, "SwatRights");
PlayerInfo[playerid][ArmyRights] = dini_Int(pFile, "ArmyRights");
PlayerInfo[playerid][Jailed] = dini_Int(pFile, "Jailed");
PlayerInfo[playerid][Warned] = dini_Int(pFile, "Warned");
PlayerInfo[playerid][Kicked] = dini_Int(pFile, "Kicked");
PlayerInfo[playerid][Banned] = dini_Int(pFile, "Banned");
PlayerInfo[playerid][MinutesOnline] = dini_IntSet(pFile,"MinutesOnline",0);
PlayerInfo[playerid][HoursOnline] = dini_IntSet(pFile,"HoursOnline",0);
SetPlayerScore(playerid, PlayerInfo[playerid][Score]);
GivePlayerMoney(playerid, dini_Int(pFile,"Money")-GetPlayerMoney(playerid));
PlayerInfo[playerid][Registered] = 1;
PlayerInfo[playerid][LoggedIn] = 1;
}
else
{
new str[128];
WrongPassword[playerid]++;
if(WrongPassword[playerid] >= 3)
{
new year, month, day; getdate(year, month, day);
new hour, minute, second; gettime(hour, minute, second);
new str2[128], string[128];
format(str2, sizeof(str2), "* %s got kicked: Failed to login.", pName);
SendClientMessageToAll(COLOR_LIGHTRED, str2);
Kick(playerid);
new File:KickFile = fopen("Tsystem/Users/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/ You have 3 tries left.", WrongPassword[playerid]);
SendClientMessage(playerid, COLOR_LIGHTRED, str);
OnlineTimer[playerid] = SetTimerEx("OnlineTime",60000,true,"i",playerid);
}
return 1;
}
Would be great to get this fixed
Re: Dcmd_Login -
Tessar - 13.12.2010
I take it nobody wants to help
Re: Dcmd_Login -
Mean - 13.12.2010
Dunno
Try
if(strcmp(PassCheck, buf, true) == 0)
really dunno, but try
Re: Dcmd_Login -
Tessar - 13.12.2010
Doesn't work
Re: Dcmd_Login -
Tessar - 14.12.2010
Help
Re: Dcmd_Login -
Tessar - 15.12.2010
Nobody want's to help
Re: Dcmd_Login -
XePloiT - 15.12.2010
pawn Код:
change this line
if(sscanf(params, "s", Pass))
to this:
if(sscanf(params, "s[128]", Pass))
//---------
This:
Pass = dini_Get(pFile, "Password");
To This:
format(Pass,sizeof(Pass),"%s",dini_Get(pFile, "Password"));
//-------
This:
if(strcmp(PassCheck, buf, false) == 0)
To This:
if(!strcmp(Pass,buf,true))
EDIT: try this
Re: Dcmd_Login -
Tessar - 15.12.2010
I got four errors.
Errors:
Код:
(1422) : error 017: undefined symbol "Pass"
(1422) : error 017: undefined symbol "Pass"
(1422) : error 029: invalid expression, assumed zero
(1422) : fatal error 107: too many error messages on one line
Code:
Код:
dcmd_register(playerid, params[])
{
new pName[24], pFile[50], plrIP[50];
GetPlayerName(playerid, pName, sizeof(pName));
format(pFile, sizeof(pFile), "/Tsystem/Users/%s.ini", pName);
GetPlayerIp(playerid, plrIP, sizeof(plrIP));
if(dini_Exists(pFile))
{
SendClientMessage(playerid, COLOR_GRAD1, "You have already registered! Please use /login to login or choose another nickname.");
}
if(!dini_Exists(pFile))
{
if (!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /register [password]");
new buf[145];
WP_Hash(buf, sizeof(buf), params);
dini_Create(pFile);
format(Pass,sizeof(Pass),"%s",dini_Get(pFile, "Password"));
dini_IntSet(pFile, "AdminLevel", 0);
dini_IntSet(pFile, "Deaths", 0);
dini_IntSet(pFile, "Kills", 0);
dini_IntSet(pFile, "Swat", 0);
dini_IntSet(pFile, "Money",500);
dini_IntSet(pFile, "Score",1);
dini_Set(pFile, "PlayerIP", plrIP);
SendClientMessage(playerid, COLOR_ORANGE, "You have succesfully registered.");
SendClientMessage(playerid, COLOR_ORANGE, "Please use /login to login!");
PlayerInfo[playerid][Registered] = 1;
PlayerInfo[playerid][LoggedIn] = 0;
gPlayerLogged[playerid] = 0;
OnlineTimer[playerid] = SetTimerEx("OnlineTime",60000,true,"i",playerid);
}
return 1;
}
dcmd_login(playerid, params[])
{
new pName[24], pFile[128], Pass[256], plrIP[50];
GetPlayerName(playerid, pName, sizeof(pName));
format(pFile, sizeof(pFile), "/Tsystem/Users/%s.ini", pName);
if(PlayerInfo[playerid][LoggedIn] == 1)
{
SendClientMessage(playerid, COLOR_LIGHTGREEN, "You are already logged in!");
return 1;
}
if(PlayerInfo[playerid][Registered] == 0)
{
SendClientMessage(playerid, COLOR_YELLOW, "You are not registered! Use /register to register.");
return 1;
}
if(sscanf(params, "s[128]", Pass))
{
SendClientMessage(playerid, COLOR_WHITE, "Usage: /login [password]");
return 1;
}
Pass = dini_Get(pFile, "Password");
new buf[145];
WP_Hash(buf, sizeof(buf), params);
new PassCheck[145];
if(!strcmp(PassCheck,buf,true))
{
new str[128];
GetPlayerIp(playerid, plrIP, sizeof(plrIP));
dini_Set(pFile, "PlayerIP", plrIP);
if (PlayerInfo[playerid][AdminLevel] == 0)
{
format(str, sizeof str, "%s you have been succesfully logged in!",pName);
SendClientMessage(playerid, COLOR_YELLOW, str);
}
if (PlayerInfo[playerid][AdminLevel] > 1)
{
format(str, sizeof str, "%s you have been succesfully logged in, Admin-level: %d",pName, PlayerInfo[playerid][AdminLevel]);
SendClientMessage(playerid, COLOR_LIGHTRED, str);
SendClientMessage(playerid, COLOR_GREEN,"Your an admin. We hope you wont hack!");
}
PlayerInfo[playerid][LoggedIn] = 1;
PlayerInfo[playerid][AdminLevel] = dini_Int(pFile, "AdminLevel");
PlayerInfo[playerid][Kills] = dini_Int(pFile, "Kills");
PlayerInfo[playerid][Deaths] = dini_Int(pFile, "Deaths");
PlayerInfo[playerid][SwatRights] = dini_Int(pFile, "SwatRights");
PlayerInfo[playerid][Jailed] = dini_Int(pFile, "Jailed");
PlayerInfo[playerid][Warned] = dini_Int(pFile, "Warned");
PlayerInfo[playerid][Kicked] = dini_Int(pFile, "Kicked");
PlayerInfo[playerid][Banned] = dini_Int(pFile, "Banned");
PlayerInfo[playerid][MinutesOnline] = dini_IntSet(pFile,"MinutesOnline",0);
PlayerInfo[playerid][HoursOnline] = dini_IntSet(pFile,"HoursOnline",0);
SetPlayerScore(playerid, PlayerInfo[playerid][Score]);
GivePlayerMoney(playerid, dini_Int(pFile,"Money")-GetPlayerMoney(playerid));
PlayerInfo[playerid][Registered] = 1;
PlayerInfo[playerid][LoggedIn] = 1;
}
else
{
new str[128];
WrongPassword[playerid]++;
if(WrongPassword[playerid] >= 3)
{
new year, month, day; getdate(year, month, day);
new hour, minute, second; gettime(hour, minute, second);
new str2[128], string[128];
format(str2, sizeof(str2), "* %s was kicked: Failed to login.", pName);
SendClientMessageToAll(COLOR_LIGHTRED, str2);
Kick(playerid);
new File:KickFile = fopen("Tsystem/Users/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/ You have 3 tries left.", WrongPassword[playerid]);
SendClientMessage(playerid, COLOR_LIGHTRED, str);
OnlineTimer[playerid] = SetTimerEx("OnlineTime",60000,true,"i",playerid);
}
return 1;
}
Line 1422: format(Pass,sizeof(Pass),"%s",dini_Get(pFile, "Password"));
Help
Re: Dcmd_Login -
XePloiT - 15.12.2010
you were suppose to change all this in the login CMD -_-
Re: Dcmd_Login -
Tessar - 15.12.2010
I did