Fahrzeug beim absteigen/aussteigen wieder öffnen?

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
  • Guten Tag zusammen! :)


    Ich bin momentan dabei, es so zu machen, wenn man vom Fahrzeug absteigt, aussteigt oder sogar runterfällt, dass es sich automatisch "entlockt".
    Das ganze könnte man theoretisch über einen Timer einfacher wie nie lösen, allerdings ist das für mich viel zu "ressourcenfressend".
    Deswegen dachte ich mir, kann man das ja auch über OnPlayerStateChange machen.


    Nur funktioniert das ganze leider nicht ganz.

    if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER)
    {
    HideTachoForPlayer(playerid);
    if(!(IsAFraktionsVeh(vehicleid) == INVALID_VEHICLE_ID))
    {
    if(IsValidVehicle(vehicleid))
    {
    new fV = IsAFraktionsVeh(vehicleid);
    UnlockVehicle(fVehicle[fV][vehID]);
    }
    }
    for(new i=0;i<GetMaxPlayers();i++)
    {
    for(new slot=0;slot<MAX_PLAYER_VEHICLES;slot++)
    {
    if(vehicleid == PrivateVehicle[i][slot][vehID])
    {
    UnlockVehicle(PrivateVehicle[i][slot][vehID]);
    }
    }
    if(vehicleid == Spieler[i][pBusID])
    {
    UnlockVehicle(Spieler[i][pBusID]);
    }
    }
    if(vehicleid == Spieler[playerid][pBike])
    {
    UnlockVehicle(Spieler[playerid][pBike]);
    }
    }


    Ich denke einfach mal, "vehicleid" ist sogesehen INVALID_VEHICLE_ID, weil ja nur der "alte Status" abgefragt wird, und da sitze ich sogesehen ja nicht mehr im/auf dem Fahrzeug.


    Kann da jemand helfen? Wäre echt dankbar! :thumbup:

  • OnPlayerExitVehicle schon versucht? ^^
    Dann einfach folgendes rein:
    HideTachoForPlayer(playerid);
    if(!(IsAFraktionsVeh(vehicleid) == INVALID_VEHICLE_ID))
    {
    if(IsValidVehicle(vehicleid))
    {
    new fV = IsAFraktionsVeh(vehicleid);
    UnlockVehicle(fVehicle[fV][vehID]);
    }
    }
    for(new i=0;i<GetMaxPlayers();i++)
    {
    for(new slot=0;slot<MAX_PLAYER_VEHICLES;slot++)
    {
    if(vehicleid == PrivateVehicle[i][slot][vehID])
    {
    UnlockVehicle(PrivateVehicle[i][slot][vehID]);
    }
    }
    if(vehicleid == Spieler[i][pBusID])
    {
    UnlockVehicle(Spieler[i][pBusID]);
    }
    }
    if(vehicleid == Spieler[playerid][pBike])
    {
    UnlockVehicle(Spieler[playerid][pBike]);
    }

  • Falls du möchtest dass wenn niemand drinne sitzt, dass man da ganz normal reinkann, und wenn jemand drinne sitzt, dass man nicht rausgeworfen kann:



    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    new vehicleid = GetPlayerVehicleID(playerid) ,engine,lightss,alarm,doors,bonnet,boot,objective;
    //Beim Einsteigen wird das Fahrzeug verschlossen!
    if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
    {
    GetVehicleParamsEx(vehicleid,engine,lightss,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vehicleid,engine,lightss,alarm,VEHICLE_PARAMS_ON,bonnet,boot,objective);
    return 1;
    }
    else if(oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_ONFOOT)
    {
    //Beim Aussteigen wird das Fahrzeug geöffnet!
    GetVehicleParamsEx(vehicleid,engine,lightss,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vehicleid,engine,lightss,alarm,VEHICLE_PARAMS_OFF,bonnet,boot,objective);
    return 1;
    }
    return 1;
    }


    Versuche das mal .. :thumbup:

  • Das Problem könnte oben sein, dass GetPlayerVehicleID nicht mehr funktioniert, weil er ja schon ausgestiegen ist. Ich weiß nicht in welchem Moment der Callback aufgerufen wird und wie SAMP das dann handhabt. Das musst du einfach mal wie übermir hier beschrieben testen, lass dir evtl. die VehicleID printen!
    Wenn der immer 0 ausgibt musst du einfach immer beim Einsteigen (NICHT ...EnterVeh, sondern auch OnPlayerStateChange) eine Variable für den Spieler mit der VehicleID füllen.


    MfG Kevin