[FilterScript] TextDraw Captcha
#1

Решил написать настоящую каптчу на текстдравах.



* Никаких диалогов, только текстдравы.
* Текстдравы персональные, удаляются при перезаходе сами.
* Система на PVar'ах, исключено перекрестное заполнение массивов.
* При правильном вводе каптчи Вас пустит на сервер.
* При неправильном вводе - сменит каптчу.
* До момента ввода правильной каптчи нельзя писать в чат, юзать команды и спавниться (дорабатывайте по своим нуждам).

http://pastebin.com/GMA6DU2e
Reply
#2

Code:
new PlayerText:Captcha[40]
Если я не ошибаюсь, то при заходе другого игрока, ID тексдравов старого игрока заменятся новыми.
Так будет правильней:
Code:
new PlayerText:Captcha[MAX_PLAYERS][40]
pawn Code:
if(i == 0) Captcha[i] = CreatePlayerTextDraw(playerid, 269.0, 139.0, "Anti-bot captcha:");
if(i == 1)
{
    new cstring[24];
    format(cstring, sizeof(cstring), "%c%c%c%c%c", TextArray[random(sizeof(TextArray))], TextArray[random(sizeof(TextArray))], TextArray[random(sizeof(TextArray))], TextArray[random(sizeof(TextArray))], TextArray[random(sizeof(TextArray))]);
    Captcha[i] = CreatePlayerTextDraw(playerid, 422.0, 139.0, cstring);
    SetPVarString(playerid, "CaptchaCode", cstring);
}
if(i == 2) Captcha[i] = CreatePlayerTextDraw(playerid, 285.0, 174.0, "Please repeat:");
if(i == 3) Captcha[i] = CreatePlayerTextDraw(playerid, 427.0, 178.0, "-----");
...
Для того, чтобы избежать многочисленной проверки одной переменной, логичнее будет использовать else if вместо if
Reply
#3

Во-первых, персональные ТД создаются для конкретного игрока, а другим не видны и для них они не существуют. Во-вторых, вне зависимости от ID существует константа, к которой цепляется ID: если новый ID - константа останется. В-третьих, в цикле, имхо, без разницы особой if/else if.

Система может не работать при наличии других персональных текстдравах. Для фикса вшиваем в мод или в тот ФС, где есть другие PTD.
Reply
#4

Quote:
Originally Posted by OKStyle
View Post
Во-первых, персональные ТД создаются для конкретного игрока, а другим не видны и для них они не существуют. Во-вторых, вне зависимости от ID существует константа, к которой цепляется ID: если новый ID - константа останется. В-третьих, в цикле, имхо, без разницы особой if/else if.

Система может не работать при наличии других персональных текстдравах. Для фикса вшиваем в мод или в тот ФС, где есть другие PTD.
Все правильно тебе сказали, или ты хочешь сказать, что твоя система будет работать после такого, если использовать ее не только при подключении?
pawn Code:
public OnPlayerConnect(playerid)
{
    for(new r; r < random(20); r++) CreatePlayerTextDraw(playerid, 200.0, 200.0, "_");
    // Тут твои ТД
    return 1;
}
Reply
#5

Моя система везде и всегда будет работать, если сделать так, как я написал. Внимательно читаем последнюю фразу.
Reply
#6

Зачем такое количество цифр и букв если они всё равно не имею никакой графической защиты? Три цифры в тексте и циферблат обеспечит на практике защиту такого же уровня. А сейчас 5-значная капча с цифрами и буквами латинского языка лишнее мучение и затрата времени для игроков.

Да и потом, от кого защита? Боты умеют читать string из текстдрава и посылать клик по ним. Достаточно сопоставить нужные данные и вуаля, защита бесполезна. Для реализации капчи нужно что то другое, например текст или цифры из кубиков (текстдравных), и то это не даст никакой 100% гарантии, т.к. бота можно подключить через оболочку, в которой всё это будет видно, почти как в игре. Единственный реально стоящий выход, который на 99% даст защиту это изображение чего либо в 3D пространстве мира (игры), а затем вопрос по этому самому миру. Пока ещё не видел ботов со своей 3D средой... Так что именно такой способ будет пожалуй самым надёжным.
Reply
#7

В некоторых случаях типовой юзер никогда не догадается, что ему показывают xD
Reply
#8

Была у меня одна идея "каптчи" по взаимодействию с 3d-объектами мира, но делать пока лень.

Скрипт обновлён: теперь по нажатию ESC невозможно завершить режим выбора символов.
Reply
#9

не плохо, нужная штука, а то боты уже надоели
Reply
#10

Quote:
Originally Posted by OKStyle
View Post
Решил написать настоящую каптчу на текстдравах.



* Никаких диалогов, только текстдравы.
* Текстдравы персональные, удаляются при перезаходе сами.
* Система на PVar'ах, исключено перекрестное заполнение массивов.
* При правильном вводе каптчи Вас пустит на сервер.
* При неправильном вводе - сменит каптчу.
* До момента ввода правильной каптчи нельзя писать в чат, юзать команды и спавниться (дорабатывайте по своим нуждам).

http://pastebin.com/GMA6DU2e
Здарова, ты писал както что у тебя есть скрипт ящика с оружием в котором есть динамические диалоги. Так вот где его скачать?
Reply
#11

Quote:
Originally Posted by lost13
Посмотреть сообщение
Здарова, ты писал както что у тебя есть скрипт ящика с оружием в котором есть динамические диалоги. Так вот где его скачать?
С такими индивидуальными вопросами пожалуйста в ЛС.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)