Bei Autoausstieg Car destroy

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
  • Dann wenn du einsteigst.
    Dort speicherst du einfach die ID


    unter OnPlayerStateChange
    Wenn newstate == PLAYER_STATE_DRIVER ist
    Eine Variable auf die ID setzen


    myCar[playerid] = GetPlayerVehicleID(playerid);


    Grüße

    ik bin der vito c:

  • CaptainKevin:
    Dann hast du das Problem, dass das Fahrzeug während du aussteigst schon weg ist.


    Department: Dann lern am besten erstmal die Basics...
    Variable erstellen.
    Bei connect auf -1 stellen
    Beim wechsel ins Fahrzeug auf die Fahrzeug ID setzen (UNter OnPlayerStateChange)
    Dann unter onplayerstatechange die gespeicherte Fahrzeug ID speichern.


    Schöne Grüße..

    ik bin der vito c:

  • public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_ONFOOT)
    {
    DestroyVehicle(GetPlayerVehicleID(playerid));
    }
    return 1;
    }


    so geht das nicht oder?


    //edit tuts nichts.


    Das problem bei



    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    DestroyVehicle(GetPlayerVehicleID(playerid));
    return 1;
    }
    ist ,dass auch der Beifahrer dann das Auto zerstört.

  • new bool:driver[MAX_PLAYERS]; // global


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(ispassenger == 0) //fahrer
    {
    driver[playerid] = true;
    }
    }


    Beim connecten noch auf "false" stellen.



    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    if(driver[playerid] == true)
    {
    DestroyVehicle(vehicleid);
    driver[playerid] = false;
    }
    }


  • forward DeleteVehicleAfterTime(vehicleid)


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    SetTimerEx("DeleteVehicleAfterTime", 60000, false, "i", vehicleid);
    return 1;
    }


    /* oder */


    new cpVehicle[MAX_PLAYERS];


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(ispassenger == 0)
    {
    cpVehicle[playerid] = vehicleid;
    return 1;
    }
    return 1;
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_ONFOOT)
    {
    SetTimerEx("DeleteVehicleAfterTime", 60000, false, "i", cpVehicle[playerid]);
    return 1;
    }
    }


    public DeleteVehicleAfterTime(vehicleid)
    {
    DestroyVehicle(vehicleid);
    return 1;
    }


    Ungetestet, müsste aber funktionieren.