PDA

Просмотр полной версии : [Вопрос] При нажатии на текстдрав выделяется фон, а не текст



Dima_Tushin
02.10.2019, 19:34
Здравствуйте пользователи Pro-Pawn проблема у меня с рекон функционалом когда включаешь мышь подсветка текста например Check>> у меня должно в дополнительном окне подсветка текст GM а у меня почему то подсветка всего бокса выдает как исправить Рекон Голубя знает кто исправить?


if(Spectate[playerid] && GetPlayerState(playerid) == PLAYER_STATE_SPECTATING)
{
new Keys,ud,lr;
GetPlayerKeys(playerid,Keys,ud,lr);

if(LastReconClick[playerid][0] != ud) LastReconClick[playerid][0] = 0;
if(LastReconClick[playerid][1] != lr) LastReconClick[playerid][1] = 0;

if(Spectate[playerid] && lr == KEY_LEFT && !LastReconClick[playerid][1])//Влево
{
LastReconClick[playerid][1] = lr;
PlayerPlaySound(playerid, 1084, 0.0, 0.0, 0.0);
SubTextDelete(playerid);//удаление дополнительного окна
DisableEnableReconButton(playerid, ReconSelect[playerid], 1);
}
if(Spectate[playerid] && lr == KEY_RIGHT && !LastReconClick[playerid][1])//Право
{
LastReconClick[playerid][1] = lr;
PlayerPlaySound(playerid, 1084, 0.0, 0.0, 0.0);
if(ReconSelectSub[playerid] == INVALID_TEXT_DRAW)
{
OnPlayerClickPlayerTextDraw(playerid, ReconPlayer[ReconSelect[playerid]]);
}
else
{
OnPlayerClickPlayerTextDraw(playerid, ReconPlayer[ReconSelectSub[playerid]]);
}
}
if(Spectate[playerid] && ud == KEY_UP && !LastReconClick[playerid][0])//Вверх
{
PlayerPlaySound(playerid, 1083, 0.0, 0.0, 0.0);
LastReconClick[playerid][0] = ud;
if(ReconSelectSub[playerid] == INVALID_TEXT_DRAW)
{
DisableEnableReconButton(playerid, ReconSelect[playerid], 0);
if(ReconSelect[playerid] <= 0)
{
ReconSelect[playerid] = 8;
DisableEnableReconButton(playerid, ReconSelect[playerid], 1);
}
else
{
ReconSelect[playerid]--;
DisableEnableReconButton(playerid, ReconSelect[playerid], 1);
}
}
else
{
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 0);
if(ReconSelectSub[playerid] <= ReconBounds[playerid][0])
{
ReconSelectSub[playerid] = ReconBounds[playerid][1];
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 1);
}
else
{
ReconSelectSub[playerid]--;
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 1);
}
}
}
if(Spectate[playerid] && ud == KEY_DOWN && !LastReconClick[playerid][0])//Вниз
{
PlayerPlaySound(playerid, 1083, 0.0, 0.0, 0.0);
LastReconClick[playerid][0] = ud;
if(ReconSelectSub[playerid] == INVALID_TEXT_DRAW)
{
DisableEnableReconButton(playerid, ReconSelect[playerid], 0);
if(ReconSelect[playerid] >= 8)
{
ReconSelect[playerid] = 0;
DisableEnableReconButton(playerid, ReconSelect[playerid], 1);
}
else
{
ReconSelect[playerid]++;
DisableEnableReconButton(playerid, ReconSelect[playerid], 1);
}
}
else
{
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 0);
if(ReconSelectSub[playerid] >= ReconBounds[playerid][1])
{
ReconSelectSub[playerid] = ReconBounds[playerid][0];
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 1);
}
else
{
ReconSelectSub[playerid]++;
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 1);
}
}
}
return 1;
}


