04.06.2014, 10:25
can any one make rp name detecter filterscript for me please..
public OnPlayerConnect(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(!IsRPName(name, 1))
{
SendClientMessage(playerid, 0xF96B6BFF, "SYNTAX{FFFFFF}: You don't have a roleplaying name! Please reconnect using a name in Firstname_Lastname format!");
SendClientMessage(playerid, 0xF96B6BFF, "SYNTAX{FFFFFF}: Make sure the name you choose is realistic, one you would use in real life! (i.e. ''John_Smith'')");
SetTimerEx("DelayedKick", 250, false, "i", playerid);
return false;
}
return true;
}
forward DelayedKick(playerid);
public DelayedKick(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
printf("[kick] %s (%d) has been (automated) kick(ed) by the system.", name, playerid);
Kick(playerid);
return true;
}
stock IsRPName(const name[], max_underscores = 1)
{
new underscores = 0;
if (name[0] < 'A' || name[0] > 'Z') return false; // first letter != capital
for(new i = 1; i < strlen(name); i++)
{
if(name[i] != '_' && (name[i] < 'A' || name[i] > 'Z') && (name[i] < 'a' || name[i] > 'z')) return false; // a-zA-Z_
if( (name[i] >= 'A' && name[i] <= 'Z') && (name[i - 1] != '_') ) return false; // unneeded capital letter
if(name[i] == '_')
{
underscores++;
if(underscores > max_underscores || i == strlen(name)) return false; // more than defined underline
if(name[i + 1] < 'A' || name[i + 1] > 'Z') return false; // no capital letter after underline
}
}
if (underscores == 0) return false; // no underline
return true;
}