Selectable textdraws.
#1

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.
Reply
#2

I have explained it better.
Reply
#3

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

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

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.
Reply
#6

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
Reply
#7

Bump.
Reply
#8

Obviously this is wrong.

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


Forum Jump:


Users browsing this thread: 2 Guest(s)