Farhzeug abfrage per Level

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 liebe leute.




    heute wende ich mich mal wieder mit nem problem an euch.


    ich möchte gerne, dass man bestimmte fahrzeuge nur mit nem bestimmten level fahren kann. ich hab schon alles versucht aber irgendwie klappt es nicht. ich werd aus dem fahrzeug geschmissen, so wie es sein soll. nur die level abfrage geht nicht. egal mit welchem level ich es versuche.




    public OnPlayerStateChange(playerid, newstate, oldstate)


    {if(GetVehicleModel(newcar) == 462)


    {


    if(PlayerInfo[playerid][pLevel] > 2)


    {


    RemovePlayerFromVehicle(playerid);


    SendClientMessage(playerid,ROT,"Du brauchst Level 2 um dieses Fahrzeug zu fahren!");


    return 1;


    }


    } return 1;


    }





    habs auch schon unter OnPlayerEnterVehicle versucht, da passiert aber genau das selbe. ich hoffe ihr könnt mir weiter helfen, da mir mittlerweile der kopf raucht. ?(

  • Probiere es mal so..
    Das Level kannst du natürlich ändern, genau wie die Model-ID nach der abgefragt werden soll.
    Das Auto mit der Model-ID 462 kannst du nun ausschließlich als Level 1 oder Level 2er fahren.
    Mit allen höheren Leveln wirst du hinaus befördert.

    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
    {
    if(GetVehicleModel( GetPlayerVehicleID(playerid) ) == 462)
    {
    if(PlayerInfo[playerid][pLevel] > 2)
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,ROT,"Du brauchst Level 2 um dieses Fahrzeug zu fahren!");
    return 1;
    }
    }
    }
    return 1;
    }


    //edit 1: Code bisschen zusammengefasst


    //edit 2:
    Ich würde allerdings die Möglichkeit via OnPlayerEnterVehicle bevorzugen..


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(GetVehicleModel(vehicleid) == 426 && !ispassenger)
    {
    if(PlayerInfo[playerid][pLevel] > 2)
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,ROT,"Du brauchst Level 2 um dieses Fahrzeug zu fahren!");
    return 1;
    }
    }
    }

    2 Mal editiert, zuletzt von Shine ()

  • Habe oben noch eine zweite Möglichkeit reingehauen über OnPLayerEnterVehicle, probiere das mal.


    //edit:
    Wenn es nicht geht, schau mal bis wohin er kommt..


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    //Geht er hier rein? Mit Sicherheit..
    SendClientMessage(playerid, FARBE, "Du bist in ein Auto eingestiegen.");
    if(GetVehicleModel(vehicleid) == 426 && !ispassenger)
    {
    //Kommt er bis hier?
    SendClientMessage(playerid, FARBE, "Automodel ist 426, du bist als Fahrer eingestiegen.");
    if(PlayerInfo[playerid][pLevel] > 2)
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,ROT,"Du brauchst Level 2 um dieses Fahrzeug zu fahren!");
    return 1;
    }
    //Oder passiert immer das hier, egal ob du Level 1 oder 5 bist?
    else{ SendClientMessage(playerid, FARBE, "Dein Level ist 1 oder 2"); }
    }
    }

  • Probiere einfach mal das hier..
    Berichte was dadurch passiert.
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(GetVehicleModel(vehicleid) == 426 && !ispassenger)
    {
    if(PlayerInfo[playerid][pLevel] > 2)
    {
    RemovePlayerFromVehicle(playerid);
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    SetPlayerPos(playerid, x, y, z+5);
    SendClientMessage(playerid,ROT,"Du brauchst Level 2 um dieses Fahrzeug zu fahren!");
    return 1;
    }
    }
    }

  • okay... ich bekomm die meldung das ich level 2 brauche und falle neben dem auto vom himmel, wenn ich enter drücke. wenn ich SetPlayerPos(playerid, x, y, z+5); in SetPlayerPos(playerid, x, y, z); ändere sollte er doch einfach davor stehen bleiben oder??


    // edit


    alles klar.. klappt.. super. ich danke dir vielmals :thumbup: :thumbup:

  • ja soweit klappt es prima.


    aber nun hab ich dazu ne kleine frage. wenn ich if(GetVehicleModel(vehicleid) == 401 || 406 && !ispassenger) mache, wird das bei jedem fahrzeug gesagt. aber ich möchte halt nur bei bestimmten fahrzeugen diese abfrage haben. ich könnte zwar die abfrage für jedes fahreug machen aber das wäre ja ... puhh.
    sorry für die dummen fragen. arbeite schon seit wochen an meinem script und so langsam raucht mir der kopf :cursing:



    //edit


    okay habs selber raus bekommen 8)




    einfach if(GetVehicleModel(vehicleid) == 401 || 406 && !ispassenger) durch new model = GetVehicleModel(vehicleid); if(model==401|| model==563) ersezten.


  • Ich würde da lieber ClearAnimations(playerid); anstatt RemovePlayerFromVehicle benutzen, da OnPlayerEnterVehicle direkt abfragt, ob der Spieler ENTER gedrückt hat und gerade einsteigen will. :D

    Let the party begin - turn all the lights on!