Frage zu anklickbaren TextDraw's

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


    ich wollte ein paar TextDraws erstellen und paar von diesen soll man auswählen können. Das Problem hierbei ist, dass ich nicht nur 1 TextDraw mit einem Hovereffekt habe, sondern wenn ich über z.B. den Schalter "Erstellen" fahre, dass ich dann alle TextDraw's die obendrüber sind auswählen kann bzw. mit ausgewählt werden.


    So sieht mein TextDraw normal aus:


    So sieht das aus, wenn ich über "Abbrechen" fahre:

    Was mache ich genau falsch?


    GlobalTextDraw's:

    C4CreateTextDraw_Box = TextDrawCreate(0,0, "usebox");
    TextDrawLetterSize(C4CreateTextDraw_Box, 0,0);
    TextDrawTextSize(C4CreateTextDraw_Box, 0,0);
    TextDrawAlignment(C4CreateTextDraw_Box, 1);
    TextDrawColor(C4CreateTextDraw_Box, 0);
    TextDrawUseBox(C4CreateTextDraw_Box, true);
    TextDrawBoxColor(C4CreateTextDraw_Box, 255);
    TextDrawSetShadow(C4CreateTextDraw_Box, 0);
    TextDrawSetOutline(C4CreateTextDraw_Box, 0);
    TextDrawBackgroundColor(C4CreateTextDraw_Box, 255);
    TextDrawFont(C4CreateTextDraw_Box, 0);
    TextDrawSetSelectable(C4CreateTextDraw_Box, false);

    C4CreateTextDraw_Title = TextDrawCreate(0,0, "~y~C4 erstellen");
    TextDrawLetterSize(C4CreateTextDraw_Title, 0,0);
    TextDrawAlignment(C4CreateTextDraw_Title, 1);
    TextDrawColor(C4CreateTextDraw_Title, -1);
    TextDrawSetShadow(C4CreateTextDraw_Title, 0);
    TextDrawSetOutline(C4CreateTextDraw_Title, 1);
    TextDrawBackgroundColor(C4CreateTextDraw_Title, 51);
    TextDrawFont(C4CreateTextDraw_Title, 1);
    TextDrawSetProportional(C4CreateTextDraw_Title, 1);


    C4CreateTextDraw_Text = TextDrawCreate(0,0, "Bringe die Zutaten in die richtige Reihenfolge.");
    TextDrawLetterSize(C4CreateTextDraw_Text, 0,0);
    TextDrawAlignment(C4CreateTextDraw_Text, 1);
    TextDrawColor(C4CreateTextDraw_Text, -1);
    TextDrawSetShadow(C4CreateTextDraw_Text, 0);
    TextDrawSetOutline(C4CreateTextDraw_Text, 1);
    TextDrawBackgroundColor(C4CreateTextDraw_Text, 51);
    TextDrawFont(C4CreateTextDraw_Text, 1);
    TextDrawSetProportional(C4CreateTextDraw_Text, 1);


    C4CreateTextDraw_Create = TextDrawCreate(0,0, "Erstellen");
    TextDrawLetterSize(C4CreateTextDraw_Create, 0,0);
    TextDrawAlignment(C4CreateTextDraw_Create, 1);
    TextDrawColor(C4CreateTextDraw_Create, -1);
    TextDrawSetShadow(C4CreateTextDraw_Create, 0);
    TextDrawSetOutline(C4CreateTextDraw_Create, 1);
    TextDrawBackgroundColor(C4CreateTextDraw_Create, 51);
    TextDrawFont(C4CreateTextDraw_Create, 1);
    TextDrawSetProportional(C4CreateTextDraw_Create, 1);


    C4CreateTextDraw_Cancel = TextDrawCreate(0,0, "Abbrechen");
    TextDrawLetterSize(C4CreateTextDraw_Cancel, 0,0);
    TextDrawAlignment(C4CreateTextDraw_Cancel, 1);
    TextDrawColor(C4CreateTextDraw_Cancel, -1);
    TextDrawSetShadow(C4CreateTextDraw_Cancel, 0);
    TextDrawSetOutline(C4CreateTextDraw_Cancel, 1);
    TextDrawBackgroundColor(C4CreateTextDraw_Cancel, 51);
    TextDrawFont(C4CreateTextDraw_Cancel, 1);
    TextDrawSetProportional(C4CreateTextDraw_Cancel, 1);


    Meine PlayerTextDraw's:

    C4CreateTextDraw_Item1[playerid] = CreatePlayerTextDraw(playerid, 0,0, "1: Kein Item ausgewaehlt");
    PlayerTextDrawLetterSize(playerid, C4CreateTextDraw_Item1[playerid], 0,0);
    PlayerTextDrawAlignment(playerid, C4CreateTextDraw_Item1[playerid], 1);
    PlayerTextDrawColor(playerid, C4CreateTextDraw_Item1[playerid], -1);
    PlayerTextDrawSetShadow(playerid, C4CreateTextDraw_Item1[playerid], 0);
    PlayerTextDrawSetOutline(playerid, C4CreateTextDraw_Item1[playerid], 1);
    PlayerTextDrawBackgroundColor(playerid, C4CreateTextDraw_Item1[playerid], 51);
    PlayerTextDrawFont(playerid, C4CreateTextDraw_Item1[playerid], 1);
    PlayerTextDrawSetProportional(playerid, C4CreateTextDraw_Item1[playerid], 1);


    C4CreateTextDraw_Item2[playerid] = CreatePlayerTextDraw(playerid, 0,0, "2: Kein Item ausgewaehlt");
    PlayerTextDrawLetterSize(playerid, C4CreateTextDraw_Item2[playerid], 0,0);
    PlayerTextDrawAlignment(playerid, C4CreateTextDraw_Item2[playerid], 1);
    PlayerTextDrawColor(playerid, C4CreateTextDraw_Item2[playerid], -1);
    PlayerTextDrawSetShadow(playerid, C4CreateTextDraw_Item2[playerid], 0);
    PlayerTextDrawSetOutline(playerid, C4CreateTextDraw_Item2[playerid], 1);
    PlayerTextDrawBackgroundColor(playerid, C4CreateTextDraw_Item2[playerid], 51);
    PlayerTextDrawFont(playerid, C4CreateTextDraw_Item2[playerid], 1);
    PlayerTextDrawSetProportional(playerid, C4CreateTextDraw_Item2[playerid], 1);


    C4CreateTextDraw_Item3[playerid] = CreatePlayerTextDraw(playerid, 0,0, "3: Kein Item ausgewaehlt");
    PlayerTextDrawLetterSize(playerid, C4CreateTextDraw_Item3[playerid], 0,0);
    PlayerTextDrawAlignment(playerid, C4CreateTextDraw_Item3[playerid], 1);
    PlayerTextDrawColor(playerid, C4CreateTextDraw_Item3[playerid], -1);
    PlayerTextDrawSetShadow(playerid, C4CreateTextDraw_Item3[playerid], 0);
    PlayerTextDrawSetOutline(playerid, C4CreateTextDraw_Item3[playerid], 1);
    PlayerTextDrawBackgroundColor(playerid, C4CreateTextDraw_Item3[playerid], 51);
    PlayerTextDrawFont(playerid, C4CreateTextDraw_Item3[playerid], 1);
    PlayerTextDrawSetProportional(playerid, C4CreateTextDraw_Item3[playerid], 1);


    (( Die Koordinaten wurden von mir durch "0" ersetzt. Möchte nicht, dass hier jemand Copy&Paste macht. ))


    So sieht mein Command aus um das TextDraw anzeigen zu lassen:

    else if (strcmp("/c4create", strget(cmdtext, 0), true, 25) == 0)
    {
    TextDrawSetSelectable(C4CreateTextDraw_Create, true);
    TextDrawSetSelectable(C4CreateTextDraw_Cancel, true);

    PlayerTextDrawSetSelectable(playerid, C4CreateTextDraw_Item1[playerid], true);
    PlayerTextDrawSetSelectable(playerid, C4CreateTextDraw_Item2[playerid], true);
    PlayerTextDrawSetSelectable(playerid, C4CreateTextDraw_Item3[playerid], true);

    TextDrawShowForPlayer(playerid, C4CreateTextDraw_Box);
    TextDrawShowForPlayer(playerid, C4CreateTextDraw_Title);
    TextDrawShowForPlayer(playerid, C4CreateTextDraw_Text);
    TextDrawShowForPlayer(playerid, C4CreateTextDraw_Create);
    TextDrawShowForPlayer(playerid, C4CreateTextDraw_Cancel);

    PlayerTextDrawShow(playerid, C4CreateTextDraw_Item1[playerid]);
    PlayerTextDrawShow(playerid, C4CreateTextDraw_Item2[playerid]);
    PlayerTextDrawShow(playerid, C4CreateTextDraw_Item3[playerid]);

    SelectTextDraw(playerid, lightgreen);
    }


    Ich habe auch schon probiert TextDrawSetSelectable & PlayerTextDrawSetSelect bei der TextDraw Erstellung drunter zu klatschen. Selbes Ergebnis.

  • Hast du deine zensierten / ausgetauschten Koordinaten denn auch richtig?
    Du musst eine Box über "Erstellen" haben, und dann die TextDrawTextSize als TextSize halt angeben.

  • TextSize ist zu groß (kannst du dir als unsichtbaren Hintergrund vorstellen, den du als "Hoverbereich" auswählst.)


    Vergleichbar mit dem Menü hier im Breadfish Forum. Wenn du auf "Mitglieder" gehst, musst du auch nicht genau auf den Text klicken, sondern kannst auch den Bereich neben dem Text anklicken (Button).


    Hoffe du verstehst was ich meine

  • Weil du wahrscheinlich die TextSize zu groß eingestellt hast.

  • Ich habe nur TextDrawLetterSize verwendet und nicht TextDrawSize. Ich meine, ich kann wenn ich nach unten fahr jedes einzelne Element auswählen aber es werden alle oben drüber ausgewählt. Wenn ich also Item 3 auswähle, wird 1 und 2 ausgewählt aber nicht "Erstellen" und "Abbrechen".


    //Edit: Push

    Einmal editiert, zuletzt von linux_ ()

  • Wenn du keine Textsize ausgewählt hast zieht sich der Hoverberiech von der oberen Linken Ecke des Textdraws bis zur unteren Rechten Ecke des Textdraws, wenn du willst kann ich dir ne Skizze über die Bemaßung der HoverTextdraw bereiche machen, die sind nicht grade logisch.


    edit: hier eine Skizze:

    Align Left:
    Wenn gar keine Textsize benutzt wird so zieht sich der Hovertext vom bereits definierten Oberen Linken Punt bis zum Ende des Bildschirms.


    Align Center:
    Wenn gar keine Textsize genutzt wird ist der Hoverbereich so klein, dass man ihn nicht anklicken kann.


    Align Right:
    habe ich noch nie genutzt, schätze aber dass es umgekehrt zu Align Left funktioniert.