16.10.2012, 21:10
(
Последний раз редактировалось CJ101; 16.10.2012 в 22:00.
)
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:
pawn /login code:
Login()
i made this thread very colorful so please help if you can. if you need any additional code please ask.
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
Код:
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; }