Alle Autos respawnen | funktioniert nicht (Fehlermeldung)

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 in meine Script einen Befehl eingebaut, mit dem ich alle Autos respawnen kann:


    ocmd:respawnall(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,4)) return SCM(playerid,RED,"Du bist nicht berechtigt!");
    for(new v=0; v<MAX_VEHICLES; v++)
    {
    if(GetVehicleDriver(v) == INVALID_PLAYER_ID)
    {
    s_SetVehicleToRespawn(v,-1);
    }
    }
    return 1;
    }


    Oben habe ich Global die maximale Autoanzahl definiert:


    #define MAX_CARS 900


    Wenn ich diesen Befehl eingebe, soll ja dieser stock hier ausgeführt werden:


    stock s_SetVehicleToRespawn(vID,id)
    {
    switch(id)
    {
    case -1:
    {
    for(new i=0;i<MAX_VEHICLES - 1;i++)
    {
    if(FahrzeugInfo[i][fz_ID] == vID)
    {
    switch(FahrzeugInfo[i][fz_Typ])
    {
    case 0:
    {
    DestroyVehicle(FahrzeugInfo[i][fz_ID]);
    FahrzeugInfo[i][fz_ID] = s_CreateVehicle(FahrzeugInfo[i][fz_Model],FahrzeugInfo[i][fz_X],FahrzeugInfo[i][fz_Y],FahrzeugInfo[i][fz_Z],FahrzeugInfo[i][fz_A],FahrzeugInfo[i][fz_Farbe1],FahrzeugInfo[i][fz_Farbe2],-1);
    vID = FahrzeugInfo[i][fz_ID];
    FahrzeugInfo[i][fz_Motor] = 0;
    FahrzeugInfo[i][fz_Radio] = 0;
    FahrzeugInfo[i][fz_Lock] = 0;
    new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(FahrzeugInfo[i][fz_ID], engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(FahrzeugInfo[i][fz_ID], engine, lights, alarm, 0, bonnet, boot, objective);
    new str[32];
    switch(FahrzeugInfo[i][fz_Besitzer])
    {
    case 0:{str = "Zivi";}
    case 1:{str = "LSPD";}
    case 2:{str = "BND";}
    case 3:{str = "Assasins";}
    case 4:{str = "SAA";}
    case 5:{str = "Regierung";}
    case 6:{str = "LSMD";}
    case 7:{str = "OAmt";}
    case 8:{str = "LEER";}
    case 9:{str = "SAM AG";}
    case 10:{str = "Grove St.";}
    case 11:{str = "Ballas";}
    case 12:{str = "Al Quaida";}
    case 13:{str = "LCN";}
    }
    SetVehicleNumberPlate(vID,str);
    CheckPanzerung(vID,i);
    if(FahrzeugInfo[i][fz_mod1]!=0) { AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod1]); }
    if(FahrzeugInfo[i][fz_mod2]!=0) { AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod2]); }
    if(FahrzeugInfo[i][fz_mod3]!=0) { AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod3]); }
    if(FahrzeugInfo[i][fz_mod4]!=0) { AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod4]); }
    if(FahrzeugInfo[i][fz_mod5]!=0) { AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod5]); }
    if(FahrzeugInfo[i][fz_mod6]!=0) { AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod6]); }
    if(FahrzeugInfo[i][fz_mod7]!=0) { AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod7]); }
    if(FahrzeugInfo[i][fz_mod8]!=0) { AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod8]); }
    if(FahrzeugInfo[i][fz_mod9]!=0) { AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod9]); }
    if(FahrzeugInfo[i][fz_mod10]!=0) { AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod10]); }
    if(FahrzeugInfo[i][fz_mod11]!=0) { AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod11]); }
    if(FahrzeugInfo[i][fz_mod12]!=0) { AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod12]); }
    if(FahrzeugInfo[i][fz_mod13]!=0) { AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod13]); }
    if(FahrzeugInfo[i][fz_mod14]!=0) { AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod14]); }
    return 1;
    }
    default:
    {
    SetVehicleToRespawn(vID);
    FahrzeugInfo[i][fz_Motor] = 0;
    FahrzeugInfo[i][fz_Licht] = 0;
    return 1;
    }
    }
    }
    }
    }
    default:
    {


    DestroyVehicle(FahrzeugInfo[id][fz_ID]);
    FahrzeugInfo[id][fz_ID] = s_CreateVehicle(FahrzeugInfo[id][fz_Model],FahrzeugInfo[id][fz_X],FahrzeugInfo[id][fz_Y],FahrzeugInfo[id][fz_Z],FahrzeugInfo[id][fz_A],FahrzeugInfo[id][fz_Farbe1],FahrzeugInfo[id][fz_Farbe2],-1);
    vID = FahrzeugInfo[id][fz_ID];
    FahrzeugInfo[id][fz_Motor] = 0;
    FahrzeugInfo[id][fz_Radio] = 0;
    FahrzeugInfo[id][fz_Lock] = 0;
    new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(FahrzeugInfo[id][fz_ID], engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(FahrzeugInfo[id][fz_ID], engine, lights, alarm, 0, bonnet, boot, objective);
    new str[32];
    switch(FahrzeugInfo[id][fz_Besitzer])
    {
    case 0:{str = "Zivi";}
    case 1:{str = "LSPD";}
    case 2:{str = "BND";}
    case 3:{str = "Assasins";}
    case 4:{str = "SAA";}
    case 5:{str = "Regierung";}
    case 6:{str = "LSMD";}
    case 7:{str = "OAmt";}
    case 8:{str = "LEER";}
    case 9:{str = "SAM AG";}
    case 10:{str = "Grove St.";}
    case 11:{str = "Ballas";}
    case 12:{str = "Al Quaida";}
    case 13:{str = "LCN";}
    }
    SetVehicleNumberPlate(FahrzeugInfo[id][fz_ID],str);
    CheckPanzerung(FahrzeugInfo[id][fz_ID],id);
    if(FahrzeugInfo[id][fz_mod1]!=0) { AddVehicleComponent(vID,FahrzeugInfo[id][fz_mod1]); }
    if(FahrzeugInfo[id][fz_mod2]!=0) { AddVehicleComponent(vID,FahrzeugInfo[id][fz_mod2]); }
    if(FahrzeugInfo[id][fz_mod3]!=0) { AddVehicleComponent(vID,FahrzeugInfo[id][fz_mod3]); }
    if(FahrzeugInfo[id][fz_mod4]!=0) { AddVehicleComponent(vID,FahrzeugInfo[id][fz_mod4]); }
    if(FahrzeugInfo[id][fz_mod5]!=0) { AddVehicleComponent(vID,FahrzeugInfo[id][fz_mod5]); }
    if(FahrzeugInfo[id][fz_mod6]!=0) { AddVehicleComponent(vID,FahrzeugInfo[id][fz_mod6]); }
    if(FahrzeugInfo[id][fz_mod7]!=0) { AddVehicleComponent(vID,FahrzeugInfo[id][fz_mod7]); }
    if(FahrzeugInfo[id][fz_mod8]!=0) { AddVehicleComponent(vID,FahrzeugInfo[id][fz_mod8]); }
    if(FahrzeugInfo[id][fz_mod9]!=0) { AddVehicleComponent(vID,FahrzeugInfo[id][fz_mod9]); }
    if(FahrzeugInfo[id][fz_mod10]!=0) { AddVehicleComponent(vID,FahrzeugInfo[id][fz_mod10]); }
    if(FahrzeugInfo[id][fz_mod11]!=0) { AddVehicleComponent(vID,FahrzeugInfo[id][fz_mod11]); }
    if(FahrzeugInfo[id][fz_mod12]!=0) { AddVehicleComponent(vID,FahrzeugInfo[id][fz_mod12]); }
    if(FahrzeugInfo[id][fz_mod13]!=0) { AddVehicleComponent(vID,FahrzeugInfo[id][fz_mod13]); }
    if(FahrzeugInfo[id][fz_mod14]!=0) { AddVehicleComponent(vID,FahrzeugInfo[id][fz_mod14]); }
    }
    }
    return 1;
    }


    Wenn ich das ganze jedoch eingebe, dann bekomme ich die Nachricht, "Uknow Command" und ich bekomme in der Log diese Fehler hier:


    Code
    [23:01:02] [debug] Run time error 4: "Array index out of bounds"
    [23:01:02] [debug]  Accessing element at index 65535 past array upper bound 599
    [23:01:02] [debug] AMX backtrace:
    [23:01:02] [debug] #0 0010e674 in s_CreateVehicle (vehicletype=0, Float:x=0.00000, Float:y=0.00000, Float:z=0.00000, Float:rotation=0.00000, color1=0, color2=0, respawn_delay=-1) at D:\Domi\Spiele\GTA San Andreas\Selfmade\gamemodes\inventar.pwn:26629
    [23:01:02] [debug] #1 000f8198 in s_SetVehicleToRespawn (vID=0, id=-1) at D:\Domi\Spiele\GTA San Andreas\Selfmade\gamemodes\inventar.pwn:24306
    [23:01:02] [debug] #2 000f75f8 in public ocmd_respawnall (playerid=0, params[]=@00135e98 " ") at D:\Domi\Spiele\GTA San Andreas\Selfmade\gamemodes\inventar.pwn:24249
    [23:01:02] [debug] #3 native CallLocalFunction () from samp-server.exe
    [23:01:02] [debug] #4 00000950 in public OnPlayerCommandText (playerid=0, cmdtext[]=@00135e68 "_respawnall") at D:\Domi\Spiele\GTA San Andreas\Selfmade\pawno\include\ocmd.inc:33


    Da das ganze über einen lokalen Server (auf meinem PC) auf einer MySQL Datenbank läuft habe ich auch geguckt wie viele Autos ich habe (weil er ja "Array upper bound" anzeigt!).
    Ich habe jedoch "nur" ca. 220 Autos in der Datenbank gespeichert...
    Also das Limit (MAX_CARS) wird nicht überschritten...


    Wisst ihr was mein Fehler ist? :huh:

  • ocmd:respawnall(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,4)) return SCM(playerid,RED,"Du bist nicht berechtigt!");
    for(new v=0; v<MAX_VEHICLES; v++)
    {
    if(GetVehicleDriver(v) == -1)
    {
    SetVehicleToRespawn(v);
    }
    }
    return 1;
    }


    das mit dem stock is unsin die sachen bleiben an den autos dran auch wen du sie respawmst bleibt neon,objecte usw dran