Timer Fehler

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
  • Hallo ich bekomme immer ein error wenn ich mein Motor anmache und der Timer startet.


    HIER DER ERROR:


    [21:24:06] [debug] Run time error 4: "Array index out of bounds"
    [21:24:06] [debug] Accessing element at negative index -400
    [21:24:06] [debug] AMX backtrace:
    [21:24:06] [debug] #0 000414b8 in public vehTimer (7, 0) from selfmade.amx


    HIER DER TIMER:


    forward vehTimer(playerid,vehicleid);
    public vehTimer(playerid,vehicleid)
    {
    new string[220];
    //FAHRZEUGNAME
    format(string,sizeof(string),"%s",VehicleNames[GetVehicleModel(GetPlayerVehicleID(playerid)) - 400]);
    PlayerTextDrawSetString(playerid,Tachoname[playerid],string);
    //KMH
    format(string,sizeof(string),"Geschwindigkeit: %i Km/H",getPlayerSpeed(playerid));
    PlayerTextDrawSetString(playerid,Tachokmh[playerid],string);
    //TANK
    format(string,sizeof(string),"Tank: %i/%i L",Tankmenge[GetPlayerVehicleID(playerid)],GasMax[GetVehicleModel(GetPlayerVehicleID(playerid))-400]);
    PlayerTextDrawSetString(playerid,Tachotank[playerid],string);
    //TANKART
    format(string,sizeof(string),"Treibstoff: %s",Gasname(GetPlayerVehicleID(playerid)));
    PlayerTextDrawSetString(playerid,Tachoart[playerid],string);
    //MOTOR
    if(motor[GetPlayerVehicleID(playerid)] == false)
    {
    PlayerTextDrawColor(playerid,Tachom[playerid],rot);
    }
    else
    {
    PlayerTextDrawColor(playerid,Tachom[playerid],grün);
    }
    return 1;
    }

  • Nutze doch nicht GetPlayerVehicleID, wenn du schon die vehicleid als Parameter übergibst :)


    Der Fehler kommt zustande, weil der Spieler sich in keinem Fahrzeug befindet.


    Musst also oben abfragen, if(vehicleid != 0) damit du weißt, dass er sich auch in einem befindet ;)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • ocmd:motor(playerid,params[])
    {
    new vid = GetPlayerVehicleID(playerid);
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
    if(IsPlayerInAnyVehicle(playerid) && !IsAFahrrad(vid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && GetPlayerState(playerid) != PLAYER_STATE_ONFOOT)
    {
    if(motor[vid] == false)
    {
    vehT[vid] = SetTimerEx("vehTimer",1000,true,"ii",vid,playerid);
    motor[vid] = true;
    SetVehicleParamsEx(vid,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
    GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~W~Motor wird ~g~gestartet!", 2000, 5);
    PlayerTextDrawShow(playerid,Tachobox[playerid]);
    PlayerTextDrawShow(playerid,Tachoname[playerid]);
    PlayerTextDrawShow(playerid,Tachokmh[playerid]);
    PlayerTextDrawShow(playerid,Tachotank[playerid]);
    PlayerTextDrawShow(playerid,Tachoart[playerid]);
    PlayerTextDrawShow(playerid,Tachot[playerid]);
    PlayerTextDrawShow(playerid,Tachom[playerid]);
    PlayerTextDrawShow(playerid,Tachol[playerid]);
    }
    else
    {
    KillTimer(vehT[vid]);
    SetVehicleParamsEx(vid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    motor[vid] = false;
    GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~W~Motor wird ~r~gestoppt!", 2000, 5);
    PlayerTextDrawHide(playerid,Tachobox[playerid]);
    PlayerTextDrawHide(playerid,Tachoname[playerid]);
    PlayerTextDrawHide(playerid,Tachokmh[playerid]);
    PlayerTextDrawHide(playerid,Tachotank[playerid]);
    PlayerTextDrawHide(playerid,Tachoart[playerid]);
    PlayerTextDrawHide(playerid,Tachot[playerid]);
    PlayerTextDrawHide(playerid,Tachom[playerid]);
    PlayerTextDrawHide(playerid,Tachol[playerid]);
    }
    }
    return 1;
    }