Array index out of bounds - Accessing element at negative index -1

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hey Leute,
    ich habe ein Problem.
    Crashdetect zeigt mir immer o.g. in der Überschrift stehenden Fehler in der Server Konsole an, immer wenn ich Enter drücke ( also liegt der Fehler in OnPlayerKeySateChange).
    Hier die genaue Fehlermeldung:

    Zitat

    [16:47:24] [debug] Run time error 4: "Array index out of bounds"
    [16:47:24] [debug] Accessing element at negative index -1
    [16:47:24] [debug] AMX backtrace:
    [16:47:24] [debug] #0 0001160c in public OnPlayerKeyStateChange () from urp.amx


    Jedoch ist das komisch, weil ich im o.g. Callback nur Integerwerte abfrage und keine Arrays.


    Hat jmd. hier Ahnung ?


    Code kann ich reinpacken, wenn erwünscht ;)


    MfG

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • Zeig doch mal bitte den Code dazu.


    Ok, ist ein bisschen mehr Code, da das gesamte Callback ist.

    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    switch(newkeys) {
    case KEY_SECONDARY_ATTACK: {
    for(new i=0;i<sizeof Interior;i++) {
    if(IsPlayerInRangeOfPoint(playerid,3,Interior[i][A_X],Interior[i][A_Y],Interior[i][A_Z])) {
    SetPlayerVirtualWorld(playerid,Interior[i][InteriorVirtualWorld]);
    SetPlayerPos(playerid,Interior[i][I_X],Interior[i][I_Y],Interior[i][I_Z]);
    SetPlayerInterior(playerid,Interior[i][InteriorID]);
    }
    else if(IsPlayerInRangeOfPoint(playerid,3,Interior[i][I_X],Interior[i][I_Y],Interior[i][I_Z])) {
    SetPlayerVirtualWorld(playerid,0);
    SetPlayerInterior(playerid,0);
    SetPlayerPos(playerid,Interior[i][A_X],Interior[i][A_Y],Interior[i][A_Z]);
    }
    }
    for(new i=0;i!=sizeof ATM;i++) {
    if(IsPlayerInRangeOfPoint(playerid,3,ATM[i][aX],ATM[i][aY],ATM[i][aZ])) {
    ShowPlayerDialog(playerid,DIALOG_ATM,DIALOG_STYLE_LIST,"Bankomat - Hauptmenü","Auszahlen\nEinzahlen\nKontostand\nÜberweisen","OK","Abbrechen");
    }
    }
    if(IsPlayerInRangeOfPoint(playerid,3,-28.1062,-89.9486,1003.5469)) {
    ShowPlayerDialog(playerid,DIALOG_SKAUFEN,DIALOG_STYLE_LIST,"Kaufvorgang","Zeitung","OK","Quit");
    }
    else if(IsPlayerInRangeOfPoint(playerid,3,1730.2362,-2335.4951,13.5469)) {
    new str[100];
    if(SpielerInfo[playerid][pJob] != 1)return SendClientMessage(playerid,ROT,"Du bist kein Pilot!");
    else if(SpielerSachen[playerid][pPilotAuszeit] > gettime())return SendClientMessage(playerid,ROT,"Du kannst nur alle 10 Minuten fliegen!");
    else if(SpielerInfo[playerid][pPilotFluege] == 5 || SpielerInfo[playerid][pPilotFluege] == 20 || SpielerInfo[playerid][pPilotFluege] == 40 || SpielerInfo[playerid][pPilotFluege] == 65 || SpielerInfo[playerid][pPilotFluege] == 111) return PilotSpezialAuftrag(playerid);
    else if(SpielerInfo[playerid][pPilotFluege] < 15) {
    format(str,sizeof str,"Dodo");
    }
    else if(SpielerInfo[playerid][pPilotFluege] < 30) {
    format(str,sizeof str,"Dodo\nCropduster");
    }
    else if(SpielerInfo[playerid][pPilotFluege] < 50) {
    format(str,sizeof str,"Dodo\nCropduster\nBeagle");
    }
    else if(SpielerInfo[playerid][pPilotFluege] < 50) {
    format(str,sizeof str,"Dodo\nCropduster\nBeagle");
    }
    else if(SpielerInfo[playerid][pPilotFluege] < 100) {
    format(str,sizeof str,"Dodo\nCropduster\nBeagle\nNevada");
    }
    else {
    format(str,sizeof str,"Dodo\nCropduster\nBeagle\nNevada\nShamal");
    }
    ShowPlayerDialog(playerid,DIALOG_FLUGZEUGAUSWAHL,DIALOG_STYLE_LIST,"Verfügbare Flugzeuge",str,"OK","Quit");
    }
    else if(IsPlayerInRangeOfPoint(playerid,3,1094.2566,-1875.6587,13.5469)) {
    if(SpielerInfo[playerid][pJob] != 2)return SendClientMessage(playerid,ROT,"Du bist kein Waffendealer!");
    ShowPlayerDialog(playerid,DIALOG_WCREATE,DIALOG_STYLE_LIST,"Waffe auswählen","Silenced Pistol\nDesert Eagle\nMP5\nSniper Rifle","OK","Quit");
    }
    else if(IsPlayerInRangeOfPoint(playerid,5,1456.8768,-1750.9211,13.5469)) {
    if(SpielerInfo[playerid][pJob] > 0)return SendClientMessage(playerid,ROT,"Andy: Tut mir leid, du hast schon einen Job!");
    ShowPlayerDialog(playerid,DIALOG_IJOBS,DIALOG_STYLE_LIST,"Ich biete dir an, ...","Waffendealer zu werden","OK","Quit");
    }
    else if(GetPVarInt(playerid,"inSpec") == 1) {
    TogglePlayerSpectating(playerid,0);
    SpawnPlayer(playerid);
    SetCameraBehindPlayer(playerid);
    SetPlayerInterior(playerid,0);
    SetPlayerPos(playerid,GetPVarFloat(playerid,"LastX"),GetPVarFloat(playerid,"LastY"),GetPVarFloat(playerid,"LastZ"));
    SetPVarInt(playerid,"inSpec",0);
    DeletePVar(playerid,"inSpec");
    DeletePVar(playerid,"LastX");
    DeletePVar(playerid,"LastY");
    DeletePVar(playerid,"LastZ");
    }
    else if(IsPlayerInRangeOfPoint(playerid,3,361.8299,173.5657,1008.3828)) {
    ShowPlayerDialog(playerid,DIALOG_RATHAUS,DIALOG_STYLE_LIST,"Rathaus Informationspunkt","Beantragungen","OK","Abbrechen");
    }
    else if(!GetPVarInt(playerid,"InHaus")) {
    new ID = GetNearestHouse(playerid,3);
    if(ID == SpielerInfo[playerid][pMiethausid]) {
    SetPlayerInterior(playerid,Haus[ID][hInterior]);
    SetPlayerPos(playerid,Haus[ID][rX],Haus[ID][rY],Haus[ID][rZ]);
    SetPVarInt(playerid,"InHaus",true);
    }
    if(ID == -1)return true;
    if(Haus[ID][hAbgeschlossen])return true;
    SetPlayerInterior(playerid,Haus[ID][hInterior]);
    SetPlayerPos(playerid,Haus[ID][rX],Haus[ID][rY],Haus[ID][rZ]);
    SetPVarInt(playerid,"InHaus",true);
    }
    new ID = GetNearestHouseExit(playerid,3);
    if(ID == SpielerInfo[playerid][pMiethausid]) {
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    SetPlayerPos(playerid,Haus[ID][hX],Haus[ID][hY],Haus[ID][hZ]);
    DeletePVar(playerid,"InHaus");
    }
    if(ID == -1)return true;
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    SetPlayerPos(playerid,Haus[ID][hX],Haus[ID][hY],Haus[ID][hZ]);
    DeletePVar(playerid,"InHaus");
    return true;
    }
    }
    return 1;
    }

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • Du setzt einen wert auf -1 besser gesagt allgemein isn negative und verwendest diesen in einer array
    das bedeutet , wenn du negative arrays verwendest schmiert der server ab.


    Wahrscheinlich ist dort die uhrsache enthalten


    GetNearestHouse(playerid,3);