public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
if(Spectate[playerid])
{
if(ReconPlayer[0] == playertextid)
{
SubTextDelete(playerid);//Удалили допол.окно
ShowPlayerDialog(playerid, 21, DIALOG_STYLE_INPUT, "Ид игрока ", "Введите ид игрока", "Готово", "Отмена");
return 1;
}
if(ReconPlayer[1] == playertextid)//Check>>
{
DisableEnableReconButton(playerid, ReconSelect[playerid], 0);
for(new i = 9; i < sizeof(ReconPlayer); i++) PlayerTextDrawHide(playerid, ReconPlayer[i]);//Скрываем текстдрав
for(new i = 9; i < 13; i++) PlayerTextDrawShow(playerid, ReconPlayer[i]);//показываем текстдрав
ReconBounds[playerid][0] = 9;
ReconBounds[playerid][1] = 12;
ReconSelectSub[playerid] = ReconBounds[playerid][0];
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 1);
return 1;
}
if(ReconPlayer[2] == playertextid)//Drop >>
{
DisableEnableReconButton(playerid, ReconSelect[playerid], 0);
for(new i = 9; i < sizeof(ReconPlayer); i++) PlayerTextDrawHide(playerid, ReconPlayer[i]);//Скрываем текстдрав
for(new i = 13; i < 18; i++) PlayerTextDrawShow(playerid, ReconPlayer[i]);//показываем текстдрав
ReconBounds[playerid][0] = 13;
ReconBounds[playerid][1] = 17;
ReconSelectSub[playerid] = ReconBounds[playerid][0];
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 1);
return 1;
}
else if(ReconPlayer[3] == playertextid)//Kick >>
{
DisableEnableReconButton(playerid, ReconSelect[playerid], 0);
for(new i = 9; i < sizeof(ReconPlayer); i++) PlayerTextDrawHide(playerid, ReconPlayer[i]);//Скрываем текстдрав
for(new i = 18; i < 20; i++) PlayerTextDrawShow(playerid, ReconPlayer[i]);//показываем текстдрав
ReconBounds[playerid][0] = 18;
ReconBounds[playerid][1] = 19;
ReconSelectSub[playerid] = ReconBounds[playerid][0];
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 1);
return 1;
}
/* else if(ReconPlayer[4] == playertextid)//Warn
{
SubTextDelete(playerid);
ShowPlayerDialog(playerid, 20, DIALOG_STYLE_INPUT, "Причина", "'\t\tВведите причину\t\t'", "Готово", "Отмена");
}*/
else if(ReconPlayer[5] == playertextid)//Ban >>
{
DisableEnableReconButton(playerid, ReconSelect[playerid], 0);
for(new i = 9; i < sizeof(ReconPlayer); i++) PlayerTextDrawHide(playerid, ReconPlayer[i]);//Скрываем текстдрав
for(new i = 20; i < 23; i++) PlayerTextDrawShow(playerid, ReconPlayer[i]);//показываем текстдрав
ReconBounds[playerid][0] = 20;
ReconBounds[playerid][1] = 22;
ReconSelectSub[playerid] = ReconBounds[playerid][0];
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 1);
return 1;
}
else if(ReconPlayer[6] == playertextid)//Stats >>
{
DisableEnableReconButton(playerid, ReconSelect[playerid], 0);
for(new i = 9; i < sizeof(ReconPlayer); i++) PlayerTextDrawHide(playerid, ReconPlayer[i]);//Скрываем текстдрав
for(new i = 23; i < 26; i++) PlayerTextDrawShow(playerid, ReconPlayer[i]);//показываем текстдрав
ReconBounds[playerid][0] = 23;
ReconBounds[playerid][1] = 25;
ReconSelectSub[playerid] = ReconBounds[playerid][0];
DisableEnableReconButton(playerid, ReconSelectSub[playerid], 1);
}
else if(ReconPlayer[7] == playertextid)//Refresh
{
SubTextDelete(playerid);
StartSpectate(playerid, SpecAd[playerid]);
}
else if(ReconPlayer[8] == playertextid)//Exit
{
SubTextDelete(playerid);
StopSpectate(playerid);
}
else if(ReconPlayer[9] == playertextid)//Change>> Check-GM
{
new Float: hp, Float:boomx, Float:boomy, Float:boomz;
GetPlayerHealth(SpecAd[playerid], hp);
GetPlayerPos(SpecAd[playerid],boomx, boomy, boomz);
CreateExplosion(boomx, boomy , boomz-8.9, 5, 0.5);
PlayerHealth[SpecAd[playerid]] -= 10;
}
else if(ReconPlayer[10] == playertextid)//Change>> Check-GM2
{
new Float: hp;
GetPlayerHealth(SpecAd[playerid], hp);
SetPlayerHealth(SpecAd[playerid], hp-10);
PlayerHealth[SpecAd[playerid]] -=10;
}
else if(ReconPlayer[11] == playertextid)//Change>> Check-GMCar
{
new Float: hp;
GetVehicleHealth(SpecAd[playerid], hp);
SetVehicleHealth(SpecAd[playerid], hp-10);
}
else if(ReconPlayer[12] == playertextid)//Change>> ResetShot
{
WeaponShotKol[SpecAd[playerid]] = 0;
WeaponShotDamage[SpecAd[playerid]] = 0;
SubTextDelete(playerid);
}
else if(ReconPlayer[13] == playertextid)//Drop >> Mute
{
new string[15];
format(string, sizeof(string), "/mute %i 0 5 0", SpecAd[playerid]);
CallLocalFunction("OnPlayerCommandText", "is", playerid, string);
}
else if(ReconPlayer[14] == playertextid)//Drop >> Slap
{
new Float: slx, Float: sly, Float: slz;
GetPlayerPos(SpecAd[playerid], slx, sly, slz);
SetPlayerPos(SpecAd[playerid], slx, sly, slz+5);
PlayerPlaySound(SpecAd[playerid], 1130, slx, sly, slz+5);
}
else if(ReconPlayer[15] == playertextid)//Drop >> Prison
{
SendClientMessage(playerid, COLOR_WHITE, "Drop >> Prison - В разработке!");
}
else if(ReconPlayer[16] == playertextid)//Drop >> Freeze
{
static const freeze[] = "Администратор: %s заморозил: %s";
static string[sizeof(freeze) + (-2 + MAX_PLAYER_NAME) + (-2 + MAX_PLAYER_NAME)];
format(string, sizeof(string), freeze, PlayerInfo[playerid][pName], PlayerInfo[SpecAd[playerid]][pName]);
SendAdminMessage(COLOR_LIGHTRED, string);
TogglePlayerControllable(SpecAd[playerid], false);
}
else if(ReconPlayer[17] == playertextid)//Drop >> UnFreeze
{
static const freeze[] = "Администратор: %s разморозил: %s";
static string[sizeof(freeze) + (-2 + MAX_PLAYER_NAME) + (-2 + MAX_PLAYER_NAME)];
format(string, sizeof(string), freeze, PlayerInfo[playerid][pName], PlayerInfo[SpecAd[playerid]][pName]);
SendAdminMessage(COLOR_LIGHTRED, string);
TogglePlayerControllable(SpecAd[playerid], true);
}
else if(ReconPlayer[18] == playertextid)//Kick >> Skick
{
SetTimerEx("Kicks", 1000, false, "d", SpecAd[playerid]);
}
// else if(ReconPlayer[19] == playertextid)//Kick >> Kick
// {
// ShowPlayerDialog(playerid, 22, DIALOG_STYLE_INPUT, "Причина", "'\t\tВведите причину\t\t'", "Готово", "Отмена");
// }
// else if(ReconPlayer[20] == playertextid) SubTextDelete(playerid), ShowPlayerDialog(playerid, 23, DIALOG_STYLE_INPUT, "Причина", "'\t\tВведите причину\t\t'", "Готово", "Отмена");//Ban >> Ban
// else if(ReconPlayer[21] == playertextid) SubTextDelete(playerid), ShowPlayerDialog(playerid, 24, DIALOG_STYLE_INPUT, "Причина", "'\t\tВведите причину\t\t'", "Готово", "Отмена");//Ban >> SBan
// else if(ReconPlayer[22] == playertextid) SubTextDelete(playerid), ShowPlayerDialog(playerid, 25, DIALOG_STYLE_INPUT, "Причина", "'\t\tВведите причину\t\t'", "Готово", "Отмена");//Ban >> IBan
else if(ReconPlayer[23] == playertextid) SubTextDelete(playerid), ShowStats(playerid, SpecAd[playerid]);
else if(ReconPlayer[24] == playertextid)
{
new string[15];
format(string, sizeof(string), "/iwep %i", SpecAd[playerid]);
CallLocalFunction("OnPlayerCommandText", "is", playerid, string);
SubTextDelete(playerid);
}
else if(ReconPlayer[25] == playertextid)
{
new ip[16];
GetPlayerIp(SpecAd[playerid], ip, sizeof(ip));
static const ips[] = "Nik [%s]\tR-IP [%s]\tL-IP [%s]\tIP [%s]";
static string[sizeof(ips) + (-2 + MAX_PLAYER_NAME) + (-2 + 16) + (-2 + 16) + (-2 + 16)];
format(string, sizeof(string), ips, PlayerInfo[SpecAd[playerid]][pName], PlayerInfo[SpecAd[playerid]][pIpReg], PlayerInfo[SpecAd[playerid]][pLastIp], ip);
SendClientMessage(playerid, COLOR_BLUE, string);
SubTextDelete(playerid);
}
}
return 1;
}


