Dcmd_Login
#1

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
Reply
#2

I take it nobody wants to help
Reply
#3

Dunno
Try
if(strcmp(PassCheck, buf, true) == 0)
really dunno, but try
Reply
#4

Doesn't work
Reply
#5

Help
Reply
#6

Nobody want's to help
Reply
#7

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
Reply
#8

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
Reply
#9

you were suppose to change all this in the login CMD -_-
Reply
#10

I did
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)