[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
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;
}
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;
}
|
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) |
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);
}
}