Tank Art wird nicht angezeigt

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
  • Hey meine Tankart wird nicht angezeigt was genau mach ich hier falsch ? ich bin ein wenig am Experimentieren weil ich eine Tank Diesel- benzin anzeige machen möchte
    Derzeit wird mir nix angezeigt hier meine Codes




    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(Diesel(vehicleid))
    {
    TextDrawShowForPlayer(playerid, Textdraw0);
    new Tankstring[528];
    format(Tankstring,200,"~r~(Diesel)");
    TextDrawSetString(Textdraw0, Tankstring);


    pInfo[playerid][pTankart] = 1;//Diesel
    }
    }




    public Diesel(carid)
    {
    new model = GetVehicleModel(carid);
    {
    if(model == 400 || model == 403 || model == 406 || model == 407 || model == 408 || model == 413 || model == 414)
    {
    return 1;
    }
    if(model == 416 || model == 418 || model == 422 || model == 427 || model == 431 || model == 433 || model == 437)
    {
    return 1;
    }
    if(model == 443 || model == 444 || model == 455 || model == 456 || model == 470 || model == 478 || model == 483)
    {
    return 1;
    }
    if(model == 486 || model == 489 || model == 498 || model == 499 || model == 500 || model == 508 || model == 514)
    {
    return 1;
    }
    if(model == 515 || model == 524 || model == 525 || model == 528 || model == 531 || model == 535 || model == 544)
    {
    return 1;
    }
    }
    return 0;
    }




    pInfo[playerid][pTankart] = 1; Soll diesel sein
    pInfo[playerid][pTankart] = 2; Soll Benzin


    Was genau mach ich falsch bzw wenn es so nicht möglich ist wie genau mach ich dass denn?

  • Du hast zu viele Klammern in deiner Diesel Abfrage. Das "new" braucht keine Klammer auf (Zeile 4) und damit auch keine Klammer zu (Zeile 24/25?) .
    Und am Ende des "public" (OnPlayerEnterVehicle) muss auch noch ein "return 1;".


    Das Diesel Public sollte außerdem als "stock" definiert werden. Erklärung dazu hier: http://wiki.sa-mp.com/wiki/Function


    Gibt der Compiler denn keine Fehler aus?

  • Du hast zu viele Klammern in deiner Diesel Abfrage. Das "new" braucht keine Klammer auf (Zeile 4) und damit auch keine Klammer zu (Zeile 24/25?) .
    Und am Ende des "public" (OnPlayerEnterVehicle) muss auch noch ein "return 1;".


    Das Diesel Public sollte außerdem als "stock" definiert werden. Erklärung dazu hier: http://wiki.sa-mp.com/wiki/Function


    Gibt der Compiler denn keine Fehler aus?

    Nein Keine Fehler Mein Problem ist, dass wenn ich im Fahrzeug einsteige weder Benzin noch Diesel Angezeigt bekommt im Textdraw dieser zeigt erst garnicht an ich weiß nicht ob die Abfrage bzw das public so richtig ist so habe ich es derzeit




    if(Diesel(vehicleid))
    {
    TextDrawShowForPlayer(playerid, TankArtDraw);
    new Tankstring[528];
    format(Tankstring, sizeof(Tankstring), "~r~(Diesel)");
    TextDrawSetString(TankArtDraw, Tankstring);


    pInfo[playerid][pTankart] = 1;//Diesel
    }
    else
    {
    TextDrawShowForPlayer(playerid, TankArtDraw);


    new Tankstring[528];
    format(Tankstring, sizeof(Tankstring), "~g~(Benzin)");
    TextDrawSetString(TankArtDraw, Tankstring);


    pInfo[playerid][pTankart] = 2;//Benzin


    }




    public Diesel(carid)
    {
    new model = GetVehicleModel(carid);
    {
    if(model == 400 || model == 403 || model == 406 || model == 407 || model == 408 || model == 413 || model == 414)
    {
    return 1;
    }
    if(model == 416 || model == 418 || model == 422 || model == 427 || model == 431 || model == 433 || model == 437)
    {
    return 1;
    }
    if(model == 443 || model == 444 || model == 455 || model == 456 || model == 470 || model == 478 || model == 483)
    {
    return 1;
    }
    if(model == 486 || model == 489 || model == 498 || model == 499 || model == 500 || model == 508 || model == 514)
    {
    return 1;
    }
    if(model == 515 || model == 524 || model == 525 || model == 528 || model == 531 || model == 535 || model == 544)
    {
    return 1;
    }
    }
    return 0;

    }

  • Das wird so nicht klappen, da du nur ein Textdraw für alle Spieler hast, somit zeigt es jedem Spieler immer den gleichen Tank-Typ an.
    Hinsichtlich der Anzahl verwendeter Textdraws macht es hier am meisten Sinn, einfach zwei Textdraws zu erstellen, die statisch sind. Eines steht für Diesel und eins für Benzin.


    Der Code beim Einsteigen sieht dann so aus:
    if(Diesel(vehicleid))
    {
    TextDrawShowForPlayer(playerid, TankArtDiesel);
    pInfo[playerid][pTankart] = 1;//Diesel
    }
    else
    {
    TextDrawShowForPlayer(playerid, TankArtBenzin);
    pInfo[playerid][pTankart] = 2;//Benzin
    }

  • Das wird so nicht klappen, da du nur ein Textdraw für alle Spieler hast, somit zeigt es jedem Spieler immer den gleichen Tank-Typ an.
    Hinsichtlich der Anzahl verwendeter Textdraws macht es hier am meisten Sinn, einfach zwei Textdraws zu erstellen, die statisch sind. Eines steht für Diesel und eins für Benzin.


    Der Code beim Einsteigen sieht dann so aus:
    if(Diesel(vehicleid)){ TextDrawShowForPlayer(playerid, TankArtDiesel); pInfo[playerid][pTankart] = 1;//Diesel}else{ TextDrawShowForPlayer(playerid, TankArtBenzin); pInfo[playerid][pTankart] = 2;//Benzin}

    Also geklappt hatte das ganze nun doch, da ich es unter OnPlayerState... Reingehauen habe.
    Aber deine Version ist simpler und deshalb benutze ich diese, wiso ich nicht gleich selber darauf gekommen bin. Ich danke dir für deiner Hilfe

  • Also geklappt hatte das ganze nun doch, da ich es unter OnPlayerState... Reingehauen habe.

    OnPlayerStateChange ist dafür meist das richtige Callback, denn OnPlayerEnterVehicle wird zu dem Zeitpunkt aufgerufen, wenn der Spieler "Enter"/"F" drückt, also der Spieler ja noch gar nicht im Fahrzeug ist. "Meist" deshalb, weil es auch Systeme geben kann, die es bereits vorher anzeigen möchten.
    Bei OnPlayerStateChange ist der Spieler dann im Fahrzeug.