Гайд Captcha

#saniwe

глаза пофикси
Автор темы
218
107
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Автор: AndreY.eXe
  • Каптча на 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);
        }
 

Вложения

  • Снимок.JPG
    Снимок.JPG
    22.5 KB · Просмотры: 1,177

Carlos777

Потрачен
227
219
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Это же легко обойти...