Text Draw Selection 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
  • Hallo!
    Ich habe einen kleinen Bug, wenn ich versuche eine Text Draw Selection zu erstellen.


    Ich werde einen Screen anhängen, dieser Zeigt eines meiner Beispiele. Wenn ich auf "Auswaehlen" klicke, passiert das, was passieren sollte, wenn ich auf den nach Links zeigenden Pfeil klicke.
    Ich verstehe einfach nicht warum, ich Füge ebenfalls den Code ein.


    Code


    stock CreateSkinSelectTD()
    {
    for(new playerid = 0; playerid < MAX_PLAYERS; playerid++){
    CancelSelectTextDraw(playerid);
    SkinSelect[playerid] = TextDrawCreate(274.000000, 377.000000, "Auswaehlen");
    TextDrawBackgroundColor(SkinSelect[playerid], 255);
    TextDrawFont(SkinSelect[playerid], 2);
    TextDrawLetterSize(SkinSelect[playerid], 0.300000, 2.000000);
    TextDrawColor(SkinSelect[playerid], -1);
    TextDrawSetOutline(SkinSelect[playerid], 0);
    TextDrawSetProportional(SkinSelect[playerid], 1);
    TextDrawSetShadow(SkinSelect[playerid], 1);
    TextDrawSetSelectable(SkinSelect[playerid], 1);
    ArrowSkin1[playerid] = TextDrawCreate(250.000000, 371.000000, "~<~");
    TextDrawBackgroundColor(ArrowSkin1[playerid], 255);
    TextDrawFont(ArrowSkin1[playerid], 1);
    TextDrawLetterSize(ArrowSkin1[playerid], 1.000000, 3.000000);
    TextDrawColor(ArrowSkin1[playerid], -1);
    TextDrawSetOutline(ArrowSkin1[playerid], 0);
    TextDrawSetProportional(ArrowSkin1[playerid], 1);
    TextDrawSetShadow(ArrowSkin1[playerid], 1);
    TextDrawSetSelectable(ArrowSkin1[playerid], 1);
    ArrowSkin2[playerid] = TextDrawCreate(362.000000, 371.000000, "~>~");
    TextDrawBackgroundColor(ArrowSkin2[playerid], 255);
    TextDrawFont(ArrowSkin2[playerid], 1);
    TextDrawLetterSize(ArrowSkin2[playerid], 1.000000, 3.000000);
    TextDrawColor(ArrowSkin2[playerid], -1);
    TextDrawSetOutline(ArrowSkin2[playerid], 0);
    TextDrawSetProportional(ArrowSkin2[playerid], 1);
    TextDrawSetShadow(ArrowSkin2[playerid], 1);
    TextDrawSetSelectable(ArrowSkin2[playerid], 1);
    }
    return 1;
    }

    Code
    public OnPlayerClickTextDraw(playerid, Text:clickedid)
    {
    if(clickedid==ArrowSkin1[playerid])
    {
    if(SelectedSkin[playerid] < 0)
    {
    SelectedSkin[playerid]++;
    }
    SelectedSkin[playerid]--;
    if(sInfo[playerid][geschlecht] == 1)
    {
    switch(SelectedSkin[playerid])
    {
    case 0:
    {
    SetPlayerSkin(playerid, 1);
    Skin[playerid] = 1;
    }
    case 1:
    {
    SetPlayerSkin(playerid, 2);
    Skin[playerid] = 2;
    }
    case 2:
    {
    SetPlayerSkin(playerid, 3);
    Skin[playerid] = 3;
    }
    case 3:
    {
    SetPlayerSkin(playerid, 4);
    Skin[playerid] = 4;
    }
    case 4:
    {
    SetPlayerSkin(playerid, 6);
    Skin[playerid] = 6;
    }
    }
    }
    if(sInfo[playerid][geschlecht] == 2)
    {
    switch(SelectedSkin[playerid])
    {
    case 0:
    {
    SetPlayerSkin(playerid, 9);
    Skin[playerid] = 9;
    }
    case 1:
    {
    SetPlayerSkin(playerid, 11);
    Skin[playerid] = 11;
    }
    case 2:
    {
    SetPlayerSkin(playerid, 12);
    Skin[playerid] = 12;
    }
    case 3:
    {
    SetPlayerSkin(playerid, 41);
    Skin[playerid] = 41;
    }
    case 4:
    {
    SetPlayerSkin(playerid, 233);
    Skin[playerid] = 233;
    }
    }
    }
    }
    if(clickedid==ArrowSkin2[playerid])
    {
    if(SelectedSkin[playerid] > 4)
    {
    SelectedSkin[playerid]--;
    }
    SelectedSkin[playerid]++;
    if(sInfo[playerid][geschlecht] == 1)
    {
    switch(SelectedSkin[playerid])
    {
    case 0:
    {
    SetPlayerSkin(playerid, 1);
    Skin[playerid] = 1;
    }
    case 1:
    {
    SetPlayerSkin(playerid, 2);
    Skin[playerid] = 2;
    }
    case 2:
    {
    SetPlayerSkin(playerid, 3);
    Skin[playerid] = 3;
    }
    case 3:
    {
    SetPlayerSkin(playerid, 4);
    Skin[playerid] = 4;
    }
    case 4:
    {
    SetPlayerSkin(playerid, 6);
    Skin[playerid] = 6;
    }
    }
    }
    if(sInfo[playerid][geschlecht] == 2)
    {
    switch(SelectedSkin[playerid])
    {
    case 0:
    {
    SetPlayerSkin(playerid, 9);
    Skin[playerid] = 9;
    }
    case 1:
    {
    SetPlayerSkin(playerid, 11);
    Skin[playerid] = 11;
    }
    case 2:
    {
    SetPlayerSkin(playerid, 12);
    Skin[playerid] = 12;
    }
    case 3:
    {
    SetPlayerSkin(playerid, 41);
    Skin[playerid] = 41;
    }
    case 4:
    {
    SetPlayerSkin(playerid, 233);
    Skin[playerid] = 233;
    }
    }
    }
    }
    if(clickedid==SkinSelect[playerid])
    {
    if(SkinAuswahl[playerid] == 0) return 0;
    TextDrawHideForPlayer(playerid, ArrowSkin1[playerid]);
    TextDrawHideForPlayer(playerid, ArrowSkin2[playerid]);
    TextDrawHideForPlayer(playerid, SkinSelect[playerid]);
    SetPlayerVirtualWorld(playerid, 0);
    if(sInfo[playerid][tutorial] == 0)
    {
    sInfo[playerid][tutorial]=1;
    ShowPlayerDialog(playerid, DIALOG_REGINFO, DIALOG_STYLE_MSGBOX, ""cBlue"["SERVERTAG"]"cWhite" Willkommen!", ""cWhite" Willkommen auf "SERVERNAME"!\nDu erhälst von uns als Willkommensgeschenk:\n"cBlue"Ein Handy\n"cBlue"5000€\n"cBlue"Einen Personalausweis\n\n\n"cWhite"(Vituelle Gegenstände)", "Yay!", "");
    CancelSelectTextDraw(playerid);
    CancelSelectTextDraw(playerid);
    }
    SetPlayerSkin(playerid,Skin[playerid]);
    sInfo[playerid][skin] = Skin[playerid];
    SpawnPlayer(playerid);
    ShowPlayerMoneyTextdraw(playerid);
    SkinAuswahl[playerid] = 0;
    }
    return 1;
    }



    MfG!

  • Du musst die Größe das anklickbaren Bereiches mit TextDrawTextSize anpassen. https://wiki.sa-mp.com/wiki/TextDrawTextSize Der X Wert ist die Position PLUS die Größe des nach rechts anklickbaren Bereiches. Der Y Wert ist die geschätzte Höhe.


    Angenommen du erstellst dein Textdraw bei X = 120 und Y = 90. Dann machst du den Text "Hallo Welt" da rein. Sagen wir, der Text ist so groß, dass er in etwa über ein Zehntel deines Bildschirmes geht (musst du abschätzen, oder mit einem Lineal abmessen), dann heißt das 640 durch 10, das wäre 64. Somit ist TextDrawTextSize-X = 120 + 64 = 184.
    Nun misst, bzw. schätzt, du die Höhe des Textdraws, sagen wir mal du bekommst den Text in etwa 20 mal untereinander hin, bis dein Bildschirm von oben nach unten voll damit wäre. Heißt also: 480 durch 20, das gibt 24. Somit wäre TextDrawTextSize-Y = 24.

  • Du musst die Größe das anklickbaren Bereiches mit TextDrawTextSize anpassen. https://wiki.sa-mp.com/wiki/TextDrawTextSize Der X Wert ist die Position PLUS die Größe des nach rechts anklickbaren Bereiches. Der Y Wert ist die geschätzte Höhe.


    Angenommen du erstellst dein Textdraw bei X = 120 und Y = 90. Dann machst du den Text "Hallo Welt" da rein. Sagen wir, der Text ist so groß, dass er in etwa über ein Zehntel deines Bildschirmes geht (musst du abschätzen, oder mit einem Lineal abmessen), dann heißt das 640 durch 10, das wäre 64. Somit ist TextDrawTextSize-X = 120 + 64 = 184.
    Nun misst, bzw. schätzt, du die Höhe des Textdraws, sagen wir mal du bekommst den Text in etwa 20 mal untereinander hin, bis dein Bildschirm von oben nach unten voll damit wäre. Heißt also: 480 durch 20, das gibt 24. Somit wäre TextDrawTextSize-Y = 24.


    Ich verstehe leider nicht ganz was damit gemeint ist, bzw. wie das zu nutzen ist.


    Habe folgendes geändert: Zu PlayerTextDraw umgeschrieben. Habe Positionen der Pfeile geändert.



    stock CreateSkinSelectTD(playerid)
    {
    CancelSelectTextDraw(playerid);
    SkinSelect[playerid] = CreatePlayerTextDraw(playerid,274.000000, 377.000000, "Auswaehlen");
    PlayerTextDrawBackgroundColor(playerid,SkinSelect[playerid], 255);
    PlayerTextDrawFont(playerid,SkinSelect[playerid], 2);
    PlayerTextDrawLetterSize(playerid,SkinSelect[playerid], 0.300000, 2.000000);
    PlayerTextDrawColor(playerid,SkinSelect[playerid], -1);
    PlayerTextDrawSetOutline(playerid,SkinSelect[playerid], 0);
    PlayerTextDrawSetProportional(playerid,SkinSelect[playerid], 1);
    PlayerTextDrawSetShadow(playerid,SkinSelect[playerid], 1);
    PlayerTextDrawSetSelectable(playerid,SkinSelect[playerid], 1);
    ArrowSkin1[playerid] = CreatePlayerTextDraw(playerid,76.000000, 176.000000, "~<~");
    PlayerTextDrawBackgroundColor(playerid,ArrowSkin1[playerid], 255);
    PlayerTextDrawFont(playerid,ArrowSkin1[playerid], 1);
    PlayerTextDrawLetterSize(playerid,ArrowSkin1[playerid], 1.000000, 3.000000);
    PlayerTextDrawColor(playerid,ArrowSkin1[playerid], -1);
    PlayerTextDrawSetOutline(playerid,ArrowSkin1[playerid], 0);
    PlayerTextDrawSetProportional(playerid,ArrowSkin1[playerid], 1);
    PlayerTextDrawSetShadow(playerid,ArrowSkin1[playerid], 1);
    PlayerTextDrawSetSelectable(playerid,ArrowSkin1[playerid], 1);
    ArrowSkin2[playerid] = CreatePlayerTextDraw(playerid,525.000000, 186.000000, "~>~");
    PlayerTextDrawBackgroundColor(playerid,ArrowSkin2[playerid], 255);
    PlayerTextDrawFont(playerid,ArrowSkin2[playerid], 1);
    PlayerTextDrawLetterSize(playerid,ArrowSkin2[playerid], 1.000000, 3.000000);
    PlayerTextDrawColor(playerid,ArrowSkin2[playerid], -1);
    PlayerTextDrawSetOutline(playerid,ArrowSkin2[playerid], 0);
    PlayerTextDrawSetProportional(playerid,ArrowSkin2[playerid], 1);
    PlayerTextDrawSetShadow(playerid,ArrowSkin2[playerid], 1);
    PlayerTextDrawSetSelectable(playerid,ArrowSkin2[playerid], 1);
    return 1;
    }