Часто встречал кривые системы на проверку RP ника, которые было легко обойти, поэтому решил опубликовать эту(вырезал их CRP). Данную проверку обойти не как не получится, разве что смогут зайти с нонRP ником, но с правильным синтаксисом, к примеру: Nonrp_Nick
Ниже написал, что куда вставлять.
В OnPlayerConnect:
Code
new plname[MAX_PLAYER_NAME];
if(!IsRPNick(playerid))
{
GetPlayerName(playerid, plname, sizeof(plname));
Kick(playerid); // Кикаем игрока с нонРП ником
return 1;
}
В конец мода:
Code
IsRPNick(playerid)
{
new plname[MAX_PLAYER_NAME];
GetPlayerName(playerid, plname, MAX_PLAYER_NAME);
for(new i=0;i<strlen(plname);i++){
if( !((plname[i]>='a'&&plname[i]<='z') || (plname[i]>='A'&&plname[i]<='Z') || plname[i]=='_') ){
return 0; // недопустимые символы в нике
}
}
new d = strfind(plname, "_");
if( d==-1 ) return 0; // нет _ в нике
if(strfind(plname, "_", false, d+1) != -1) return 0; // больше одного _ в нике
new name[10];
strmid(name, plname, 0, d, sizeof name);
new surname[10];
strmid(surname, plname, d+1, strlen(plname), sizeof surname);
if(strlen(name)<3 || strlen(name)>9) return 0; // неверная длина имени
if(strlen(surname)<3 || strlen(surname)>9) return 0; // неверная длина фамилии
if(!(name[0]>='A' && name[0]<='Z')) return 0; // первая буква имени не заглавная
if(!(surname[0]>='A' && surname[0]<='Z')) return 0; // первая буква фамилии не заглавная
for(new i=1;i<strlen(name);i++){
if(!(name[i]>='a'&&name[i]<='z')) return 0; // неверные буквы в имени
}
for(new i=1;i<strlen(surname);i++){
if(!(surname[i]>='a'&&surname[i]<='z')) return 0; // неверные буквы в фамилии
}
return 1; // все ok
}