I need help with player name
#1

hi

how is this possible?
onplayerconnect if player using firstname_lastname format then he/she can play else kicked

example :
allowed name is : Akib_Khan
disallowed name is : [SAMP]Khan or [SAMP]Akib_Khan
Reply
#2

Add:
PHP код:
stock IsValidRoleplayName(const name[]) {
    if (!
name[0] || strfind(name"_") == -1)
        return 
0;
    else for (new 
0len strlen(name); != len++) {
        if ((
== 0) && (name[i] < 'A' || name[i] > 'Z'))
            return 
0;
        else if ((
!= && len  && name[i] == '_') && (name[1] < 'A' || name[1] > 'Z'))
            return 
0;
        else if ((
name[i] < 'A' || name[i] > 'Z') && (name[i] < 'a' || name[i] > 'z') && name[i] != '_' && name[i] != '.')
            return 
0;
    }
    return 
1;

And OnPlayerConnect:
PHP код:
public OnPlayerConnect(playerid)
{
    new 
Name[128];
    
GetPlayerName(playeridNamesizeof(Name));
    if(!
IsValidRoleplayName(Name))
    {
        
SendClientMessage(playerid, -1"You were kicked because of your name. The server only accepts character names, i.e Kendrick_Lamar.");
    
KickEx(playerid);
    return 
false;
    }
        return 
true;

Reply
#3

Quote:
Originally Posted by Arthur Kane
Посмотреть сообщение
Add:
PHP код:
stock IsValidRoleplayName(const name[]) {
    if (!
name[0] || strfind(name"_") == -1)
        return 
0;
    else for (new 
0len strlen(name); != len++) {
        if ((
== 0) && (name[i] < 'A' || name[i] > 'Z'))
            return 
0;
        else if ((
!= && len  && name[i] == '_') && (name[1] < 'A' || name[1] > 'Z'))
            return 
0;
        else if ((
name[i] < 'A' || name[i] > 'Z') && (name[i] < 'a' || name[i] > 'z') && name[i] != '_' && name[i] != '.')
            return 
0;
    }
    return 
1;

And OnPlayerConnect:
PHP код:
public OnPlayerConnect(playerid)
{
    new 
Name[128];
    
GetPlayerName(playeridNamesizeof(Name));
    if(!
IsValidRoleplayName(Name))
    {
        
SendClientMessage(playerid, -1"You were kicked because of your name. The server only accepts character names, i.e Kendrick_Lamar.");
    
KickEx(playerid);
    return 
false;
    }
        return 
true;

Indentation please and yep, he doesn't even have KickEx stock I bet.
Reply
#4

Quote:
Originally Posted by Arthur Kane
Посмотреть сообщение
Add:
PHP код:
stock IsValidRoleplayName(const name[]) {
    if (!
name[0] || strfind(name"_") == -1)
        return 
0;
    else for (new 
0len strlen(name); != len++) {
        if ((
== 0) && (name[i] < 'A' || name[i] > 'Z'))
            return 
0;
        else if ((
!= && len  && name[i] == '_') && (name[1] < 'A' || name[1] > 'Z'))
            return 
0;
        else if ((
name[i] < 'A' || name[i] > 'Z') && (name[i] < 'a' || name[i] > 'z') && name[i] != '_' && name[i] != '.')
            return 
0;
    }
    return 
1;

And OnPlayerConnect:
PHP код:
public OnPlayerConnect(playerid)
{
    new 
Name[128];
    
GetPlayerName(playeridNamesizeof(Name));
    if(!
IsValidRoleplayName(Name))
    {
        
SendClientMessage(playerid, -1"You were kicked because of your name. The server only accepts character names, i.e Kendrick_Lamar.");
    
KickEx(playerid);
    return 
false;
    }
        return 
true;

Thanks buddy!
Reply
#5

My recommendation would be to use regex.
Reply
#6

Quote:
Originally Posted by Sunehildeep
Посмотреть сообщение
stock
https://sampforum.blast.hk/showthread.php?tid=570635
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)