Fahrzeug frage

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 Leute, ich habe mal eine Frage zum Fahrzeug betreten.
    Und zwar möchte ich wenn einer über Level2 ist das er eine Meldung bekommt : Du darfst nicht mehr mit diesen Fahrzeug fahren.
    Aber wenn ich da einen SendClientMessage reinsetze spammt er mir den Chat voll Ich bräuchte eure Hilfe.



    for(new rl;rl<sizeof(Caddy);rl++)
    {
    if(IsVehicleInUse(Caddy[rl]) || SpielerInfo[i][sLevel] > 2)
    {
    SetVehicleParamsForPlayer(Caddy[rl],i,0,1);
    }
    else SetVehicleParamsForPlayer(Caddy[rl],i,0,0);
    }

  • Zum einen kannst du das über OnPlayerStateChange oder OnPlayerEnterVehicle machen, je nach dem wann du die Nachricht angezeigt haben möchtest wenn der spieler es versucht einzusteigen oder schon im Fahrzeug sitzt. Jedoch aufgrund deines codes bietet sich das eher an OnPlayerEnterVehicle zu nutzen


    Wie ErkSon schon mitgeteilt hat können ist hier kein SendClientMessage enthalten.


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(ispassenger == 0)
    {
    for(new rl;rl<sizeof(Caddy);rl++)
    {
    if(Caddy[rl] == vehicleid && SpielerInfo[playerid][sLevel] > 2)
    {
    return SetVehicleParamsForPlayer(Caddy[rl],playerid,0,1);
    }
    }
    SetVehicleParamsForPlayer(Caddy[rl],playerid,0,0);
    }
    return 1;
    }

  • Dies passiert nun:


    Spammt wieder den Chat voll.



    for(new rl;rl<sizeof(Caddy);rl++)
    {
    if(IsVehicleInUse(Caddy[rl]) || SpielerInfo[i][sLevel] > 2)
    {
    SetVehicleParamsForPlayer(Caddy[rl],i,0,1);
    return SendClientMessage(i,Farbe_Dunkelblau,"Du kannst dieses Fahrzeug nicht mehr Fahren!");
    }
    else SetVehicleParamsForPlayer(Caddy[rl],i,0,0);
    }

  • Normal sollte der code durch das return abgebrochen werden jedoch kann ich mir nicht so wirklich vorstellen was du hier gemacht hast hast du eine extra funktion die wieder erneut aufgerufen wrid ?



    Zudem benutz doch die variante welche ich dir oben geschrieben habe.


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(ispassenger == 0)
    {
    for(new rl;rl<sizeof(Caddy);rl++)
    {
    if(Caddy[rl] == vehicleid && SpielerInfo[playerid][sLevel] > 2)
    {
    SetVehicleParamsForPlayer(Caddy[rl],playerid,0,1);
    return SendClientMessage(playerid,Farbe_Dunkelblau,"Du kannst dieses Fahrzeug nicht mehr Fahren!");
    }
    }
    SetVehicleParamsForPlayer(Caddy[rl],playerid,0,0);
    }
    return 1;
    }

  • Wenn ich das ins Script einfüge was du mir Geschickt hast steht da


    C:\Users\******\Desktop\Script\gamemodes\script.pwn(10350) : error 017: undefined symbol "rl"
    Wenn ich dann new rl; mache
    C:\Users\******\Desktop\Script\gamemodes\script.pwn(10343) : warning 219: local variable "rl" shadows a variable at a preceding level

  • public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(ispassenger == 0)
    {

    for(new rl;rl<sizeof(Caddy);rl++)
    {
    if(Caddy[rl] == vehicleid && SpielerInfo[playerid][sLevel] > 2)
    {
    SetVehicleParamsForPlayer(Caddy[rl],playerid,0,1);
    return SendClientMessage(playerid,Farbe_Dunkelblau,"Du kannst dieses Fahrzeug nicht mehr Fahren!");
    }
    SetVehicleParamsForPlayer(Caddy[rl],playerid,0,0);
    }
    }
    return 1;
    }


    so sollte das passen das reseten wird dazu benötigt falls der spieler vom level zurück gesetzt wird und in der nähe des fahrzeug sich befindet