Selectable Textdraw-Bug

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


    ich habe in meiner ganzen PAWN-Scripting Zeit immer einen Bogen um das Thema "Selectable Textdraws" gemacht.
    Nun möchte ich mir das ganze aber mal anschauen, weil man damit wirklich schöne Dinge anstellen kann :D


    Und gleich beginnt das ganze Thema mit monumentalen Problemen:


    Ich habe eine Art Login Screen.
    Auf diesem Login Screen sind 3 "Reiter":


    - Registrieren
    - Login
    - News


    Alle diese Reiter sind nebeneinander auf der gleichen Achse!


    Wenn ich nun Registrieren auswähle, färbt sich dies so wie es soll und bei einem Klick darauf erscheint auch der Dialog.


    Wenn ich nun jedoch mit der Maus über "Login" fahre, wird "Registrieren" und "Login" gefärbt.


    Klicke ich dann auf "Login" öffnet sich der Dialog vom "Registrieren".


    Habt ihr eine Idee was da los ist?



    P.S: Ich habe mal versucht Boxen zu erstellen und das ganze auch mit "TextDrawTextSize" versucht, jedoch ist dann gar nichts mehr auswählbar!


    Der Code:


    Login[playerid] = TextDrawCreate(292.000000, 363.000000, "Login");
    TextDrawBackgroundColor(Login[playerid], -1);
    TextDrawFont(Login[playerid], 1);
    TextDrawLetterSize(Login[playerid], 0.600000, 2.000000);
    TextDrawColor(Login[playerid], 255);
    TextDrawSetOutline(Login[playerid], 1);
    TextDrawSetProportional(Login[playerid], 1);
    TextDrawUseBox(Login[playerid], 1);
    TextDrawBoxColor(Login[playerid], 255);
    //TextDrawTextSize(Login[playerid], 345.000000, -30.000000);
    TextDrawSetSelectable(Login[playerid], 1);
    Register[playerid] = TextDrawCreate(26.000000, 363.000000, "Registrieren");
    TextDrawBackgroundColor(Register[playerid], -1);
    TextDrawFont(Register[playerid], 1);
    TextDrawLetterSize(Register[playerid], 0.600000, 2.399998);
    TextDrawColor(Register[playerid], 255);
    TextDrawSetOutline(Register[playerid], 1);
    TextDrawSetProportional(Register[playerid], 1);
    TextDrawUseBox(Register[playerid], 1);
    TextDrawBoxColor(Register[playerid], 255);
    //TextDrawTextSize(Register[playerid], 148.000000, 0.000000);
    TextDrawSetSelectable(Register[playerid], 1);
    News[playerid] = TextDrawCreate(532.000000, 363.000000, "News");
    TextDrawBackgroundColor(News[playerid], -1);
    TextDrawFont(News[playerid], 1);
    TextDrawLetterSize(News[playerid], 0.600000, 2.000000);
    TextDrawColor(News[playerid], 255);
    TextDrawSetOutline(News[playerid], 1);
    TextDrawSetProportional(News[playerid], 1);
    TextDrawUseBox(News[playerid], 1);
    TextDrawBoxColor(News[playerid], 255);
    //TextDrawTextSize(News[playerid], 585.000000, 0.000000);
    TextDrawSetSelectable(News[playerid], 1);


    Den Rest (OnPLayerClickTextDraw...) muss ich wohl denke ich nicht posten :D


    Ich glaube das das Problem irgendwo bei der Erstellung liegt...

    Meine Werke

  • TextDrawTextSize musst du verwenden, das stimmt schon.
    Allerdings musst du sowohl einen korrekten X Wert als auch einen korrekten (geschätzten) Y Wert angeben:
    TextDrawTextSize(News[playerid], 585.000000, 0.000000);
    zu:
    TextDrawTextSize(News[playerid], 585.000000, 15.000000);
    (Je nach dem wie hoch dein Textdraw ist die 15 eben ändern.)


    So natürlich auch für die anderen Textdraws. Die Höhe abschätzen.

  • Einfachste Möglichkeit beim erstellen des Textdraws die Box aktivieren, die Box entsprechend groß machen und exportieren. den y wert der Textsize anpassen und die usebox auf 0 stellen.

  • Du musst aber bedenken, dass die Höhe der Box immer dieselbe ist, egal welchen Y-Wert du eingibst. Daher muss der geschätzt werden, da man ihn nicht sieht. Auch bei 0.0 wird dir die Box angezeigt und sie ist gleich groß wenn du 100.0 eingibst. Es verändert sich nur der selektierbare Bereich.


    Daher bringt es nur bedingt etwas, das mit dem Editor einzustellen.