AMX error

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
  • Hi,
    was bedeutet das?


    8:21:39] [debug] Run time error 4: "Array index out of bounds"
    [18:21:39] [debug] Accessing element at index 24 past array upper bound 21
    [18:21:39] [debug] AMX backtrace:
    [18:21:39] [debug] #0 0000c198 in public Streamer_OnPlayerEnterCP (0x00000001) from RL-Server.amx
    [18:21:39] [debug] #1 000019d8 in public OnPlayerEnterCheckpoint (0x00000001) from RL-Server.amx]

  • Du versuchst ein Array-Index aufzurufen, den es nicht gibt:


    new Array[21]; //21 = upper bound
    Array[10] = 1; //Ok
    Array[24] = 1; //Nicht ok!!


    Suche das Array von dir, das du mit [21] definiert hast, und erhöhe den Wert zwischen den Klammern.

  • Das kann auch über eine Definition sein:


    #define MAX_IRGENDWAS 21
    new Array[MAX_IRGENDWAS];


    Vielleicht sind es auch 20, ich weiß nicht ob das AMX Backtrace den End-Char mitzählt.
    Prüfe einfach dein gesamtes OnPlayerEnterCheckpoint ob da irgend ein Array möglicherweise "gesprengt" wird. Da hilft nur suchen.

  • Habe #define FahrschuleCheckpoints 22


    Wenn ich es jedoch erhöhe kommt ein error:


    C:\Dokumente und Einstellungen\Gian-Luca Koberstein\Desktop\Life Of Sun By ROnNNNY\Life Of Sun By ROnNNNY [VERÖFFENTLICHT]\gamemodes\RL-Server.pwn(106) : error 052: multi-dimensional arrays must be fully initialized
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

  • Es liegt dann wohl daran, dass du FahrschuleCheckpoints irgendwo aufrufst mit dem Index 24.


    FahrschuleCheckpoints[24] ...


    Oder über eine Schleife/Variable
    FahrschuleCheckpoints[i] ...
    wobei i = 24.


    Und das in OnPlayerEnterCheckpoint.

  • hätte das im Angebot

    new Float:FahrschuleCPS[FahrschuleCheckpoints][3]={
    {1120.0819,-1742.9684,13.2734},
    {1218.5082,-1714.5054,13.2578},
    {1314.9904,-1598.2866,13.2578},
    {1359.2489,-1358.1885,13.2577},
    {1359.1753,-1135.3665,23.5289},
    {1495.7686,-960.0814,36.0208},
    {1608.9883,-973.6443,38.0834},
    {1809.5532,-1008.1915,36.3113},
    {1993.0304,-1029.8339,34.8224},
    {2139.0764,-1112.8147,25.1273},
    {2038.4762,-1072.8915,24.4940},
    {1866.4368,-1116.7670,23.5649},
    {1845.8773,-1274.0615,13.2661},
    {1846.8126,-1441.1718,13.2755},
    {1633.8513,-1439.0822,13.2578},
    {1422.5818,-1412.6786,13.2578},
    {1296.3918,-1608.0691,13.2578},
    {1295.7988,-1753.2590,13.2578},
    {1183.6382,-1849.9825,13.2770},
    {1182.1180,-1751.1207,13.2734},
    {1119.2648,-1738.4752,13.3697},
    {1080.3447,-1740.0865,13.3734}
    };

    Hier einfach mal mein Public

    public OnPlayerEnterCheckpoint(playerid)
    {


    if(sSpieler[playerid][firstspawn] == 1 && IsPlayerInRangeOfPoint(playerid,10.0,2157.3774,-1749.1930,13.3811))
    {
    SendClientMessage(playerid, GELB,"Leihe dir hier mit /mieten einen Roller aus.");
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,1478.1777,-1734.3123,12.9453, 5.0);
    }
    else if(sSpieler[playerid][firstspawn] == 1 && IsPlayerInRangeOfPoint(playerid,10.0,1478.1777,-1734.3123,12.9453))
    {
    TogglePlayerControllable(playerid,0);
    SendClientMessage(playerid, GELB,"***Stadthalle****");
    SendClientMessage(playerid, GELB,"***Hier kannst du einen Personalausweis beantragen****");
    SendClientMessage(playerid, GELB,"***und kannst einen Job auswählen****");
    SendClientMessage(playerid, GELB,"");
    SendClientMessage(playerid, GELB,"Gehe nun in die Stadthalle und hole dir einen Ausweis.");
    SetTimerEx("Tuttimer",1000,false,"i",playerid);
    DisablePlayerCheckpoint(playerid);
    }
    else if(sSpieler[playerid][firstspawn] == 1 && IsPlayerInRangeOfPoint(playerid,10.0,1533.3168,-1677.0033,12.9314))
    {
    TogglePlayerControllable(playerid,0);
    SendClientMessage(playerid, GELB,"***Polizei****");
    SendClientMessage(playerid, GELB,"***Hier ist das LSPD****");
    SendClientMessage(playerid, GELB,"***Du kannst die Polizei mit /notruf erreichen****");
    SendClientMessage(playerid, GELB,"");
    SetTimerEx("Tuttimer",1000,false,"i",playerid);
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,1462.3674,-1030.8220,23.2095, 5.0);
    }
    else if(sSpieler[playerid][firstspawn] == 1 && IsPlayerInRangeOfPoint(playerid,10.0,1462.3674,-1030.8220,23.2095))
    {
    TogglePlayerControllable(playerid,0);
    SendClientMessage(playerid, GELB,"***Los Santos Zentral Bank****");
    SendClientMessage(playerid, GELB,"***Hier ist die Los Santos Bank****");
    SendClientMessage(playerid, GELB,"***Hier kannst du Geldabheben und Geldanlegen.****");
    SendClientMessage(playerid, GELB,"");
    SetTimerEx("Tuttimer",1000,false,"i",playerid);
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,1130.8195,-1739.9819,13.0000, 5.0);
    }
    else if(sSpieler[playerid][firstspawn] == 1 && IsPlayerInRangeOfPoint(playerid,10.0,1130.8195,-1739.9819,13.0000))
    {
    TogglePlayerControllable(playerid,0);
    SendClientMessage(playerid, GELB,"***Los Santos Fahrschule****");
    SendClientMessage(playerid, GELB,"***Hier ist die Fahrschule****");
    SendClientMessage(playerid, GELB,"***Hier kannst du deinen Führerschein machen.****");
    SendClientMessage(playerid, GELB,"");
    SetTimerEx("Tuttimer",1000,false,"i",playerid);
    DisablePlayerCheckpoint(playerid);
    sSpieler[playerid][firstspawn] = 0;
    SendClientMessage(playerid, GELB,"");
    SendClientMessage(playerid, GELB,"");
    SendClientMessage(playerid, GELB,"Das wars. Du bist mit dem Tutorial fertig.");
    new string[85],pname[24];
    GetPlayerName(playerid,pname,24);
    ClearChatbox(playerid, 5);
    format(string,sizeof(string),"Wir begrüßen unseren neuen Spieler: %s(ID:%d)",pname,playerid);
    SendClientMessageToAll(-1,string);
    }
    else if(AktuellerFahrschulCP[playerid] == EndFahrschuleCP && Autostunde[playerid] == 1)
    {
    DisablePlayerCheckpoint(playerid);
    AktuellerFahrschulCP[playerid] = INVALID_FAHRSCHULE_CP;
    SendClientMessage(playerid,-1, "!!Herzlichen Glückwunsch!!");
    SendClientMessage(playerid,-1, "Du hast den Führerschein bestanden.");
    sSpieler[playerid][Carlic] = 1;
    new vehicleid =GetPlayerVehicleID(playerid);
    SetVehicleToRespawn(vehicleid);
    }
    else
    {
    AktuellerFahrschulCP[playerid]++;
    SetPlayerCheckpoint(playerid,FahrschuleCPS[AktuellerFahrschulCP[playerid]][0],FahrschuleCPS[AktuellerFahrschulCP[playerid]][1],FahrschuleCPS[AktuellerFahrschulCP[playerid]][2], 8.0);
    }
    new vehicle = GetPlayerVehicleID(playerid);
    if(AktuellerFarmerCP[playerid] != INVALID_FARMER_CP && FarmerFahrzeug(vehicle))
    {
    if(AktuellerFarmerCP[playerid] == EndFarmerCP)
    {
    DisablePlayerCheckpoint(playerid);
    AktuellerFarmerCP[playerid] = INVALID_FARMER_CP;
    sSpieler[playerid][Gehalt] = sSpieler[playerid][Gehalt]+10000;
    SendClientMessage(playerid,-1, "*Du hast das Feld geerntet und erhälst am Payday 10.000€");
    SendClientMessage(playerid,-1, "*In frühestens 30 Minuten sind die Felder wieder gewachsen.");
    sSpieler[playerid][Farmtime] = 1800;
    SetVehicleToRespawn(vehicle);
    }
    else
    {
    AktuellerFarmerCP[playerid]++;
    SetPlayerCheckpoint(playerid,FarmerCPS[AktuellerFarmerCP[playerid]][0],FarmerCPS[AktuellerFarmerCP[playerid]][1],FarmerCPS[AktuellerFarmerCP[playerid]][2], 8.0);
    }
    }
    return 1;
    }

  • if(AktuellerFahrschulCP[playerid] < 22) SetPlayerCheckpoint(playerid,FahrschuleCPS[AktuellerFahrschulCP[playerid]][0],FahrschuleCPS[AktuellerFahrschulCP[playerid]][1],FahrschuleCPS[AktuellerFahrschulCP[playerid]][2], 8.0);
    else print("Fahrschule-Zähler zu hoch.");


    if(AktuellerFarmerCP[playerid] < SO_VIELE_FARMER_CPS_WIE_DU_HAST) SetPlayerCheckpoint(playerid,FarmerCPS[AktuellerFarmerCP[playerid]][0],FarmerCPS[AktuellerFarmerCP[playerid]][1],FarmerCPS[AktuellerFarmerCP[playerid]][2], 8.0);
    else print("Farmer-Zähler zu hoch.");



    Einfach so abfangen.

  • [07:31:46] Fahrschule-Zähler zu hoch.
    [07:34:42] [debug] Run time error 4: "Array index out of bounds"
    [07:34:42] [debug] Accessing element at index 22 past array upper bound 21
    [07:34:42] [debug] AMX backtrace:
    [07:34:42] [debug] #0 000125fc in public IO8 (playerid=1) at C:\Dokumente und Einstellungen\Gian-Luca Koberstein\Desktop\Life Of Sun By ROnNNNY\Life Of Sun By ROnNNNY [VERÖFFENTLICHT]\gamemodes\RL-Server.pwn:1496