31.12.2013, 21:09
Hello. Well after i scripted abit in my script, when i type /kick or /stats it says unknown command but in the script it is added. How come? Please tell me. Happy new year too!!
for example, i got a array which is 5 long, called "string".
the string is filled with "hello" it'll look like this: [H] -> 0 [e] -> 1 [l] -> 2 [l] -> 3 [o] -> 4 [\0] -> 5 (NULL char) but now a loop is trying to do something like this: PHP код:
not sure... //Edit it will cause the error, not maybe Code-example: PHP код:
the chars are printed to the console until '\0' when 'i' moving on to being '6', the error comes in looping trough something which doesen't exist can cause such things. it even didn't print the "o" xD just fucked up you could also run that Код:
#include <a_samp> new strxs[5]; main() { format(strxs,sizeof strxs,"%s","Hello"); for(new i=0; i<10; i++) { printf("%c",strxs[i]); } return 1; } and you'll get: "Accessing element at index 5 past array upper bound 4" |
CMD:stats(playerid, params[]) { if (gPlayerLogged{playerid} != 0) { ShowStats(playerid,playerid); } return 1; }
ShowStats(playerid,targetid) { if(IsPlayerConnected(targetid)) { SendClientMessageEx(playerid, COLOR_GREEN,"___________________________________________________________________________________________________"); new cash = GetPlayerCash(targetid); new sext[16], std[20], employer[64], rank[64], division[64], jtext2[20], jtext[20], pnumber[20], facfam[20]; if(PlayerInfo[targetid][pPnumber] == 0) pnumber = "None"; else format(pnumber, sizeof(pnumber), "%d", PlayerInfo[targetid][pPnumber]); if(PlayerInfo[targetid][pSex] == 1) { sext = "Male"; } else { sext = "Female"; } switch(STDPlayer[targetid]) { case 1: std = "Chlamydia"; case 2: std = "Gonorrhea"; case 3: std = "Syphilis"; default: std = "None"; } facfam = "Faction"; if(PlayerInfo[targetid][pFMember] < 255) { facfam = "Family"; division = "None"; format(employer, sizeof(employer), "%s", FamilyInfo[PlayerInfo[targetid][pFMember]][FamilyName]); switch(PlayerInfo[targetid][pRank]) { case 1: format(rank, sizeof(rank), "%s", FamilyInfo[PlayerInfo[targetid][pFMember]][FamilyRank1]); case 2: format(rank, sizeof(rank), "%s", FamilyInfo[PlayerInfo[targetid][pFMember]][FamilyRank2]); case 3: format(rank, sizeof(rank), "%s", FamilyInfo[PlayerInfo[targetid][pFMember]][FamilyRank3]); case 4: format(rank, sizeof(rank), "%s", FamilyInfo[PlayerInfo[targetid][pFMember]][FamilyRank4]); case 5: format(rank, sizeof(rank), "%s", FamilyInfo[PlayerInfo[targetid][pFMember]][FamilyRank5]); case 6: format(rank, sizeof(rank), "%s", FamilyInfo[PlayerInfo[targetid][pFMember]][FamilyRank6]); default: format(rank, sizeof(rank), "%s", FamilyInfo[PlayerInfo[targetid][pFMember]][FamilyRank1]); } } else GetPlayerFactionInfo(targetid, rank, division, employer); switch(PlayerInfo[targetid][pJob]) { case 1: jtext = "Detective"; case 2: jtext = "Lawyer"; case 3: jtext = "Whore"; case 4: jtext = "Drugs Dealer"; //case 5: jtext = "Car Jacker"; case 6: jtext = "News Reporter"; case 7: jtext = "Car Mechanic"; case 8: jtext = "Bodyguard"; case 9: jtext = "Arms Dealer"; case 10: jtext = "Car Dealer"; case 12: jtext = "Boxer"; case 14: jtext = "Drug Smuggler"; case 15: jtext = "Paper Boy"; case 16: jtext = "Trucker"; case 17: jtext = "Taxi Driver"; case 18: jtext = "Craftsman"; case 19: jtext = "Bartender"; case 20: jtext = "Trucker"; case 21: jtext = "Pizza Boy"; default: jtext = "None"; } switch(PlayerInfo[targetid][pJob2]) { case 1: jtext2 = "Detective"; case 2: jtext2 = "Lawyer"; case 3: jtext2 = "Whore"; case 4: jtext2 = "Drugs Dealer"; //case 5: jtext2 = "Car Jacker"; case 6: jtext2 = "News Reporter"; case 7: jtext2 = "Car Mechanic"; case 8: jtext2 = "Bodyguard"; case 9: jtext2 = "Arms Dealer"; case 10: jtext2 = "Car Dealer"; case 12: jtext2 = "Boxer"; case 14: jtext2 = "Drug Smuggler"; case 15: jtext2 = "Paper Boy"; case 16: jtext2 = "Trucker"; case 17: jtext2 = "Taxi Driver"; case 18: jtext2 = "Craftsman"; case 19: jtext2 = "Bartender"; case 20: jtext2 = "Trucker"; case 21: jtext2 = "Pizza Boy"; default: jtext2 = "None"; } new jlevel, jlevel2; switch(PlayerInfo[targetid][pJob]) { case 1: { new skilllevel = PlayerInfo[targetid][pDetSkill]; if(skilllevel >= 0 && skilllevel <= 50) { jlevel = 1; } else if(skilllevel >= 51 && skilllevel <= 100) { jlevel = 2; } else if(skilllevel >= 101 && skilllevel <= 200) { jlevel = 3; } else if(skilllevel >= 201 && skilllevel <= 400) { jlevel = 4; } else if(skilllevel >= 401) { jlevel = 5; } } case 2: { new skilllevel = PlayerInfo[targetid][pLawSkill]; if(skilllevel >= 0 && skilllevel <= 50) { jlevel = 1; } else if(skilllevel >= 51 && skilllevel <= 100) { jlevel = 2; } else if(skilllevel >= 101 && skilllevel <= 200) { jlevel = 3; } else if(skilllevel >= 201 && skilllevel <= 400) { jlevel = 4; } else if(skilllevel >= 401) { jlevel = 5; } } case 3: { new skilllevel = PlayerInfo[targetid][pSexSkill]; if(skilllevel >= 0 && skilllevel <= 50) { jlevel = 1; } else if(skilllevel >= 51 && skilllevel <= 100) { jlevel = 2; } else if(skilllevel >= 101 && skilllevel <= 200) { jlevel = 3; } else if(skilllevel >= 201 && skilllevel <= 400) { jlevel = 4; } else if(skilllevel >= 401) { jlevel = 5; } } case 4: { new skilllevel = PlayerInfo[targetid][pDrugsSkill]; if(skilllevel >= 0 && skilllevel <= 50) { jlevel = 1; } else if(skilllevel >= 51 && skilllevel <= 100) { jlevel = 2; } else if(skilllevel >= 101 && skilllevel <= 200) { jlevel = 3; } else if(skilllevel >= 201 && skilllevel <= 400) { jlevel = 4; } else if(skilllevel >= 401) { jlevel = 5; } } case 7: { new skilllevel = PlayerInfo[targetid][pMechSkill]; if(skilllevel >= 0 && skilllevel <= 50) { jlevel = 1; } else if(skilllevel >= 51 && skilllevel <= 100) { jlevel = 2; } else if(skilllevel >= 101 && skilllevel <= 200) { jlevel = 3; } else if(skilllevel >= 201 && skilllevel <= 400) { jlevel = 4; } else if(skilllevel >= 401) { jlevel = 5; } } case 9: { new skilllevel = PlayerInfo[targetid][pArmsSkill]; if(skilllevel >= 0 && skilllevel < 50) { jlevel = 1; } else if(skilllevel >= 50 && skilllevel < 100) { jlevel = 2; } else if(skilllevel >= 100 && skilllevel < 200) { jlevel = 3; } else if(skilllevel >= 200 && skilllevel < 400) { jlevel = 4; } else if(skilllevel >= 400) { jlevel = 5; } } case 12: { new skilllevel = PlayerInfo[targetid][pBoxSkill]; if(skilllevel >= 0 && skilllevel <= 50) { jlevel = 1; } else if(skilllevel >= 51 && skilllevel <= 100) { jlevel = 2; } else if(skilllevel >= 101 && skilllevel <= 200) { jlevel = 3; } else if(skilllevel >= 201 && skilllevel <= 400) { jlevel = 4; } else if(skilllevel >= 401) { jlevel = 5; } } case 14: jlevel = 1; case 20: { new skilllevel = PlayerInfo[targetid][pTruckSkill]; if(skilllevel >= 0 && skilllevel <= 50) { jlevel = 1; } else if(skilllevel >= 51 && skilllevel <= 100) { jlevel = 2; } else if(skilllevel >= 101 && skilllevel <= 200) { jlevel = 3; } else if(skilllevel >= 201 && skilllevel <= 400) { jlevel = 4; } else if(skilllevel >= 401) { jlevel = 5; } } default: jlevel = 0; } switch(PlayerInfo[targetid][pJob2]) { case 1: { new skilllevel = PlayerInfo[targetid][pDetSkill]; if(skilllevel >= 0 && skilllevel <= 50) { jlevel2 = 1; } else if(skilllevel >= 51 && skilllevel <= 100) { jlevel2 = 2; } else if(skilllevel >= 101 && skilllevel <= 200) { jlevel2 = 3; } else if(skilllevel >= 201 && skilllevel <= 400) { jlevel2 = 4; } else if(skilllevel >= 401) { jlevel2 = 5; } } case 2: { new skilllevel = PlayerInfo[targetid][pLawSkill]; if(skilllevel >= 0 && skilllevel <= 50) { jlevel2 = 1; } else if(skilllevel >= 51 && skilllevel <= 100) { jlevel2 = 2; } else if(skilllevel >= 101 && skilllevel <= 200) { jlevel2 = 3; } else if(skilllevel >= 201 && skilllevel <= 400) { jlevel2 = 4; } else if(skilllevel >= 401) { jlevel2 = 5; } } case 3: { new skilllevel = PlayerInfo[targetid][pSexSkill]; if(skilllevel >= 0 && skilllevel <= 50) { jlevel2 = 1; } else if(skilllevel >= 51 && skilllevel <= 100) { jlevel2 = 2; } else if(skilllevel >= 101 && skilllevel <= 200) { jlevel2 = 3; } else if(skilllevel >= 201 && skilllevel <= 400) { jlevel2 = 4; } else if(skilllevel >= 401) { jlevel2 = 5; } } case 4: { new skilllevel = PlayerInfo[targetid][pDrugsSkill]; if(skilllevel >= 0 && skilllevel <= 50) { jlevel2 = 1; } else if(skilllevel >= 51 && skilllevel <= 100) { jlevel2 = 2; } else if(skilllevel >= 101 && skilllevel <= 200) { jlevel2 = 3; } else if(skilllevel >= 201 && skilllevel <= 400) { jlevel2 = 4; } else if(skilllevel >= 401) { jlevel2 = 5; } } case 7: { new skilllevel = PlayerInfo[targetid][pMechSkill]; if(skilllevel >= 0 && skilllevel <= 50) { jlevel2 = 1; } else if(skilllevel >= 51 && skilllevel <= 100) { jlevel2 = 2; } else if(skilllevel >= 101 && skilllevel <= 200) { jlevel2 = 3; } else if(skilllevel >= 201 && skilllevel <= 400) { jlevel2 = 4; } else if(skilllevel >= 401) { jlevel2 = 5; } } case 9: { new skilllevel = PlayerInfo[targetid][pArmsSkill]; if(skilllevel >= 0 && skilllevel < 50) { jlevel2 = 1; } else if(skilllevel >= 50 && skilllevel < 100) { jlevel2 = 2; } else if(skilllevel >= 100 && skilllevel < 200) { jlevel2 = 3; } else if(skilllevel >= 200 && skilllevel < 400) { jlevel2 = 4; } else if(skilllevel >= 400) { jlevel2 = 5; } } case 12: { new skilllevel = PlayerInfo[targetid][pBoxSkill]; if(skilllevel >= 0 && skilllevel <= 50) { jlevel2 = 1; } else if(skilllevel >= 51 && skilllevel <= 100) { jlevel2 = 2; } else if(skilllevel >= 101 && skilllevel <= 200) { jlevel2 = 3; } else if(skilllevel >= 201 && skilllevel <= 400) { jlevel2 = 4; } else if(skilllevel >= 401) { jlevel2 = 5; } } case 14: jlevel2 = 1; case 20: { new skilllevel = PlayerInfo[targetid][pTruckSkill]; if(skilllevel >= 0 && skilllevel <= 50) { jlevel2 = 1; } else if(skilllevel >= 51 && skilllevel <= 100) { jlevel2 = 2; } else if(skilllevel >= 101 && skilllevel <= 200) { jlevel2 = 3; } else if(skilllevel >= 201 && skilllevel <= 400) { jlevel2 = 4; } else if(skilllevel >= 401) { jlevel2 = 5; } } default: jlevel2 = 0; } new drank[20]; switch(PlayerInfo[targetid][pDonateRank]) { case 1: drank = "Bronze"; case 2: drank = "Silver"; case 3: drank = "Gold"; case 4: drank = "Platinum"; case 5: drank = "Moderator"; default: drank = "None"; } new insur[20]; switch(PlayerInfo[targetid][pInsurance]) { case 1: insur = "County General"; case 2: insur = "All Saints"; case 3: insur = "Red County"; case 4: insur = "Fort Carson"; case 5: insur = "San Fierro"; case 6: insur = "Club VIP"; case 7: insur = "Home care"; case 9: insur = "El Quabrados"; case 10: insur = "Demorgan"; default: insur = "None"; } new married[20]; strmid(married, PlayerInfo[targetid][pMarriedTo], 0, strlen(PlayerInfo[targetid][pMarriedTo]), 255); new upgradep = PlayerInfo[targetid][gPupgrade]; new age = PlayerInfo[targetid][pAge]; new ptime = PlayerInfo[targetid][pConnectTime]; new bigfish = PlayerInfo[targetid][pBiggestFish]; new crimes = PlayerInfo[targetid][pCrimes]; new arrests = PlayerInfo[targetid][pArrested]; new pot = PlayerInfo[targetid][pPot]; new crack = PlayerInfo[targetid][pCrack]; new mats = PlayerInfo[targetid][pMats]; new wanted = PlayerInfo[targetid][pWantedLevel]; new level = PlayerInfo[targetid][pLevel]; new exp = PlayerInfo[targetid][pExp]; new account = PlayerInfo[targetid][pAccount]; new nxtlevel = PlayerInfo[targetid][pLevel]+1; new expamount = nxtlevel*levelexp; new costlevel = nxtlevel*levelcost;//10k for testing purposes new housekey = PlayerInfo[targetid][pPhousekey]; new housekey2 = PlayerInfo[targetid][pPhousekey2]; new rentkey = PlayerInfo[targetid][pRenting]; new radiofreq = PlayerInfo[targetid][pRadioFreq]; new intir = GetPlayerInterior(targetid); new tokens = PlayerInfo[targetid][pTokens]; new ptokens = PlayerInfo[targetid][pPaintTokens]; new checks = PlayerInfo[targetid][pChecks]; new Float:shealth = PlayerInfo[targetid][pSHealth]; //new Float:sarmor = PlayerInfo[targetid][pSArmor]; new Float:health, Float:armor; new packages = GetPVarInt(targetid, "Packages"); new crates = PlayerInfo[targetid][pCrates]; new rope = PlayerInfo[targetid][pRope], cigars = PlayerInfo[targetid][pCigar], sprunk = PlayerInfo[targetid][pSprunk], spray = PlayerInfo[targetid][pSpraycan], realvw = GetPlayerVirtualWorld(targetid), vw = PlayerInfo[targetid][pVW], warns = PlayerInfo[targetid][pWarns], jailt = PlayerInfo[targetid][pJailTime], wjailt = PlayerInfo[targetid][pBeingSentenced]; GetPlayerHealth(targetid,health); GetPlayerArmour(targetid,armor); new Float:px,Float:py,Float:pz; GetPlayerPos(targetid, px, py, pz); new totalwealth; new name[MAX_PLAYER_NAME]; GetPlayerName(targetid, name, sizeof(name)); new nmutes = PlayerInfo[targetid][pNMuteTotal]; new admutes = PlayerInfo[targetid][pADMuteTotal]; totalwealth = account + cash; if(PlayerInfo[targetid][pPhousekey] != INVALID_HOUSE_ID && strcmp(name, HouseInfo[PlayerInfo[targetid][pPhousekey]][hOwner], true) == 0) totalwealth += HouseInfo[PlayerInfo[targetid][pPhousekey]][hSafeMoney]; if(PlayerInfo[targetid][pPhousekey2] != INVALID_HOUSE_ID && strcmp(name, HouseInfo[PlayerInfo[targetid][pPhousekey2]][hOwner], true) == 0) totalwealth += HouseInfo[PlayerInfo[targetid][pPhousekey2]][hSafeMoney]; new coordsstring[128]; format(coordsstring, sizeof(coordsstring),"%s - Level %d | %s | Age: %d | Total wealth: $%d | Playing hours: %d | Phone number: %s | Warnings: %d",GetPlayerNameEx(targetid), level, sext, age, totalwealth, ptime, pnumber, warns); SendClientMessageEx(playerid, COLOR_WHITE,coordsstring); format(coordsstring, sizeof(coordsstring), "Cash: $%d | Bank balance: $%d | Upgrade points: %d | Spawn armor: %.0f | Next level: %d/%d hours ($%d)", cash, account, upgradep, shealth, exp, expamount, costlevel); SendClientMessageEx(playerid, COLOR_GRAD1,coordsstring); format(coordsstring, sizeof(coordsstring), "%s: %s | Rank: %s (%d) | Division: %s | Job: %s (level: %d) | Job 2: %s (level: %d)", facfam, employer, rank, PlayerInfo[targetid][pRank], division, jtext,jlevel,jtext2, jlevel2); SendClientMessageEx(playerid, COLOR_GRAD5,coordsstring); format(coordsstring, sizeof(coordsstring), "Crimes: %d | Arrests: %d | Insurance: %s | Wanted level: %d | Health: %.1f | Armor: %.1f | Paintball Tokens: %d",crimes,arrests,insur, wanted, health, armor, ptokens); SendClientMessageEx(playerid, COLOR_GRAD1,coordsstring); format(coordsstring, sizeof(coordsstring), "Married to: %s | Biggest fish: %d | Pot: %d | Crack: %d | Packages: %d | Crates: %d | Radio frequency: %d khz",married,bigfish,pot,crack,packages,crates, radiofreq); SendClientMessageEx(playerid, COLOR_GRAD5,coordsstring); format(coordsstring, sizeof(coordsstring), "Materials: %d | Rope: %d | Cigars: %d | Sprunk: %d | Spray: %d | Screwdrivers: %d | VIP tokens: %d | Checks: %d | VIP: %s",mats,rope,cigars,sprunk,spray, PlayerInfo[targetid][pScrewdriver],tokens,checks,drank); SendClientMessageEx(playerid, COLOR_GRAD1,coordsstring); format(coordsstring, sizeof(coordsstring), "ADMutes: %d | NMutes: %d | RMutes: %d | Weapons Restricted: %d | Gang Warns: %d", admutes, nmutes, PlayerInfo[targetid][pRMutedTotal],PlayerInfo[targetid][pWRestricted], PlayerInfo[targetid][pGangWarn]); SendClientMessageEx(playerid, COLOR_GRAD1,coordsstring); if (PlayerInfo[playerid][pAdmin] >= 2) { format(coordsstring, sizeof(coordsstring), "House: %d | House 2: %d | Renting: %d | Int: %d | VW: %d | Real VW: %d | Jail: %d sec | WJail: %d sec | AFK: %i", housekey,housekey2,rentkey,intir,vw,realvw,jailt,wjailt, playerAFKTime[targetid]); SendClientMessageEx(playerid, COLOR_GRAD5,coordsstring); } if (PlayerInfo[playerid][pAdmin] >= 1337) { if(PlayerInfo[targetid][pAdmin] >= 2 && PlayerInfo[playerid][pAdmin] >= 2) { format(coordsstring, sizeof(coordsstring), "Accepted reports: %d | Trashed reports: %d", PlayerInfo[targetid][pAcceptReport], PlayerInfo[targetid][pTrashReport]); SendClientMessageEx(playerid, COLOR_GRAD5,coordsstring); } if(PlayerInfo[targetid][pHelper] >= 2 && PlayerInfo[playerid][pAdmin] >= 2) { format(coordsstring, sizeof(coordsstring), "Hours on duty: %d | Accepted help requests: %d", PlayerInfo[targetid][pDutyHours], PlayerInfo[targetid][pAcceptedHelp]); SendClientMessageEx(playerid, COLOR_GRAD5,coordsstring); } } SendClientMessageEx(playerid, COLOR_GREEN,"___________________________________________________________________________________________________"); } }
[17:28:14] [zcmd] [Tony Turado]: /kick [17:28:17] [zcmd] [Tony Turado]: /stats [17:28:17] [debug] Run time error 4: "Array index out of bounds" [17:28:17] [debug] Accessing element at index 13999 past array upper bound 1399 [17:28:17] [debug] AMX backtrace: [17:28:17] [debug] #0 000a8140 in ShowStats (playerid=0, targetid=0) at C:\Users\JakkenKoppen\Desktop\NEW Bone County Script\gamemodes\UGRP.pwn:15954 [17:28:17] [debug] #1 002c4fa0 in public cmd_stats (playerid=0, params[]=@0x02099438 "") at C:\Users\JakkenKoppen\Desktop\NEW Bone County Script\gamemodes\UGRP.pwn:35675 [17:28:17] [debug] #2 native CallLocalFunction () [00471ef0] from samp-server.exe [17:28:17] [debug] #3 0000dc64 in public OnPlayerCommandText (playerid=0, cmdtext[]=@0x0209941c "/stats") at C:\Users\JakkenKoppen\Desktop\NEW Bone County Script\pawno\include\ZCMD.inc:102
CMD:kick(playerid, params[]) { if (PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pHelper] >= 2) { new string[128], giveplayerid, reason[64]; if(sscanf(params, "us[64]", giveplayerid, reason)) return SendClientMessageEx(playerid, COLOR_GREY, "USAGE: /kick [player] [reason]"); if(IsPlayerConnected(giveplayerid)) { if(PlayerInfo[giveplayerid][pAdmin] >= PlayerInfo[playerid][pAdmin] && (PlayerInfo[giveplayerid][pHelper] >= 2 || PlayerInfo[giveplayerid][pAdmin] > 0) && playerid != giveplayerid) { format(string, sizeof(string), "AdmCmd: %s has been auto-kicked, reason: Trying to /kick a higher admin.", GetPlayerNameEx(playerid)); ABroadCast(COLOR_YELLOW,string, (PlayerInfo[playerid][pAdmin] == 1) ? (1) : (2)); KickEx(playerid); return 1; } else { new playerip[32]; GetPlayerIp(giveplayerid, playerip, sizeof(playerip)); format(string, sizeof(string), "AdmCmd: %s (IP:%s) was kicked by %s, reason: %s", GetPlayerNameEx(giveplayerid), playerip, GetPlayerNameEx(playerid), reason); Log("logs/kick.log", string); if(PlayerInfo[playerid][pAdmin] == 1) Log("logs/moderator.log", string); format(string, sizeof(string), "AdmCmd: %s was kicked by %s, reason: %s", GetPlayerNameEx(giveplayerid), GetPlayerNameEx(playerid), reason); SendClientMessageToAllEx(COLOR_LIGHTRED, string); KickEx(giveplayerid); } return 1; } } else SendClientMessageEx(playerid, COLOR_GRAD1, "Invalid player specified."); return 1; }
if(PlayerInfo[targetid][pPhousekey2] != INVALID_HOUSE_ID && strcmp(name, HouseInfo[PlayerInfo[targetid][pPhousekey2]][hOwner], true) == 0) totalwealth += HouseInfo[PlayerInfo[targetid][pPhousekey2]][hSafeMoney];