TextDraw ist doppelt so gross

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 Com,


    Ich habe jetzt genau zwei Probleme erstes Problem, mein Textdraw ist doppelt so lang (höhe) wie er normal erstellt wurde?


    Spoiler anzeigen
    Die Erstellung Liste ich mal nur von der Box auf:

    Spoiler anzeigen
    BlitzerMenu = TextDrawCreate(238.000000, 142.122222, "usebox");
    TextDrawLetterSize(BlitzerMenu, 0.000000, 17.520370);
    TextDrawTextSize(BlitzerMenu, -2.000000, 0.000000);
    TextDrawAlignment(BlitzerMenu, 1);
    TextDrawColor(BlitzerMenu, 0);
    TextDrawUseBox(BlitzerMenu, true);
    TextDrawBoxColor(BlitzerMenu, 102);
    TextDrawSetShadow(BlitzerMenu, 0);
    TextDrawSetOutline(BlitzerMenu, 0);
    TextDrawBackgroundColor(BlitzerMenu, 255);
    TextDrawFont(BlitzerMenu, 0);


    Zweites Problem bein Ankiclekn der + und - geht das in de rmItte nicht und ich kann ins Minus gehen das ahbe ich aber eigentlich in der if Abfrage geregelt?


    Spoiler anzeigen
    public OnPlayerClickTextDraw(playerid, Text:clickedid)
    {
    if(clickedid == BlitzerMenu17)
    {
    if(BlitzerInfo[blitzerid[playerid]][Strafe] >= 200 || BlitzerInfo[blitzerid[playerid]][Strafe] <= 1000)
    {
    BlitzerInfo[blitzerid[playerid]][Strafe] -= 5;
    new string[64];
    format(string,sizeof(string),"$%d",BlitzerInfo[blitzerid[playerid]][Strafe]);
    TextDrawHideForPlayer(playerid,BlitzerMenu18);
    TextDrawSetString(BlitzerMenu18,string);
    TextDrawShowForPlayer(playerid,BlitzerMenu18);
    }
    else return SendClientMessage(playerid,WHITE,"Fehler, die Werte sind zu niedrig bzw zu hoch!");
    }
    if(clickedid == BlitzerMenu19)
    {
    if(BlitzerInfo[blitzerid[playerid]][Strafe] >= 200 && BlitzerInfo[blitzerid[playerid]][Strafe] <= 1000)
    {
    BlitzerInfo[blitzerid[playerid]][Strafe] += 5;
    new string[64];
    format(string,sizeof(string),"$%d",BlitzerInfo[blitzerid[playerid]][Strafe]);
    TextDrawHideForPlayer(playerid,BlitzerMenu18);
    TextDrawSetString(BlitzerMenu18,string);
    TextDrawShowForPlayer(playerid,BlitzerMenu18);
    }
    else return SendClientMessage(playerid,WHITE,"Fehler, die Werte sind zu niedrig bzw zu hoch!");
    }
    if(clickedid == BlitzerMenu20) //Das geht nicht
    {
    if(BlitzerInfo[blitzerid[playerid]][Geschwindigkeit] >= 30 && BlitzerInfo[blitzerid[playerid]][Geschwindigkeit] <= 280)
    {
    BlitzerInfo[blitzerid[playerid]][Strafe] -= 10;
    new string[64];
    format(string,sizeof(string),"%d KM/H",BlitzerInfo[blitzerid[playerid]][Strafe]);
    TextDrawHideForPlayer(playerid,BlitzerMenu22);
    TextDrawSetString(BlitzerMenu22,string);
    TextDrawShowForPlayer(playerid,BlitzerMenu22);
    }
    else return SendClientMessage(playerid,WHITE,"Fehler, die Werte sind zu niedrig bzw zu hoch!");
    }
    if(clickedid == BlitzerMenu23)
    {
    if(BlitzerInfo[blitzerid[playerid]][Strafe] >= 30 || BlitzerInfo[blitzerid[playerid]][Strafe] <= 280)
    {
    BlitzerInfo[blitzerid[playerid]][Geschwindigkeit] += 10;
    new string[64];
    format(string,sizeof(string),"%d KM/H",BlitzerInfo[blitzerid[playerid]][Geschwindigkeit]);
    TextDrawHideForPlayer(playerid,BlitzerMenu22);
    TextDrawSetString(BlitzerMenu22,string);
    TextDrawShowForPlayer(playerid,BlitzerMenu22);
    }
    else return SendClientMessage(playerid,WHITE,"Fehler, die Werte sind zu niedrig bzw zu hoch!");
    }
    if(clickedid == BlitzerMenu25)
    {
    if(BlitzerInfo[blitzerid[playerid]][Strafe] >= 0 || BlitzerInfo[blitzerid[playerid]][Strafe] <= 40)
    {
    BlitzerInfo[blitzerid[playerid]][Strafe] -= 2;
    new string[64];
    format(string,sizeof(string),"%d KM/H",BlitzerInfo[blitzerid[playerid]][Strafe]);
    TextDrawHideForPlayer(playerid,BlitzerMenu26);
    TextDrawSetString(BlitzerMenu26,string);
    TextDrawShowForPlayer(playerid,BlitzerMenu26);
    }
    else return SendClientMessage(playerid,WHITE,"Fehler, die Werte sind zu niedrig bzw zu hoch!");
    }
    if(clickedid == BlitzerMenu27)
    {
    if(BlitzerInfo[blitzerid[playerid]][Strafe] >= 0 || BlitzerInfo[blitzerid[playerid]][Strafe] <= 40)
    {
    BlitzerInfo[blitzerid[playerid]][Strafe] += 2;
    new string[64];
    format(string,sizeof(string),"%d MH/H",BlitzerInfo[blitzerid[playerid]][Strafe]);
    TextDrawHideForPlayer(playerid,BlitzerMenu26);
    TextDrawSetString(BlitzerMenu26,string);
    TextDrawShowForPlayer(playerid,BlitzerMenu26);
    }
    else return SendClientMessage(playerid,WHITE,"Fehler, die Werte sind zu niedrig bzw zu hoch!");
    }
    return 1;
    }


    Danke euch


    Nico

    • Offizieller Beitrag

    Hey,
    schau dir mal diese Zeile an, und den ersten Parameter.
    "-2.000000" das geht bis ganz nach unten.
    TextDrawTextSize wird genutzt um die größe des Inhaltes/ Boxes zu bestimmen,
    aber nicht wie groß es sein soll, sonder bis wohin die Box hin geht, sprich
    TextDrawTextSize(XX, 50, 500); -> Die Box ist nicht 50px x 500px groß sonder geht
    auf deinem Bildschirm auf die Position 50 x 500. Komisch erklärt ^^ aber eigentlich leicht zu verstehen.

    TextDrawTextSize(BlitzerMenu, -2.000000, 0.000000);

    Nun dazu, ich bin mir nicht sicher was genau das bezwecken soll, aber du kannst eine Variable nicht gleichzeitig 2 Werte geben.

    BlitzerInfo[blitzerid[playerid]][Geschwindigkeit] >= 30 && BlitzerInfo[blitzerid[playerid]][Geschwindigkeit] <= 280



  • Das ist eine if Abfrage


    Okay und wie mache ich die Box jetzt halb so gross?

    • Offizieller Beitrag

    Hey,
    schau mal hier was im WIKI steht

    Code
    (Text:text, Float:x, Float:y)
    textThe TextDraw to set the size of.
    xThe size on the X axis (left/right) following the same 640x480 grid as TextDrawCreate.
    yThe size on the Y axis (up/down) following the same 640x480 grid as TextDrawCreate.


    Du hast - egal was für eine Auflösung du hast, ein 640x480 großen Bildschirm.
    Hier ist ein Beispiel wie du das setzen musst.
    TextDrawCreate(X, Y, "Text");
    Mit TextDrawCreate setzt du die Anfangspositionen der Box und den Text,
    mit X bestimmst ab wo die Box von Links an anfangt und
    mit Y bestimmst ab wo die Box von Oben an anfangt.


    TextDrawTextSize(Variable, X, Y);

    mit X bestimmst bis wohin die Box von Links an geht und
    mit Y bestimmst bis wohin die Box von Oben an geht, sprich du
    bestimmst nicht die Pixelgröße wie bei einem Bild sonder die Position
    bis wohin die Box gehen soll, hast du also
    TextDrawCreate(200, 300, "Text"); und TextDrawTextSize(Variable, 250, 250);
    ist die Box 50 x 50 groß. Ich hoffe du hast dies so verstanden :).
    Ich würde in deinem Fall es mal so versuchen, bin mir aber nicht sicher ob die Größe denn so passt,
    dass musst du dann noch verbessern.

    BlitzerMenu = TextDrawCreate(0, 142.122222, "usebox");

    TextDrawTextSize(BlitzerMenu, 220, 0.000000);

    Wie gesagt du musst die noch etwas anpassen.


    Hier meinte ich natürlich das du einer Variable nicht 2 Verte abfragen kannst, Dies hier heißt ja:
    wenn Geschwindigkeit 30 - größer ist UND Geschwindigkeit 280 - kleiner ist.
    Sprich es muss 30 oder größer sein und 280 oder kleiner, dass ist aber nicht möglich da es eine Variable ist.
    Was genau möchtest du mit dieser if Abfrage bezwecken? Soll der Zähler dann stoppen?

    BlitzerInfo[blitzerid[playerid]][Geschwindigkeit] >= 30 && BlitzerInfo[blitzerid[playerid]][Geschwindigkeit] <= 280

    Ach Ja, an deiner Stelle würde ich die Text:Variable auf eine Spielervariable ändern Text:Variable[MAX_PLAYERS], ich vermute
    diese Blitzerbox sollen alle aufrufen können die im PD sind, wenn du und ich diese Box gleichzeitig auf haben und ich den Preis
    runter setze und dann dann wieder hoch schneiden sich die beiden Werte.

    • Offizieller Beitrag

    Ich glaube zwar nicht das du alles gelesen hast was ich geschrieben habe, aber es ist Ja nicht mein System
    das ich beheben muss :whistling:.


    if(clickedid == BlitzerMenu20)
    {
    if(BlitzerInfo[blitzerid[playerid]][Geschwindigkeit] <= 30 || BlitzerInfo[blitzerid[playerid]][Geschwindigkeit] >= 280)
    return SendClientMessage(playerid,WHITE,"Fehler, die Werte sind zu niedrig bzw zu hoch!");
    BlitzerInfo[blitzerid[playerid]][Strafe] -= 10;
    new string[64];
    format(string,sizeof(string),"%d KM/H",BlitzerInfo[blitzerid[playerid]][Strafe]);
    TextDrawHideForPlayer(playerid,BlitzerMenu22);
    TextDrawSetString(BlitzerMenu22,string);
    TextDrawShowForPlayer(playerid,BlitzerMenu22);
    }


    Versuch dies mal so, wenn dies geht ändere deine anderen Abfragen auch so.