Halp plz (login/register issue)
#1

ok i needs some halp. it has been awhile since i asked for halp but i am stumped. My users are having trouble logging in, it is saying unknown command for them (returning 0 somewhere?).

Crashdetect:
Код:
[11:29:58] [debug] Run time error 4: "Array index out of bounds"
[11:29:58] [debug]  Accessing element at negative index -1
[11:29:58] [debug] AMX backtrace:
[11:29:58] [debug] #0 0003973c in ?? () from cnr.amx
[11:29:58] [debug] #1 00030408 in public cmd_login () from cnr.amx
[11:29:58] [debug] #2 000011c4 in public OnPlayerCommandText () from cnr.amx
pawn /login code:
Код:

CMD:login(playerid,params[])
{
	if(Players[playerid][Logged] == true) return SendClientMessage(playerid,COLOR_RED,"You are already logged in.");
	new pass[60];
	if (sscanf(params, "s[60]",pass)) return SendClientMessage(playerid,COLOR_RED,"Usage: /login <password>");
	new name[21];
	new str[150];
	GetPlayerName(playerid,name,sizeof(name));
	format(str, sizeof(str), "SELECT * FROM `users` WHERE `Name` = '%s'", name); //Checks if the players IP is the same, if so it will auto login :)
	mysql_query(str); //Queries the result
	mysql_store_result(); //Stores the result
	if(mysql_num_rows() == 0) return SendClientMessage(playerid,COLOR_RED,"* You are not registered! /register <password>");
    mysql_free_result();
 	format(str, sizeof(str), "SELECT * FROM `users` WHERE `Name` = '%s' AND `password` = md5('%s')",name,pass);
	mysql_query(str); //Queries the result
	mysql_store_result(); //Stores the result
	if(mysql_num_rows() != 0) // login!
	{
		mysql_free_result();
		Login(playerid);
		SendClientMessage(playerid,COLOR_GREEN,"ACCOUNT: Successfully Logged In");
  	}	else return SendClientMessage(playerid,COLOR_RED,"* Invalid Password! Try Again!");
	return 1;
}
Login()

Код:
stock Login(playerid)
{
	new name[21] ,ip[16];
	new str[150];
	GetPlayerName(playerid,name,sizeof(name));
	format(str, sizeof(str), "SELECT * FROM `users` WHERE `Name` = '%s'", name); //Checks if the players IP is the same, if so it will auto login :)
	mysql_query(str);
	mysql_store_result();
	new tv,td;
	if(mysql_fetch_row_format(str,"|")) //Fetches the line
	{

			new nm2[21];
			new tmppass[80],tmpip[20];
			//print(str);
			//Players[playerid][LoanAmount],Players[playerid][Deliveries],Players[playerid][MyHouse]
	 		sscanf(str, "p<|>s[21]s[80]s[20]dddddddddddddd",nm2,tmppass,tmpip,Players[playerid][Cash],Players[playerid][AdminLvl],Players[playerid][Banked],Players[playerid][Robberys],Players[playerid][Fish],Players[playerid][LoanAmount],Players[playerid][Deliverys],Players[playerid][MyHouse],Players[playerid][Score],Players[playerid][MyBiggestFish],Players[playerid][Rapes],tv,td,Players[playerid][RentPayments]);
			SetPlayerCash(playerid,Players[playerid][Cash]);
			SetPlayerScore(playerid,Players[playerid][Score]);
			if(tv == 0) Players[playerid][HasFishingPermit] = false; else Players[playerid][HasFishingPermit] = true;
			if(td == 0) Players[playerid][HasWeaponLic] = false; else Players[playerid][HasWeaponLic] = true;
	}

	mysql_free_result();

	GetPVarString(playerid,"IP",ip,16);

	format(str, sizeof(str), "UPDATE `users` SET `ip` = '%s' WHERE `Name` = '%s'",ip,name);
	mysql_query(str); //queries
	mysql_free_result();
	
	// house loading code
	//HUpgrades[playerid][0] = CreateDynamicObject(1481,1465.90002441,1905.09997559,11.10000038,0.00000000,0.00000000,0.00000000,0,0,playerid);
	if(Players[playerid][MyHouse] == -1)
	{
		new id = Players[playerid][MyHouse];
		if(Houses[id][HasUpgrade1] == true)
		{
		    HUpgrades[playerid][0] = CreateDynamicObject(1481,1465.90002441,1905.09997559,11.10000038,0.00000000,0.00000000,0.00000000,0,0,playerid);
		}
	
	}
	
	Players[playerid][Logged] = true;
}
i made this thread very colorful so please help if you can. if you need any additional code please ask.
Reply
#2

show 'Login()' stock

anyway , you can make crashdetect plugin show the exact line of the error , by doing what is mentioned here (http://forum.sa-mp.com/showpost.php?...32&postcount=7)
Reply
#3

Quote:
Originally Posted by HuSs3n
Посмотреть сообщение
show 'Login()' stock

anyway , you can make crashdetect plugin show the exact line of the error , by doing what is mentioned here (http://forum.sa-mp.com/showpost.php?...32&postcount=7)
updated original post. and i tried doing that with crashdetect, didn't show anything different.
Reply
#4

Here is your problem
Код:
	if(Players[playerid][MyHouse] == -1)
	{
		new id = Players[playerid][MyHouse];
		if(Houses[id][HasUpgrade1] == true)
		{
		    HUpgrades[playerid][0] = CreateDynamicObject(1481,1465.90002441,1905.09997559,11.10000038,0.00000000,0.00000000,0.00000000,0,0,playerid);
		}
	
	}
id is equal to -1
you cant have -> Houses[-1][HasUpgrade1]
that will give (negative index -1) error
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)