PDA

Просмотр полной версии : [Вопрос] Курсор при появлении кликабельного текстдрава.



SteveStage
16.03.2020, 14:19
Если ты сначала создашь кликабельный текстдрав и объявишь цвет выделения зон кликабельности, то появится курсор. Но после скрытия текстдрава он никуда не пропадает и приходится нажимать Esc. Так вот, от чего зависит, есть ли курсор на экране или нету, и как его скрыть?

Пример:

OnPlayerClickTextDraw(playerid, Text:clickedid)
{
if(clickedid == td_select_skin[2])
{
PlayerPlaySound(playerid, 30800, 0.0, 0.0, 0.0);
player[playerid][p_skin] = GetPlayerSkin(playerid);
number_skin{playerid} = 0;
for(new i = 0; i < 3; i++) TextDrawHideForPlayer(playerid, td_select_skin[i]);
DialogReadyReg(playerid);
}
return true;
}

case DLG_ID_REG_SEX_SKIN:
{
SpawnPlayer(playerid);
if(response)
{
player[playerid][p_sex] = 1; // Male
number_skin{playerid} = 1;
SetPlayerSkin(playerid, 3);
}
else
{
player[playerid][p_sex] = 2; // Female
number_skin{playerid} = 10;
SetPlayerSkin(playerid, 12);
}
TD_SelectSkin();
for(new i = 0; i < 3; i++) TextDrawShowForPlayer(playerid, td_select_skin[i]);
SelectTextDraw(playerid, COLOR_ORANGE);
SetPlayerInterior(playerid, 1);
SetPlayerPos(playerid, -759.3675, 502.0562, 1371.6511);
SetPlayerFacingAngle(playerid, 264.2415);
switch(player[playerid][p_sex])
{
case 1: // male
{
if(20 <= player[playerid][p_age] <= 30) SetPlayerSkin(playerid, 3);
else if(31 <= player[playerid][p_age] <= 50) SetPlayerSkin(playerid, 19);
else if(51 <= player[playerid][p_age] <= 70) SetPlayerSkin(playerid, 1);
}
case 2: // female
{
if(20 <= player[playerid][p_age] <= 30) SetPlayerSkin(playerid, 11);
else if(31 <= player[playerid][p_age] <= 50) SetPlayerSkin(playerid, 13);
else if(51 <= player[playerid][p_age] <= 70) SetPlayerSkin(playerid, 9);
}
}
number_skin{playerid} = 1;
SetPlayerCameraPos(playerid, -755.9845, 502.5589, 1371.7016); // -755.9845, 502.5589, 1371.8216
SetPlayerCameraLookAt(playerid, -759.3675, 502.0562, 1371.6511);
FreezePlayer(playerid, 0);
return true;
}

stock TD_SelectSkin()
{
td_select_skin[0] = TextDrawCreate(397.306640, 368.083312, "LD_BEAT:right");
TextDrawLetterSize(td_select_skin[0], 0.000000, 0.000000);
TextDrawTextSize(td_select_skin[0], 33.733535, 44.916667);
TextDrawAlignment(td_select_skin[0], 2);
TextDrawColor(td_select_skin[0], -65281);
TextDrawSetShadow(td_select_skin[0], 0);
TextDrawSetOutline(td_select_skin[0], 0);
TextDrawBackgroundColor(td_select_skin[0], 255);
TextDrawFont(td_select_skin[0], 4);
TextDrawSetSelectable(td_select_skin[0], true);

td_select_skin[1] = TextDrawCreate(208.393585, 368.083312, "LD_BEAT:left");
TextDrawLetterSize(td_select_skin[1], 0.000000, 0.000000);
TextDrawTextSize(td_select_skin[1], 33.733535, 44.916667);
TextDrawAlignment(td_select_skin[1], 2);
TextDrawColor(td_select_skin[1], -65281);
TextDrawSetShadow(td_select_skin[1], 0);
TextDrawSetOutline(td_select_skin[1], 0);
TextDrawBackgroundColor(td_select_skin[1], 255);
TextDrawFont(td_select_skin[1], 4);
TextDrawSetSelectable(td_select_skin[1], true);

td_select_skin[2] = TextDrawCreate(317.000000, 381.500061, "SELECT");
TextDrawLetterSize(td_select_skin[2], 0.792019, 2.877502);
TextDrawTextSize(td_select_skin[2], 17.0, 70.0);
TextDrawAlignment(td_select_skin[2], 2);
TextDrawColor(td_select_skin[2], -65281);
TextDrawSetShadow(td_select_skin[2], 0);
TextDrawSetOutline(td_select_skin[2], 1);
TextDrawBackgroundColor(td_select_skin[2], 255);
TextDrawFont(td_select_skin[2], 0);
TextDrawSetProportional(td_select_skin[2], 1);
TextDrawSetSelectable(td_select_skin[2], true);
}

UPD: стоило только поискать и нашел: https://wiki.sa-mp.com/wiki/CancelSelectTextDraw

Но если кто-нибудь дополнит или пояснит мелочи кликабельности текстдрава - пожалуйста.

geneff
17.03.2020, 00:55
CancelSelectTextDraw(playerid);

SteveStage
17.03.2020, 14:15
CancelSelectTextDraw(playerid);

А зачем функцию, которая мне нужна была, вставлять в PHP код и сюда скидывать?)