SA-MP Forums Archive
Selectable textdraws. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Selectable textdraws. (/showthread.php?tid=403468)



Selectable textdraws. - BaubaS - 30.12.2012

I have a little problem with selectable textdraws. For example, there are 3 textdraws:

1. something
2. cool
3. okay

When I set my mouse at okay, it highlights something and cool too.



^ I have set my mouse at third, but it highlighted first and second too.

Code:

pawn Код:
#include <a_samp>

new Text: TD0, Text: TD1, Text: TD2, Text: TD3, Text: TD4, Text: TD5, Text: TD6, Text: TD7;
new bool: shopState[MAX_PLAYERS];

public OnGameModeInit()
{
    TD0 = TextDrawCreate(641.375000, 1.500000, "usebox");
    TextDrawLetterSize(TD0, 0.000000, 49.396297);
    TextDrawTextSize(TD0, -2.000000, 0.000000);
    TextDrawAlignment(TD0, 3);
    TextDrawColor(TD0, 0);
    TextDrawUseBox(TD0, true);
    TextDrawBoxColor(TD0, 192);
    TextDrawSetShadow(TD0, 0);
    TextDrawSetOutline(TD0, 0);
    TextDrawFont(TD0, 0);

    TD1 = TextDrawCreate(88.125000, 30.916675, "Deagle");
    TextDrawLetterSize(TD1, 0.449999, 1.600000);
    TextDrawTextSize(TD1, 1329.375000, 55.416728);
    TextDrawAlignment(TD1, 2);
    TextDrawColor(TD1, -1);
    TextDrawSetShadow(TD1, 0);
    TextDrawSetOutline(TD1, 0);
    TextDrawBackgroundColor(TD1, 51);
    TextDrawFont(TD1, 1);
    TextDrawSetProportional(TD1, 1);
    TextDrawSetSelectable(TD1, true);

    TD2 = TextDrawCreate(215.750000, 1.500000, "usebox");
    TextDrawLetterSize(TD2, 0.000000, 49.201850);
    TextDrawTextSize(TD2, 207.375000, 0.000000);
    TextDrawAlignment(TD2, 1);
    TextDrawColor(TD2, 0);
    TextDrawUseBox(TD2, true);
    TextDrawBoxColor(TD2, -14803202);
    TextDrawSetShadow(TD2, 0);
    TextDrawSetOutline(TD2, 0);
    TextDrawFont(TD2, 0);
    TextDrawSetProportional(TD2, 1);

    TD3 = TextDrawCreate(298.750000, 31.500001, "Deagle costs $750");
    TextDrawLetterSize(TD3, 0.449999, 1.600000);
    TextDrawAlignment(TD3, 1);
    TextDrawColor(TD3, -1);
    TextDrawSetShadow(TD3, 0);
    TextDrawSetOutline(TD3, 255);
    TextDrawBackgroundColor(TD3, 51);
    TextDrawFont(TD3, 1);
    TextDrawSetProportional(TD3, 1);

    TD4 = TextDrawCreate(63.125000, 55.999988, "USP");
    TextDrawLetterSize(TD4, 0.449999, 1.600000);
    TextDrawAlignment(TD4, 1);
    TextDrawColor(TD4, -1);
    TextDrawSetShadow(TD4, 0);
    TextDrawSetOutline(TD4, 1);
    TextDrawBackgroundColor(TD4, 51);
    TextDrawFont(TD4, 1);
    TextDrawSetProportional(TD4, 1);
    TextDrawSetSelectable(TD4, true);

    TD5 = TextDrawCreate(297.500000, 58.916690, "USP costs $450");
    TextDrawLetterSize(TD5, 0.449999, 1.600000);
    TextDrawAlignment(TD5, 1);
    TextDrawColor(TD5, -1);
    TextDrawSetShadow(TD5, 0);
    TextDrawSetOutline(TD5, 1);
    TextDrawBackgroundColor(TD5, 51);
    TextDrawFont(TD5, 1);
    TextDrawSetProportional(TD5, 1);

    TD6 = TextDrawCreate(62.500000, 81.666687, "AK-47");
    TextDrawLetterSize(TD6, 0.449999, 1.600000);
    TextDrawAlignment(TD6, 1);
    TextDrawColor(TD6, -1);
    TextDrawSetShadow(TD6, 0);
    TextDrawSetOutline(TD6, 1);
    TextDrawBackgroundColor(TD6, 51);
    TextDrawFont(TD6, 1);
    TextDrawSetProportional(TD6, 1);
    TextDrawSetSelectable(TD6, true);

    TD7 = TextDrawCreate(296.666595, 82.833267, "AK-47 costs $2500");
    TextDrawLetterSize(TD7, 0.449999, 1.600000);
    TextDrawAlignment(TD7, 1);
    TextDrawColor(TD7, -1);
    TextDrawSetShadow(TD7, 0);
    TextDrawSetOutline(TD7, 1);
    TextDrawBackgroundColor(TD7, 51);
    TextDrawFont(TD7, 1);
    TextDrawSetProportional(TD7, 1);

    return true;
}