stock DisableEnableReconButton(playerid, button, enable, show = 1)
{
PlayerTextDrawHide(playerid, ReconPlayer[button]);
if(!enable)
PlayerTextDrawBoxColor(playerid, ReconPlayer[button], 0x00000055);
else
PlayerTextDrawBoxColor(playerid, ReconPlayer[button], 0xD97700AA);
if(show)
PlayerTextDrawShow(playerid, ReconPlayer[button]);
return 1;
}https://s8.hostingkartinok.com/uploads/images/2019/10/7756f439d9b8707452988eb965362d4d.png (https://hostingkartinok.com/show-image.php?id=7756f439d9b8707452988eb965362d4d)

вот где Reset Shot это наводка мышью а где сверху это и есть проблема которую я не могу исправить уже 3 дня пытаюсь и не могу(
с клавиатурой все хорошо работает а подключаешь мышь и баг

Dima_Tushin
03.10.2019, 11:57
как сделать проверка на кнопку ESC?

мне нужно чтобы когда я управлял мышью сделать проверку что я выключил мышь и включил клавиатуру я сделал отдельную проверку на мышь и клавиатуру как сделать проверку то что я нажал ESC

сделал вот это но когда я нажимаю ESC то я не могу в реконе управлять клавиатурой

public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
if(Spectate[playerid] && playertextid == PlayerText:INVALID_TEXT_DRAW) ReconKlavaMish[playerid] = 1;
}

DeimoS
03.10.2019, 12:05
Не ленитесь перепроверять wiki =\

http://wiki.sa-mp.com/wiki/OnPlayerClickPlayerTextDraw

When a player presses ESC to cancel selecting a textdraw, OnPlayerClickTextDraw (https://wiki.sa-mp.com/wiki/OnPlayerClickTextDraw) is called with a textdraw ID of 'INVALID_TEXT_DRAW'. OnPlayerClickPlayerTextDraw won't be called also.

Ну а изначальная твоя проблема не совсем понятна. Ты же сам изменяешь цвет бокса, а не текста. Что ты там исправить не можешь?

Dima_Tushin
03.10.2019, 12:12
я там уже проверял и потом все получилось я сразу на Wiki и пошел смотреть на счет кнопки ESC я там всегда все смотрю по public и функции
а так все что я хотел сделать я сделал можно закрывать и удалять!