shape1
shape2
shape3
shape4
shape7
shape8

Проверка Nick На RP.


Статус
Закрыто для дальнейших ответов.

iPsTrange

Освоившийся
Пользователь
19.07.2014
137
46
0
Всем привет,и так,сегодня будет урок как сделать проверку на РП ник.Например Ivan_Ivanov.Если у вас будет ник такой iPsTrange или iPsTrange_iPsTrange-вас кикнет.

И так приступим.

Шаг первый.

Ко всем forward.

forward TimerRPNick(playerid); // Это таймер для проверки.

И так дальше.

Шаг второй.

В public OnPlayerConnect(playerid) вставляем.

new playername[21];
GetPlayerName(playerid,playername,21);
if(!IsRpName(playername)) // Если проверка не прошла
{
SendClientMessage(playerid,COLOR_RED,"У вас Нон-РП ник!"); // Выводим сообщение
SetTimer("TimerRPNick", 500, 0); // Запускаем таймер для кика игрока
return 1;

Шаг третий.

В конец мода.

public TimerRPNick(playerid) // Таймер
{
Kick(playerid); // Кикает игрока с нон-рп ником после 0.5 секунды после коннекта.

Это тоже в конец мода.

stock IsRpName(name[]) // Проверка ника
{
new bool:allowUnderscore,bool:bigletter=true,wordsize;
new countUnderscore,bool:bigAfterUnscr[3],bool:needUnderscore;
for(new i=0;i<strlen(name);i++)
{
if(bigletter) //если требуется большая буква
{
switch(name)
{
case 'A'..'Z':
{
if(countUnderscore > 0) // значит цикл уже не в начале слова.
{
bigAfterUnscr[countUnderscore-1] = true; //после одного из _ была большая буква.
}
bigletter=false; //следующая буква должна быть маленькой.
wordsize++;
continue;
}
case 'a'..'z': //но может быть так, что не всегда после _ идет большая буква.
{ // это для особых ников по типу Ник с 1-ой приставкой - Toxa_rf_Bakulev или еще страшнее.
if(countUnderscore > 0)
{
wordsize++;
if(wordsize == 2) { needUnderscore=true; allowUnderscore=true; bigletter=false; } //заставляем проверить на _ . Приставка не может быть более 2х символов.
//if(wordsize > 2) return 0; //приставка слишком большая получилась.
}
continue;
}
}
return 0;
}
if(!bigletter) //если не требуется большая буква, то может быть два варианта:
{ // 1 - маленькая буква; 2 - подчеркивание.
switch(name)
{
case 'a'..'z':
{
if(needUnderscore) return 0; // нужно было обязательное подчеркивание, а его не было.
wordsize++;
if(wordsize >= 2) allowUnderscore=true; //если слово состоит из двух или более букв, то разрешаем подчеркивание.
continue;
}
case '_':
{
if(!allowUnderscore) return 0; //мы не разрешали ставить подчеркивание.
if(wordsize < 2) return 0; //с_л_и_ш_к_о_м_ч_а_с_т_о_п_о_д_ч_е_р_к_и_в_а_н_и_я
needUnderscore=false;
bigletter=true;
countUnderscore++;
if(countUnderscore > 3) return 0; // слишком много приставок.
wordsize=0;
continue;
}

}
return 0;
}
}
if(!bigAfterUnscr[0] && !bigAfterUnscr[1] && bigAfterUnscr[2]) return 1; // Ник с 2-умя приставками - Toxa_rf_rf_Bakulev
if(!bigAfterUnscr[0] && bigAfterUnscr[1] && countUnderscore == 2) return 1; // Ник с 1-ой приставкой - Toxa_rf_Bakulev
if(bigAfterUnscr[0] && countUnderscore == 1) return 1; // Стандартный ник - Toxa_Bakulev
return 0;
}
Вот и все.

Автор:Toxa_Bakulev

Были ошибки.Исправил iPsTrange.

Скрин не думаю не надо,и так понятно что если нонрп ник вас кикнет.Спасибо,удачи.

 
Последнее редактирование модератором:

Rwmont2000

Новичок
Пользователь
18.12.2014
304
14
0
23
Поставил бы +, если был бы не заблокирован.

 
Статус
Закрыто для дальнейших ответов.