[00:10:10] [debug] Run time error 4: "Array index out of bounds" [00:10:10] [debug] Accessing element at index 12 past array upper bound 10 [00:10:10] [debug] AMX backtrace: [00:10:10] [debug] #0 0032c5c8 in ?? (0) from LG-RP.amx [00:10:10] [debug] #1 003175a4 in ?? (0, 0) from LG-RP.amx [00:10:10] [debug] #2 0013df08 in public cmd_stats (0, 34493368) from LG-RP.amx [00:10:10] [debug] #3 native CallLocalFunction () from samp-server.exe [00:10:10] [debug] #4 00006634 in public OnPlayerCommandText (0, 34493340) from LG-RP.amx
CMD:stats(playerid, params[]) { if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command."); ShowStats(playerid, playerid); return 1; }
stock ShowStats(playerid, playerb) { new string[256], gender[8]; // Gender if(PlayerInfo[playerb][pGender] == 1) format(gender, sizeof(gender), "Male"); else if(PlayerInfo[playerb][pGender] == 2) format(gender, sizeof(gender), "Female"); // Health and Armor new Float:HP,Float:Armor; GetPlayerHealth(playerb, HP); GetPlayerArmour(playerb, Armor); // Loyal new loyal[4]; if(!PlayerInfo[playerb][pLoyal]) format(loyal, sizeof(loyal), "Yes"); if(PlayerInfo[playerb][pLoyal]) format(loyal, sizeof(loyal), "No"); // Oldskool new oldskool[4]; if(PlayerInfo[playerb][pHours] >= 248) format(oldskool, sizeof(oldskool), "Yes"); else if(PlayerInfo[playerb][pHours] < 248) format(oldskool, sizeof(oldskool), "No"); //fac-fam rank new rank[128]; if(PlayerInfo[playerb][pFac] >= 1) format(rank, sizeof(rank), "%s", RPFRN(playerb)); else format(rank, sizeof(rank), "None"); //fac-fam new org[128]; if(PlayerInfo[playerb][pFac] >= 1) format(org, sizeof(org), "%s", RPFNEx(playerb)); else format(org, sizeof(org), "None"); // new rank2[128]; if(PlayerInfo[playerb][pFam] >=1) format(rank2, sizeof(rank2), "%s", RPFaRN(playerb)); else format(rank2, sizeof(rank2), "None"); //fac-fam new org2[128]; if(PlayerInfo[playerb][pFam] >=1) format(org2, sizeof(org2), "%s", RPFaN(playerb)); else format(org2, sizeof(org2), "None"); new exp = PlayerInfo[playerb][pExp]; new nxtlevel = PlayerInfo[playerb][pLevel]+1; new expamount = nxtlevel*4; //new costlevel = nxtlevel*4000;//10k for testing purposes //respect new respectneed[4]; if(PlayerInfo[playerb][pLevel] == 1) format(respectneed, sizeof(respectneed), "4"); else if(PlayerInfo[playerb][pLevel] == 2) format(respectneed, sizeof(respectneed), "8"); else if(PlayerInfo[playerb][pLevel] == 3) format(respectneed, sizeof(respectneed), "12"); else if(PlayerInfo[playerb][pLevel] == 4) format(respectneed, sizeof(respectneed), "16"); else if(PlayerInfo[playerb][pLevel] == 5) format(respectneed, sizeof(respectneed), "20"); else if(PlayerInfo[playerb][pLevel] == 6) format(respectneed, sizeof(respectneed), "24"); else if(PlayerInfo[playerb][pLevel] == 7) format(respectneed, sizeof(respectneed), "28"); else if(PlayerInfo[playerb][pLevel] == 8) format(respectneed, sizeof(respectneed), "32"); else if(PlayerInfo[playerb][pLevel] == 9) format(respectneed, sizeof(respectneed), "36"); else if(PlayerInfo[playerb][pLevel] == 10) format(respectneed, sizeof(respectneed), "40"); else if(PlayerInfo[playerb][pLevel] == 11) format(respectneed, sizeof(respectneed), "44"); else if(PlayerInfo[playerb][pLevel] == 12) format(respectneed, sizeof(respectneed), "48"); else if(PlayerInfo[playerb][pLevel] == 13) format(respectneed, sizeof(respectneed), "52"); else if(PlayerInfo[playerb][pLevel] == 14) format(respectneed, sizeof(respectneed), "56"); else if(PlayerInfo[playerb][pLevel] == 15) format(respectneed, sizeof(respectneed), "60"); else if(PlayerInfo[playerb][pLevel] == 16) format(respectneed, sizeof(respectneed), "64"); else if(PlayerInfo[playerb][pLevel] == 17) format(respectneed, sizeof(respectneed), "68"); else if(PlayerInfo[playerb][pLevel] == 18) format(respectneed, sizeof(respectneed), "72"); else if(PlayerInfo[playerb][pLevel] == 19) format(respectneed, sizeof(respectneed), "76"); else if(PlayerInfo[playerb][pLevel] == 20) format(respectneed, sizeof(respectneed), "80"); else if(PlayerInfo[playerb][pLevel] == 21) format(respectneed, sizeof(respectneed), "84"); else if(PlayerInfo[playerb][pLevel] == 22) format(respectneed, sizeof(respectneed), "88"); else if(PlayerInfo[playerb][pLevel] == 23) format(respectneed, sizeof(respectneed), "92"); else if(PlayerInfo[playerb][pLevel] == 24) format(respectneed, sizeof(respectneed), "96"); else if(PlayerInfo[playerb][pLevel] == 25) format(respectneed, sizeof(respectneed), "100"); else if(PlayerInfo[playerb][pLevel] == 26) format(respectneed, sizeof(respectneed), "104"); else if(PlayerInfo[playerb][pLevel] == 27) format(respectneed, sizeof(respectneed), "108"); else if(PlayerInfo[playerb][pLevel] == 28) format(respectneed, sizeof(respectneed), "112"); else if(PlayerInfo[playerb][pLevel] == 29) format(respectneed, sizeof(respectneed), "116"); else if(PlayerInfo[playerb][pLevel] == 30) format(respectneed, sizeof(respectneed), "120"); else if(PlayerInfo[playerb][pLevel] == 31) format(respectneed, sizeof(respectneed), "124"); else if(PlayerInfo[playerb][pLevel] == 32) format(respectneed, sizeof(respectneed), "128"); else if(PlayerInfo[playerb][pLevel] == 33) format(respectneed, sizeof(respectneed), "132"); else if(PlayerInfo[playerb][pLevel] == 34) format(respectneed, sizeof(respectneed), "136"); else if(PlayerInfo[playerb][pLevel] == 35) format(respectneed, sizeof(respectneed), "140"); else if(PlayerInfo[playerb][pLevel] == 36) format(respectneed, sizeof(respectneed), "144"); else if(PlayerInfo[playerb][pLevel] == 37) format(respectneed, sizeof(respectneed), "148"); else if(PlayerInfo[playerb][pLevel] == 38) format(respectneed, sizeof(respectneed), "152"); else if(PlayerInfo[playerb][pLevel] == 39) format(respectneed, sizeof(respectneed), "156"); else if(PlayerInfo[playerb][pLevel] == 40) format(respectneed, sizeof(respectneed), "160"); //new average = (PlayerInfo[playerb][pTMinutes] / PlayerInfo[playerb][pDay]); // Stats if(PlayerInfo[playerid][CardOwner]) { format(string, sizeof(string), " -- LG-RP Statistics of %s --", RPN(playerb)); SendClientMessage(playerid, COLOR_ORANGE, string); format(string, sizeof(string), "Level: [%d] - Gender: [%s] - Age: [%d] - Money: [$%d] - Bank: [$%d] - Health: [%.0f] - Armor: [%.0f]", PlayerInfo[playerb][pLevel], gender, PlayerInfo[playerb][pAge], PlayerInfo[playerb][pMoney], BankInfo[playerb][Balance], HP, Armor); SendClientMessage(playerid, COLOR_LIGHTRED, string); format(string, sizeof(string), "Phone Number: [%d] - Playing Hours: [%d] Next Level: [%d/%d] - Respect Points: [%d]", PlayerInfo[playerb][pNumber], PlayerInfo[playerb][pHours], exp, expamount, PlayerInfo[playerb][pExp]); SendClientMessage(playerid, COLOR_LIGHTRED, string); format(string, sizeof(string), "Occupation: [%s] - Wanted Level: [%d] - Crimes Committed: [%d] - Arrested: [%dx] - Kill: [%d] - Death: [%d]", RPJN(playerb), PlayerInfo[playerb][pWanted], PlayerInfo[playerb][pCrimes], PlayerInfo[playerb][pArrested], PlayerInfo[playerb][pKill], PlayerInfo[playerb][pDeath]); SendClientMessage(playerid, COLOR_WHITE, string); format(string, sizeof(string), "Faction: [%s] - Faction Rank: [%s] - Family: [%s] - Family Rank: [%s]", org, rank, org2, rank2); SendClientMessage(playerid, COLOR_RADIO, string); format(string, sizeof(string), "Business: [%s] - House: [%s] - Garage: [%s] - Vehicles: 1[%s (ID:%d) - 2[%s (ID:%d)] - 3[%s (ID:%d)]", RBT(PlayerInfo[playerb][pBiz]), RPHK(playerb), RPGK(playerb), RVN(GetVehicleModel(PlayerInfo[playerb][pVeh])), PlayerInfo[playerb][pVeh], RVN(GetVehicleModel(PlayerInfo[playerb][pVVeh])), PlayerInfo[playerb][pVVeh], RVN(GetVehicleModel(PlayerInfo[playerb][pVVVeh])), PlayerInfo[playerb][pVVVeh]); SendClientMessage(playerid, COLOR_RADIO, string); SendClientMessage(playerid, COLOR_REPORT, "** For information about your inventory use the '/inv' command."); } else { format(string, sizeof(string), " Statistics of %s", RPN(playerb)); SendClientMessage(playerid, COLOR_ORANGE, string); format(string, sizeof(string), "Level: [%d] - Gender: [%s] - Age: [%d] - Money: [$%d] - Bank: [You don't have Bank account] - Health: [%.0f] - Armor: [%.0f]", PlayerInfo[playerb][pLevel], gender, PlayerInfo[playerb][pAge], PlayerInfo[playerb][pMoney], HP, Armor); SendClientMessage(playerid, COLOR_LIGHTRED, string); format(string, sizeof(string), "Phone Number: [%d] - Playing Hours: [%d] Next Level: [%d/%d] - Respect Points: [%d]", PlayerInfo[playerb][pNumber], PlayerInfo[playerb][pHours], exp, expamount, PlayerInfo[playerb][pExp]); SendClientMessage(playerid, COLOR_LIGHTRED, string); format(string, sizeof(string), "Occupation: [%s] - Wanted Level: [%d] - Crimes Committed: [%d] - Arrested: [%dx] - Kill: [%d] - Death: [%d]", RPJN(playerb), PlayerInfo[playerb][pWanted], PlayerInfo[playerb][pCrimes], PlayerInfo[playerb][pArrested], PlayerInfo[playerb][pKill], PlayerInfo[playerb][pDeath]); SendClientMessage(playerid, COLOR_WHITE, string); format(string, sizeof(string), "Faction: [%s] - Faction Rank: [%s] - Family: [%s] - Family Rank: [%s]", org, rank, org2, rank2); SendClientMessage(playerid, COLOR_RADIO, string); format(string, sizeof(string), "Business: [%s] - House: [%s] - Garage: [%s] - Vehicles: 1[%s (ID:%d) - 2[%s (ID:%d)] - 3[%s (ID:%d)]", RBT(PlayerInfo[playerb][pBiz]), RPHK(playerb), RPGK(playerb), RVN(GetVehicleModel(PlayerInfo[playerb][pVeh])), PlayerInfo[playerb][pVeh], RVN(GetVehicleModel(PlayerInfo[playerb][pVVeh])), PlayerInfo[playerb][pVVeh], RVN(GetVehicleModel(PlayerInfo[playerb][pVVVeh])), PlayerInfo[playerb][pVVVeh]); SendClientMessage(playerid, COLOR_RADIO, string); SendClientMessage(playerid, COLOR_REPORT, "** For information about your inventory use the '/inv' command."); } return 1; }
1. You're not even using sscanf in this command.
2. Compile the script using -d3 and try again, this will provide a more detailed error log. If you're using Pawno (IDE that is supplied with the Windows server), you can do so by doing the following: Create a text file called pawn.cfg inside your pawno folder. Open the file and insert -d3 in there. Save it. Recompile your script(s). |
[00:48:35] [cmd] [Leonardo James]: /stats [00:48:42] [debug] Run time error 4: "Array index out of bounds" [00:48:42] [debug] Accessing element at index 12 past array upper bound 10 [00:48:42] [debug] AMX backtrace: [00:48:42] [debug] #0 003fb160 in RPFRN (playerid=1) at C:\Users\Max\Desktop\GTA United\gamemodes\LG-RP.pwn:54528 [00:48:42] [debug] #1 003e086c in ShowStats (playerid=1, playerb=1) at C:\Users\Max\Desktop\GTA United\gamemodes\LG-RP.pwn:52582 [00:48:42] [debug] #2 0018dedc in public cmd_stats (playerid=1, params[]=@014a22d8 "") at C:\Users\Max\Desktop\GTA United\gamemodes\LG-RP.pwn:23902 [00:48:42] [debug] #3 native CallLocalFunction () from samp-server.exe [00:48:42] [debug] #4 00007478 in public OnPlayerCommandText (playerid=1, cmdtext[]=@014a22bc "/stats") at C:\Users\Max\Desktop\GTA United\pawno\include\I-ZCMD.inc:61
Just from a fast look, replace all those if/else if statements about PlayerInfo[playerb][pLevel] to a switch and the format can be replaced with an integer variable assignment and after the switch, calling valstr to convert it to string.
|
//respect
new respectneed[4];
if(PlayerInfo[playerb][pLevel] == 1) format(respectneed, sizeof(respectneed), "4");
else if(PlayerInfo[playerb][pLevel] == 2) format(respectneed, sizeof(respectneed), "8");
else if(PlayerInfo[playerb][pLevel] == 3) format(respectneed, sizeof(respectneed), "12");
else if(PlayerInfo[playerb][pLevel] == 4) format(respectneed, sizeof(respectneed), "16");
else if(PlayerInfo[playerb][pLevel] == 5) format(respectneed, sizeof(respectneed), "20");
else if(PlayerInfo[playerb][pLevel] == 6) format(respectneed, sizeof(respectneed), "24");
else if(PlayerInfo[playerb][pLevel] == 7) format(respectneed, sizeof(respectneed), "28");
else if(PlayerInfo[playerb][pLevel] == 8) format(respectneed, sizeof(respectneed), "32");
else if(PlayerInfo[playerb][pLevel] == 9) format(respectneed, sizeof(respectneed), "36");
else if(PlayerInfo[playerb][pLevel] == 10) format(respectneed, sizeof(respectneed), "40");
else if(PlayerInfo[playerb][pLevel] == 11) format(respectneed, sizeof(respectneed), "44");
else if(PlayerInfo[playerb][pLevel] == 12) format(respectneed, sizeof(respectneed), "48");
else if(PlayerInfo[playerb][pLevel] == 13) format(respectneed, sizeof(respectneed), "52");
else if(PlayerInfo[playerb][pLevel] == 14) format(respectneed, sizeof(respectneed), "56");
else if(PlayerInfo[playerb][pLevel] == 15) format(respectneed, sizeof(respectneed), "60");
else if(PlayerInfo[playerb][pLevel] == 16) format(respectneed, sizeof(respectneed), "64");
else if(PlayerInfo[playerb][pLevel] == 17) format(respectneed, sizeof(respectneed), "68");
else if(PlayerInfo[playerb][pLevel] == 18) format(respectneed, sizeof(respectneed), "72");
else if(PlayerInfo[playerb][pLevel] == 19) format(respectneed, sizeof(respectneed), "76");
else if(PlayerInfo[playerb][pLevel] == 20) format(respectneed, sizeof(respectneed), "80");
else if(PlayerInfo[playerb][pLevel] == 21) format(respectneed, sizeof(respectneed), "84");
else if(PlayerInfo[playerb][pLevel] == 22) format(respectneed, sizeof(respectneed), "88");
else if(PlayerInfo[playerb][pLevel] == 23) format(respectneed, sizeof(respectneed), "92");
else if(PlayerInfo[playerb][pLevel] == 24) format(respectneed, sizeof(respectneed), "96");
else if(PlayerInfo[playerb][pLevel] == 25) format(respectneed, sizeof(respectneed), "100");
else if(PlayerInfo[playerb][pLevel] == 26) format(respectneed, sizeof(respectneed), "104");
else if(PlayerInfo[playerb][pLevel] == 27) format(respectneed, sizeof(respectneed), "108");
else if(PlayerInfo[playerb][pLevel] == 28) format(respectneed, sizeof(respectneed), "112");
else if(PlayerInfo[playerb][pLevel] == 29) format(respectneed, sizeof(respectneed), "116");
else if(PlayerInfo[playerb][pLevel] == 30) format(respectneed, sizeof(respectneed), "120");
else if(PlayerInfo[playerb][pLevel] == 31) format(respectneed, sizeof(respectneed), "124");
else if(PlayerInfo[playerb][pLevel] == 32) format(respectneed, sizeof(respectneed), "128");
else if(PlayerInfo[playerb][pLevel] == 33) format(respectneed, sizeof(respectneed), "132");
else if(PlayerInfo[playerb][pLevel] == 34) format(respectneed, sizeof(respectneed), "136");
else if(PlayerInfo[playerb][pLevel] == 35) format(respectneed, sizeof(respectneed), "140");
else if(PlayerInfo[playerb][pLevel] == 36) format(respectneed, sizeof(respectneed), "144");
else if(PlayerInfo[playerb][pLevel] == 37) format(respectneed, sizeof(respectneed), "148");
else if(PlayerInfo[playerb][pLevel] == 38) format(respectneed, sizeof(respectneed), "152");
else if(PlayerInfo[playerb][pLevel] == 39) format(respectneed, sizeof(respectneed), "156");
else if(PlayerInfo[playerb][pLevel] == 40) format(respectneed, sizeof(respectneed), "160");
new respectneed[4];
format(respectneed, sizeof(respectneed), "%i", PlayerInfo[playerb][pLevel] * 4);
stock RPFRN(playerid) { new rankname[32]; if(PlayerInfo[playerid][pFacRank] == 0 && PlayerInfo[playerid][pFac] == 0) format(rankname, sizeof(rankname), "Civilian"); else if(PlayerInfo[playerid][pFac]) { //if(PlayerInfo[playerid][pFacRank] == 0) format(rankname, sizeof(rankname), "%s", FacInfo[PlayerInfo[playerid][pFac]][fRank0]); if(PlayerInfo[playerid][pFacRank] == 1) format(rankname, sizeof(rankname), "%s", FacInfo[PlayerInfo[playerid][pFac]][fRank1]); else if(PlayerInfo[playerid][pFacRank] == 2) format(rankname, sizeof(rankname), "%s", FacInfo[PlayerInfo[playerid][pFac]][fRank2]); else if(PlayerInfo[playerid][pFacRank] == 3) format(rankname, sizeof(rankname), "%s", FacInfo[PlayerInfo[playerid][pFac]][fRank3]); else if(PlayerInfo[playerid][pFacRank] == 4) format(rankname, sizeof(rankname), "%s", FacInfo[PlayerInfo[playerid][pFac]][fRank4]); else if(PlayerInfo[playerid][pFacRank] == 5) format(rankname, sizeof(rankname), "%s", FacInfo[PlayerInfo[playerid][pFac]][fRank5]); else if(PlayerInfo[playerid][pFacRank] == 6) format(rankname, sizeof(rankname), "%s", FacInfo[PlayerInfo[playerid][pFac]][fRank6]); else if(PlayerInfo[playerid][pFacRank] == 7) format(rankname, sizeof(rankname), "%s", FacInfo[PlayerInfo[playerid][pFac]][fRank7]); else if(PlayerInfo[playerid][pFacRank] == 8) format(rankname, sizeof(rankname), "%s", FacInfo[PlayerInfo[playerid][pFac]][fRank8]); else if(PlayerInfo[playerid][pFacRank] == 9) format(rankname, sizeof(rankname), "%s", FacInfo[PlayerInfo[playerid][pFac]][fRank9]); else if(PlayerInfo[playerid][pFacRank] == 10) format(rankname, sizeof(rankname), "%s", FacInfo[PlayerInfo[playerid][pFac]][fRank10]); } return rankname; }