Textdraw-Fehler

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,


    da ich seit mehreren Tagen auch einen Script anfertige und leider noch nicht so viele Scriptingkenntnisse habe, muss ich euch mal folgendes Problem darstellen:


    Ich bin zurzeit daran, eine Schadensanzeige für Fahrzeuge zu erstellen, die man nur sehen soll, wenn man auf dem Fahrersitz platz nimmt.
    Ich habe am Anfang unter dem #include die Textdraw definiert:
    new Text:dmg;


    Danach habe ich unter 'OnPlayerEnterVehicle' den hauptsächlichen Code programmiert:

    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(GetPlayerVehicleSeat(playerid) == 0)
    {
    new dmgstring[22], Float:SCHADEN;
    GetVehicleHealth(vehicleid, SCHADEN);
    format(dmgstring, sizeof(dmgstring), "Schaden: ~r~%s", SCHADEN);


    dmg = TextDrawCreate(300.0, 360.0, dmgstring);
    TextDrawLetterSize(dmg, 0.3, 1.7);
    TextDrawShowForPlayer(playerid, dmg);
    }
    return 1;
    }

    Ich hoffe, dass wer von euch um Rat weis und mir helfen kann. Wenn ich in das Fahrzeug einsteige, passiert nämlich garnichts!




    lg Paddy

  • #edit^^


    Macht das ganz oben if playerdriver etc und soweiter^^

  • Vlt erklärst du auch den Fehler:


    Aaaaalso, generell musst du bei format nach den Typ angeben:


    Wir unterscheiden
    %s : Strings (also Zeichenkennten)
    %d : Integ. (also ganze Zahlen)
    %f : Floats (Fließzahlen, also Zahlen mit Nachkommastellen!)


    %% fügt ein Prozentzeichen ein.


    Was wir übermitteln in Schaden ist ein Float, generell wäre jetzt also ein %f nötig.
    Jedoch runden wir den Float und es wird dabei ein Integer returnt, von daher %d!


    Schaue dir im Wiki am besten nochmal die Funktionen an ;)


  • Das funktioniert so auch leider nicht :(

  • 1. OnPlayerEnterVehicle ist ein Callback, daß nur dann aufgerufen wird, wenn man dabei ist in ein Vehikel einzusteigen - also es noch nicht ist. ;)
    2. benutz



    public OnPlayerStateChange(playerid, oldstate, newstate)
    {
    if (oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
    {
    // Spieler sitzt nun am Steuer des Fahrzeuges
    }
    if (oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_ONFOOT)
    {
    // Spieler saß am Steuer des Fahrzeuges und ist nun zu Fuss
    }
    }