public OnPlayerConnect(playerid)
{
    shopState[playerid] = false;
    return true;
}

public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
    if(_:clickedid != INVALID_TEXT_DRAW)
    {
        if(clickedid == TD1)
        {
            if (GetPlayerMoney(playerid) < 750)
                return SendClientMessage(playerid, 0x9EC73DFF, "[server]: You dont have enough money! ({ff0000}$750{9ec73d})");

            GivePlayerWeapon(playerid, 24, 7);
            GivePlayerMoney (playerid, - 750);
        }

        if(clickedid == TD4)
        {
            if (GetPlayerMoney(playerid) < 450)
                return SendClientMessage(playerid, 0x9EC73DFF, "[server]: You dont have enough money! ({ff0000}$450{9ec73d})");

            GivePlayerWeapon(playerid, 22, 12);
            GivePlayerMoney (playerid, - 450);
        }

        if(clickedid == TD7)
        {
            if (GetPlayerMoney(playerid) < 2500)
                return SendClientMessage(playerid, 0x9EC73DFF, "[server]: You dont have enough money! ({ff0000}$2500{9ec73d})");

            GivePlayerWeapon(playerid, 30, 30);
            GivePlayerMoney (playerid, - 2500);
        }
    }

    return (true);
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if (newkeys & KEY_NO)
    {
        if (!shopState[playerid])
        {
            TextDrawShowForPlayer(playerid, TD0);
            TextDrawShowForPlayer(playerid, TD1);
            TextDrawShowForPlayer(playerid, TD2);
            TextDrawShowForPlayer(playerid, TD3);
            TextDrawShowForPlayer(playerid, TD4);
            TextDrawShowForPlayer(playerid, TD5);
            TextDrawShowForPlayer(playerid, TD6);
            TextDrawShowForPlayer(playerid, TD7);
            SelectTextDraw(playerid, 0xFF0000FF);
            shopState[playerid] = true;
        }
        else
        {
            TextDrawHideForPlayer(playerid, TD0);
            TextDrawHideForPlayer(playerid, TD1);
            TextDrawHideForPlayer(playerid, TD2);
            TextDrawHideForPlayer(playerid, TD3);
            TextDrawHideForPlayer(playerid, TD4);
            TextDrawHideForPlayer(playerid, TD5);
            TextDrawHideForPlayer(playerid, TD6);
            TextDrawHideForPlayer(playerid, TD7);
            CancelSelectTextDraw(playerid);
            shopState[playerid] = false;
        }
    }

    return (true);
}
Created by using ipleomax td editor.


Re: Selectable textdraws. - BaubaS - 30.12.2012

I have explained it better.


Re: Selectable textdraws. - Sanady - 30.12.2012

You need to use.
pawn Код:
TextDrawSetSelectable
More here:
https://sampwiki.blast.hk/wiki/TextDrawSetSelectable


Re: Selectable textdraws. - BaubaS - 30.12.2012

Dont you see? Its already here.. Code is working good, except that it highlights every button you set your mouse at.


Re: Selectable textdraws. - Hiddos - 30.12.2012

Apart from the TextDraw itself, there's an 'invisible' box which covers the 'highlighting' area (when the textdraws can be selected, that is). You can set this 'area' with TextDrawTextSize, you'll need to screw around with this a bit. The area starts at the left-top part of the text draw and can be made as big as you want.


Re: Selectable textdraws. - BaubaS - 31.12.2012

Okay, thank you. I tried to do that yesterday, something changed, but not like I would want:

I was updating size with ipleomax's iTD like that:

_____
WORD|


You can't highlight now every select, but 2-3 and two buttons doesn't work, but the method used to set size was same


Re: Selectable textdraws. - BaubaS - 31.12.2012

Bump.


Re: Selectable textdraws. - vyper - 31.12.2012

Obviously this is wrong.

pawn Код:
TextDrawTextSize(TD1, 1329.375000, 55.416728); // 1329 ? lol.