TextDrawn fehlerhafte Darstellung

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
  • Moin,


    ich arbeite derzeit an einem Tacho habe darfür auch ein gutes Tutorial gefunden von Robdeflop.
    Jetzt habe ich aber von meinem CarSystem, diverse Dinge hinzugefügt diese werden aber warum auch immer nicht Dargestellt bzw.
    nur fehlerhaft.


    Code:
    public TachoTimer()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
    {
    new Float:Entfernung, Float:Geschwindigkeit, Benzin = CarInfo[i][aBenzin], MBenzin = CarInfo[i][aMBenzin];// Die definierten Floats die mit den Werten gefüttert werden
    GetVehiclePos(GetPlayerVehicleID(i), X1[i], Y1[i], Z1[i]); //Erste Koordinate wird genommen
    Entfernung = floatsqroot(floatpower(floatabs(floatsub(X1[i], X2[i])), 2)+floatpower(floatabs(floatsub(Y1[i], Y2[i])), 2)+floatpower(floatabs(floatsub(Z1[i], Z2[i])), 2)); //Berechnung der Entfernung
    Geschwindigkeit = (Entfernung / (TACHOTIMER/1000)) * 3.6; //Meter/Sekunde in Kilometer/Stunde
    new Tachostring[1250];
    format(Tachostring, sizeof(Tachostring), "Km/h: %d~n~Benzin: %d/%d~n~Besitzer: %s", floatround(Geschwindigkeit), Benzin,MBenzin,CarInfo[i][aBesitzer]); //Hier das format, was es macht siehe oben im Wiki-Link. floatround rundet die Kommerzahl (Float:Geschwindigkeit) zu einer normalen ganzzahligen zahl, damit wir den Integer %d der für ganze zahlen ist, verwenden können.
    TextDrawSetString(Tacho[i], Tachostring);
    GetVehiclePos(GetPlayerVehicleID(i), X2[i], Y2[i], Z2[i]); //Zweite Koordinate wird genommen
    TextDrawShowForPlayer(i, Tacho[i]);
    }
    else
    {
    TextDrawHideForPlayer(i, Tacho[i]);
    }
    }
    return 1;
    }


    wie man sieht habe ich schon viele sachen ausprobiert aber keine Funktioniert.
    aber der zweiten Zeile (Benzin:) wird nach dem : nur noch 00/00 ausgeben, das dies nicht stimmt sehe ich ja an der Fahrzeug datei bzw. an meinem CMD für die Überprüfung.



    MFG: Apoolecu


    EDIT: Code ausgebessert

  • Versuch mal das da:
    public TachoTimer()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
    {
    new Float:Entfernung, Float:Geschwindigkeit, Benzin = CarInfo[i][aBenzin], MBenzin = CarInfo[i][aMBenzin];
    GetVehiclePos(GetPlayerVehicleID(i), X1[i], Y1[i], Z1[i]);
    GetVehiclePos(GetPlayerVehicleID(i), X2[i], Y2[i], Z2[i]);
    Entfernung = floatsqroot(floatpower(floatabs(floatsub(X1[i], X2[i])), 2)+floatpower(floatabs(floatsub(Y1[i], Y2[i])), 2)+floatpower(floatabs(floatsub(Z1[i], Z2[i])), 2));
    Geschwindigkeit = (Entfernung / (TACHOTIMER/1000)) * 3.6;
    new Tachostring[/*2580*/128];


    format(Tachostring, sizeof(Tachostring), "Km/h: %d~n~Benzin: %d/%d~n~Besitzer: %s", floatround(Geschwindigkeit), Benzin,MBenzin,CarInfo[i][aBesitzer]);
    TextDrawSetString(Tacho[i], Tachostring);
    TextDrawShowForPlayer(i, Tacho[i]);
    }
    else
    {
    TextDrawHideForPlayer(i, Tacho[i]);
    }
    }
    return 1;
    }


    Ich nehme an du fährst auf dem bild??


    edit bild gefunden
    edit2 frage

  • Hi


    Die Notlösung wäre noch diese:


    public TachoTimer()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
    {
    new Float:Entfernung, Float:Geschwindigkeit, Benzin = CarInfo[i][aBenzin], MBenzin = CarInfo[i][aMBenzin];// Die definierten Floats die mit den Werten gefüttert werden
    GetVehiclePos(GetPlayerVehicleID(i), X1[i], Y1[i], Z1[i]); //Erste Koordinate wird genommen
    Entfernung = floatsqroot(floatpower(floatabs(floatsub(X1[i], X2[i])), 2)+floatpower(floatabs(floatsub(Y1[i], Y2[i])), 2)+floatpower(floatabs(floatsub(Z1[i], Z2[i])), 2)); //Berechnung der Entfernung
    Geschwindigkeit = (Entfernung / (TACHOTIMER/1000)) * 3.6; //Meter/Sekunde in Kilometer/Stunde


    new Tachostring[50];
    format(Tachostring, sizeof(Tachostring), "Km/h: %d", floatround(Geschwindigkeit));
    TextDrawSetString(Tacho1[i], Tachostring);
    format(Tachostring, sizeof(Tachostring), "Benzin: %d/%d",Benzin,MBenzin);
    TextDrawSetString(Tacho2[i], Tachostring);
    format(Tachostring, sizeof(Tachostring), "Besitzer: %s",CarInfo[i][aBesitzer]);
    TextDrawSetString(Tacho3[i], Tachostring);


    GetVehiclePos(GetPlayerVehicleID(i), X2[i], Y2[i], Z2[i]); //Zweite Koordinate wird genommen


    TextDrawShowForPlayer(i, Tacho1[i]);
    TextDrawShowForPlayer(i, Tacho2[i]);
    TextDrawShowForPlayer(i, Tacho3[i]);
    }
    else
    {
    TextDrawHideForPlayer(i, Tacho1[i]);
    TextDrawHideForPlayer(i, Tacho2[i]);
    TextDrawHideForPlayer(i, Tacho3[i]);
    }
    }
    return 1;
    }


    Einfach wie gehabt den einen Textdraw nehmen, in Tacho1 umbenennen, copieren, 2 mal neu einfügen, in Tacho2 und Tacho3 umbenennen, und die Y Achse des Textdraws jeweils pro weiteren textdraw so um 10 bis 20 mehr zu machen.


    MFG, Robdeflop®

  • Hi


    Klappts denn? oder nicht umgesetzt? xD


    Ansonsten hier sin die aktuellen TD´s dafür, hab ich dir ma grad hingeschnuddelt :D


    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    Tacho1[i] = TextDrawCreate(300, 370, "Km/h:.....");
    TextDrawLetterSize(Tacho1[i], 0.4, 1.1);
    TextDrawFont(Tacho1[i], 1);
    TextDrawSetShadow(Tacho1[i], 2);
    TextDrawSetOutline(Tacho1[i],1);

    Tacho2[i] = TextDrawCreate(300, 380, "Tank.....");
    TextDrawLetterSize(Tacho2[i], 0.4, 1.1);
    TextDrawFont(Tacho2[i], 1);
    TextDrawSetShadow(Tacho2[i], 2);
    TextDrawSetOutline(Tacho2[i],1);

    Tacho3[i] = TextDrawCreate(300, 390, "Besitzer.....");
    TextDrawLetterSize(Tacho3[i], 0.4, 1.1);
    TextDrawFont(Tacho3[i], 1);
    TextDrawSetShadow(Tacho3[i], 2);
    TextDrawSetOutline(Tacho3[i],1);
    }


    Einfach mit den alten ersetzen, und denk dran sie neu zu definieren ;)


    MFG, Robdeflop®

  • Hi


    Rooofl oO???


    Kann es sein dass du vielleicht einen Leeren Textdraw unten bei der Position hast? Oder eine Unsichtbare Textdraw-Box, welche über dem Textdraw vom Tacho liegt? ist das möglich? Was anderes kann ich mir nicht vorstellen^^


    MFG, Robdeflop®

  • Hi


    Hmm oO Nun bin sogar ich sprachlos !!
    Ich habe im moment echt garkein verständnis dafür, warum das nicht geht :/


    Weiß kein anderer weiter? Ansonsten könnte ich dir noch Hilfe per Teamviewer anbieten


    MFG, Robdeflop®