Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Автор: AndreY.eXe
Textdraw каптчи: Перейти
- Каптча на TD.
- Разброс букв и размер Вы можете сделать сами, но делайте все в правильном порядке: с лево, на право. Сами буквы и числа определяются кодом.
- Чтобы вшить Ваши символы в функцию, используйте пример, данный в ней.
- Чтобы создать каптчу игроку, используйте CreateCaptchaForPlayer. Чтобы удалить - DestroyCaptchaForPlayer.
Textdraw каптчи: Перейти
PHP:
// Начало мода
new
Text: Captcha_TD[10], // Textdraw по ссылке ниже
PlayerText: Captcha_PTD[MAX_PLAYERS][6],
PlayerCaptcha[MAX_PLAYERS][7];
#define dialog_captcha 1024
// Конец мода
CreateCaptchaForPlayer(playerid)
{
format(PlayerCaptcha[playerid], 7, "");
new
captcha_mes[6],
captcha_random = random(2);
static const
Float: captcha_pos[][][] =
{
{
{ 284.0000, 123.0000 },
{ 291.0000, 129.0000 },
{ 298.5999, 118.0999 },
{ 323.0000, 132.0000 },
{ 329.0000, 141.0000 },
{ 333.0000, 123.0000 }
},
{
{ 277.0000, 123.0000 },
{ 281.0000, 125.0000 },
{ 288.0000, 122.0000 },
{ 303.0000, 133.0000 },
{ 308.0000, 131.0000 },
{ 311.0000, 136.0000 }
}
// Пример, чтобы добавить свои координаты CreatePlayerTextDraw:
/*
{ // Создаем новую секцию (это другой вариант выставления букв)
{ CreatePlayerTextDraw } // Создаем новую подсекцию в новой секции: эта 1 буква
}
*/
},
Float: captcha_letter[][][] =
{
{
{ 0.2415, 2.1537 },
{ 0.4750, 2.5333 },
{ 0.3390, 2.0480 },
{ 0.2355, 1.3760 },
{ 0.3725, 1.8364 },
{ 0.2339, 2.4400 }
},
{
{ 0.2415, 2.1537 },
{ 0.4750, 2.5333 },
{ 0.3390, 2.0480 },
{ 0.2355, 1.3760 },
{ 0.3725, 1.8364 },
{ 0.2339, 2.4400 }
}
// Пример, чтобы добавить свои координаты PlayerTextDrawLetterSize:
/*
{ // Создаем новую секцию (это другой вариант выставления букв)
{ PlayerTextDrawLetterSize } // Создаем новую подсекцию в новой секции (это первая буква)
}
*/
},
chars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for(new i; i < 10; i ++) TextDrawShowForPlayer(playerid, Captcha_TD[i]);
for(new i; i < 6; i ++)
{
strmid(captcha_mes[i], chrs[random(63)], 0, strlen(chrs[random(63)]), 2);
}
Captcha_PTD[playerid][i] = CreatePlayerTextDraw(playerid, captcha_pos[captcha_random][i][0], captcha_pos[captcha_random][i][1], captcha_mes[i]);
PlayerTextDrawLetterSize(playerid, Captcha_PTD[playerid][i], captcha_letter[captcha_random][i][0], captcha_letter[captcha_random][i][1]);
PlayerTextDrawAlignment(playerid, Captcha_PTD[playerid][i], 1);
PlayerTextDrawColor(playerid, Captcha_PTD[playerid][i], -1);
PlayerTextDrawFont(playerid, Captcha_PTD[playerid][i], 1);
PlayerTextDrawSetProportional(playerid, Captcha_PTD[playerid][i], 1);
PlayerTextDrawSetShadow(playerid, Captcha_PTD[playerid][i], 0);
PlayerTextDrawShow(playerid, Captcha_PTD[playerid][i]);
strcat(PlayerCaptcha[playerid], captcha_mes[i]);
}
ShowPlayerDialog(playerid, dialog_captcha, 1, "Captcha", "Введите сюда то, что видите на экране:", "Ввел", "Закрыть");
return true;
}
DestroyCaptchaForPlayer(playerid)
{
for(new i; i < 10; i ++) TextDrawHideForPlayer(playerid, Captcha_TD[i]);
for(new i; i < 6; i ++) PlayerTextDrawDestroy(playerid, Captcha_PTD[playerid][i]);
return true;
}
// OnPlayerDialogResponse
case dialog_captcha:
{
if(!response)return DestroyCaptchaForPlayer(playerid);
if(!strcmp(inputtext, PlayerCaptcha[playerid], false)) SendClientMessage(playerid, -1, "Вы правильно ввели капчу!");
else SendClientMessage(playerid, -1, "Вы не правильно ввели капчу!");
DestroyCaptchaForPlayer(playerid);
}