(Duda) Sistema de "Nombre_Apellido"
#1

Buenas, bueno he intentado buscar algъn tutorial de esto y no lo encontrй, entonces quizбs me puedan ayudar a poner este sistema. El sistema es que sуlo se podrб entrar al servidor con el formato de Nombre_Apellido, si el nombre no estб asн, el servidor te kickearб automбticamente. Querнa saber cуmo puedo poner en prбctica йsta regla, muchas gracias desde ya y un saludo.
Reply
#2

pawn Код:
public OnPlayerConnect(playerid)
{
new first[MAX_PLAYER_NAME], last[MAX_PLAYER_NAME]; // definimos
    if(RPName(PlayerName(playerid),first,last)) // aquн comprobamos si tiene nombre roleplay
    {
// Aquн lo que pasarб si tiene nombre RP.

// Si no lo tiene

else
    {
        Kick(playerid,"the server","Nombre errуneo, formato correcto: Nombre_Apellido (EJ: Pedro_Garcнa)."); // lo kickea si no tiene el nombre
    }
    return 1;
}
Y al final del gamemode colocas esto:

pawn Код:
RPName(name[],ret_first[],ret_last[])
{
    new len = strlen(name),
        point = -1,
        bool:done = false;
    for(new i = 0; i < len; i++)
    {
        if(name[i] == '_')
        {
            if(point != -1) return 0;
            else {
                if(i == 0) return 0;
                point = i + 1;
            }
        } else if(point == -1) ret_first[i] = name[i];
        else {
            ret_last[i - point] = name[i];
            done = true;
        }
    }
    if(!done) return 0;
    return 1;
}
Reply
#3

Quote:
Originally Posted by Loox
Посмотреть сообщение
pawn Код:
public OnPlayerConnect(playerid)
{
new first[MAX_PLAYER_NAME], last[MAX_PLAYER_NAME]; // definimos
    if(RPName(PlayerName(playerid),first,last)) // aquн comprobamos si tiene nombre roleplay
    {
// Aquн lo que pasarб si tiene nombre RP.

// Si no lo tiene

else
    {
        Kick(playerid,"the server","Nombre errуneo, formato correcto: Nombre_Apellido (EJ: Pedro_Garcнa)."); // lo kickea si no tiene el nombre
    }
    return 1;
}
Y al final del gamemode colocas esto:

pawn Код:
RPName(name[],ret_first[],ret_last[])
{
    new len = strlen(name),
        point = -1,
        bool:done = false;
    for(new i = 0; i < len; i++)
    {
        if(name[i] == '_')
        {
            if(point != -1) return 0;
            else {
                if(i == 0) return 0;
                point = i + 1;
            }
        } else if(point == -1) ret_first[i] = name[i];
        else {
            ret_last[i - point] = name[i];
            done = true;
        }
    }
    if(!done) return 0;
    return 1;
}
Puse tal cual estб ahн y me salen estos errores:

pawn Код:
C:\Users\cpu\Desktop\Servidor SP RP\gamemodes\SPRP.pwn(496) : error 055: start of function body without function header
C:\Users\cpu\Desktop\Servidor SP RP\gamemodes\SPRP.pwn(498) : error 010: invalid function or declaration
C:\Users\cpu\Desktop\Servidor SP RP\gamemodes\SPRP.pwn(504) : error 010: invalid function or declaration
C:\Users\cpu\Desktop\Servidor SP RP\gamemodes\SPRP.pwn(508) : error 010: invalid function or declaration
C:\Users\cpu\Desktop\Servidor SP RP\gamemodes\SPRP.pwn(771) : warning 203: symbol is never used: "RPName"
C:\Users\cpu\Desktop\Servidor SP RP\gamemodes\SPRP.pwn(771) : warning 203: symbol is never used: "first"
C:\Users\cpu\Desktop\Servidor SP RP\gamemodes\SPRP.pwn(771) : warning 203: symbol is never used: "last"
Pawn compiler 3.2.3664          Copyright (c) 1997-2006, ITB CompuPhase


4 Errors.
їCуmo se puede corregir eso?
Reply
#4

Es porque Loox no cerrу con una llave el condicional.. Ponelo asн;

pawn Код:
public OnPlayerConnect(playerid)
{
new first[MAX_PLAYER_NAME], last[MAX_PLAYER_NAME]; // definimos
    if(RPName(PlayerName(playerid),first,last)) // aquн comprobamos si tiene nombre roleplay
    {
// Aquн lo que pasarб si tiene nombre RP.

// Si no lo tiene
}
else
    {
        Kick(playerid,"the server","Nombre errуneo, formato correcto: Nombre_Apellido (EJ: Pedro_Garcнa)."); // lo kickea si no tiene el nombre
    }
    return 1;
}
Reply
#5

Quote:
Originally Posted by DeadSkyTkb
Посмотреть сообщение
Es porque Loox no cerrу con una llave el condicional.. Ponelo asн;

pawn Код:
public OnPlayerConnect(playerid)
{
new first[MAX_PLAYER_NAME], last[MAX_PLAYER_NAME]; // definimos
    if(RPName(PlayerName(playerid),first,last)) // aquн comprobamos si tiene nombre roleplay
    {
// Aquн lo que pasarб si tiene nombre RP.

// Si no lo tiene
}
else
    {
        Kick(playerid,"the server","Nombre errуneo, formato correcto: Nombre_Apellido (EJ: Pedro_Garcнa)."); // lo kickea si no tiene el nombre
    }
    return 1;
}
Ahora me pone estos errores:
pawn Код:
C:\Users\cpu\Desktop\Servidor SP RP\gamemodes\SPRP.pwn(496) : error 055: start of function body without function header
C:\Users\cpu\Desktop\Servidor SP RP\gamemodes\SPRP.pwn(498) : error 010: invalid function or declaration
C:\Users\cpu\Desktop\Servidor SP RP\gamemodes\SPRP.pwn(503) : error 054: unmatched closing brace ("}")
C:\Users\cpu\Desktop\Servidor SP RP\gamemodes\SPRP.pwn(504) : error 010: invalid function or declaration
C:\Users\cpu\Desktop\Servidor SP RP\gamemodes\SPRP.pwn(508) : error 010: invalid function or declaration
C:\Users\cpu\Desktop\Servidor SP RP\gamemodes\SPRP.pwn(771) : warning 203: symbol is never used: "RPName"
C:\Users\cpu\Desktop\Servidor SP RP\gamemodes\SPRP.pwn(771) : warning 203: symbol is never used: "first"
C:\Users\cpu\Desktop\Servidor SP RP\gamemodes\SPRP.pwn(771) : warning 203: symbol is never used: "last"
Pawn compiler 3.2.3664          Copyright (c) 1997-2006, ITB CompuPhase


5 Errors.
Reply
#6

pawn Код:
//OnPlayerConnect
    new plname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, plname, sizeof(plname));
    new namestring = strfind(plname, "_", true);
    new pointstring = strfind(plname, ".", true);
    if(namestring == -1 || pointstring != -1)
    {
        Message(playerid, COLOR_YELLOW2, "Su nombre debe ser en el formato Nombre_Apellido. Ejemplo: Juan_Perez");
        Kick(playerid);
        return 1;
    }
Reply
#7

Validador de nombres de RP

pawn Код:
stock NameValidator(playerid)
{
    if(IsPlayerConnected(playerid))
    {
      new pname[MAX_PLAYER_NAME],underline=0;
      GetPlayerName(playerid, pname, sizeof(pname));
      if(strfind(pname,"[",true) != (-1)) return 0;
      else if(strfind(pname,"]",true) != (-1)) return 0;
      else if(strfind(pname,"$",true) != (-1)) return 0;
      else if(strfind(pname,"(",true) != (-1)) return 0;
      else if(strfind(pname,")",true) != (-1)) return 0;
      else if(strfind(pname,"=",true) != (-1)) return 0;
      else if(strfind(pname,"@",true) != (-1)) return 0;
      else if(strfind(pname,"1",true) != (-1)) return 0;
      else if(strfind(pname,"2",true) != (-1)) return 0;
      else if(strfind(pname,"3",true) != (-1)) return 0;
      else if(strfind(pname,"4",true) != (-1)) return 0;
      else if(strfind(pname,"5",true) != (-1)) return 0;
      else if(strfind(pname,"6",true) != (-1)) return 0;
      else if(strfind(pname,"7",true) != (-1)) return 0;
      else if(strfind(pname,"8",true) != (-1)) return 0;
      else if(strfind(pname,"9",true) != (-1)) return 0;
      new maxname = strlen(pname);
      for(new i=0; i<maxname; i++)
      {
        if(pname[i] == '_') underline ++;
      }
      if(underline != 1) return 0;
      pname[0] = toupper(pname[0]);
      for(new x=1; x<maxname; x++)
        {
            if(pname[x] == '_') pname[x+1] = toupper(pname[x+1]);
            else if(pname[x] != '_' && pname[x-1] != '_') pname[x] = tolower(pname[x]);
        }
      SetPlayerName(playerid, "New_Name"); //їHarб falta? їSi? їNo? їQuien sabe? їWIki? їAH, que hace falta? Ok pues lo dejo.
      SetPlayerName(playerid, pname);
      return 1;
    }
    return 0;
}
pawn Код:
public OnPlayerConnect(playerid)
{
        new string[256];
    NameValidator(playerid);
    if(NameValidator(playerid) == 0)
    {
        new pname[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pname, sizeof(pname));
        SendClientMessage(playerid, COLOR, "AYUDA: Tu nombre no es vбlido. Debe ser un nombre real.");
        SendClientMessage(playerid, COLOR, "AYUDA: Tu nombre tiene que segir el formato de Nombre_Apellido (Mayъsculas incluidas)");
        Kick(playerid);
        format(string, 256, "{9C9C41}[KICK] {FFFFA1}%s {9BAF00}ha sido auto-{00FF00}kickeado {FFFFFF}| {FF8E26}Razуn: {FFFFC0}Nombre NO-RP{FFFFFF}|", pname);
        SendClientMessageToAll(COLOR, string);
        return 1;
    }
//Tus otros cуdigos
    return 1;
}
Reply
#8

Quote:
Originally Posted by OTACON
Посмотреть сообщение
Validador de nombres de RP

pawn Код:
stock NameValidator(playerid)
{
    if(IsPlayerConnected(playerid))
    {
      new pname[MAX_PLAYER_NAME],underline=0;
      GetPlayerName(playerid, pname, sizeof(pname));
      if(strfind(pname,"[",true) != (-1)) return 0;
      else if(strfind(pname,"]",true) != (-1)) return 0;
      else if(strfind(pname,"$",true) != (-1)) return 0;
      else if(strfind(pname,"(",true) != (-1)) return 0;
      else if(strfind(pname,")",true) != (-1)) return 0;
      else if(strfind(pname,"=",true) != (-1)) return 0;
      else if(strfind(pname,"@",true) != (-1)) return 0;
      else if(strfind(pname,"1",true) != (-1)) return 0;
      else if(strfind(pname,"2",true) != (-1)) return 0;
      else if(strfind(pname,"3",true) != (-1)) return 0;
      else if(strfind(pname,"4",true) != (-1)) return 0;
      else if(strfind(pname,"5",true) != (-1)) return 0;
      else if(strfind(pname,"6",true) != (-1)) return 0;
      else if(strfind(pname,"7",true) != (-1)) return 0;
      else if(strfind(pname,"8",true) != (-1)) return 0;
      else if(strfind(pname,"9",true) != (-1)) return 0;
      new maxname = strlen(pname);
      for(new i=0; i<maxname; i++)
      {
        if(pname[i] == '_') underline ++;
      }
      if(underline != 1) return 0;
      pname[0] = toupper(pname[0]);
      for(new x=1; x<maxname; x++)
        {
            if(pname[x] == '_') pname[x+1] = toupper(pname[x+1]);
            else if(pname[x] != '_' && pname[x-1] != '_') pname[x] = tolower(pname[x]);
        }
      SetPlayerName(playerid, "New_Name"); //їHarб falta? їSi? їNo? їQuien sabe? їWIki? їAH, que hace falta? Ok pues lo dejo.
      SetPlayerName(playerid, pname);
      return 1;
    }
    return 0;
}
pawn Код:
public OnPlayerConnect(playerid)
{
        new string[256];
    NameValidator(playerid);
    if(NameValidator(playerid) == 0)
    {
        new pname[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pname, sizeof(pname));
        SendClientMessage(playerid, COLOR, "AYUDA: Tu nombre no es vбlido. Debe ser un nombre real.");
        SendClientMessage(playerid, COLOR, "AYUDA: Tu nombre tiene que segir el formato de Nombre_Apellido (Mayъsculas incluidas)");
        Kick(playerid);
        format(string, 256, "{9C9C41}[KICK] {FFFFA1}%s {9BAF00}ha sido auto-{00FF00}kickeado {FFFFFF}| {FF8E26}Razуn: {FFFFC0}Nombre NO-RP{FFFFFF}|", pname);
        SendClientMessageToAll(COLOR, string);
        return 1;
    }
//Tus otros cуdigos
    return 1;
}
Me sale este error:

pawn Код:
C:\Users\cpu\Desktop\Servidor SP RP\gamemodes\SPRP.pwn(491) : warning 217: loose indentation
Pawn compiler 3.2.3664          Copyright (c) 1997-2006, ITB CompuPhase


1 Warning.
їQuй hago?
Reply
#9

Pon: #pragma tabsize 0 abajo de los includes
Reply
#10

Quote:
Originally Posted by Kryzis
Посмотреть сообщение
Me sale este error:

pawn Код:
C:\Users\cpu\Desktop\Servidor SP RP\gamemodes\SPRP.pwn(491) : warning 217: loose indentation
Pawn compiler 3.2.3664          Copyright (c) 1997-2006, ITB CompuPhase


1 Warning.
їQuй hago?
es por ke esta desacomodado las llaves, hay te lo corregi y marque pero puede ke se desacomode por el bbcode del foro.

yo no te recomiendo de lo GROVE22 se solucionara pero eso en un futuro puede causar otros bug's .


pawn Код:
stock NameValidator(playerid)
{
    if(IsPlayerConnected(playerid))
    {
      new pname[MAX_PLAYER_NAME],underline=0;
      GetPlayerName(playerid, pname, sizeof(pname));
      if(strfind(pname,"[",true) != (-1)) return 0;
      else if(strfind(pname,"]",true) != (-1)) return 0;
      else if(strfind(pname,"$",true) != (-1)) return 0;
      else if(strfind(pname,"(",true) != (-1)) return 0;
      else if(strfind(pname,")",true) != (-1)) return 0;
      else if(strfind(pname,"=",true) != (-1)) return 0;
      else if(strfind(pname,"@",true) != (-1)) return 0;
      else if(strfind(pname,"1",true) != (-1)) return 0;
      else if(strfind(pname,"2",true) != (-1)) return 0;
      else if(strfind(pname,"3",true) != (-1)) return 0;
      else if(strfind(pname,"4",true) != (-1)) return 0;
      else if(strfind(pname,"5",true) != (-1)) return 0;
      else if(strfind(pname,"6",true) != (-1)) return 0;
      else if(strfind(pname,"7",true) != (-1)) return 0;
      else if(strfind(pname,"8",true) != (-1)) return 0;
      else if(strfind(pname,"9",true) != (-1)) return 0;
      new maxname = strlen(pname);
      for(new i=0; i<maxname; i++)
      {
        if(pname[i] == '_') underline ++;
      }
      if(underline != 1) return 0;
      pname[0] = toupper(pname[0]);
      for(new x=1; x<maxname; x++)
      { //aca
            if(pname[x] == '_') pname[x+1] = toupper(pname[x+1]);
            else if(pname[x] != '_' && pname[x-1] != '_') pname[x] = tolower(pname[x]);
      } //aca
      SetPlayerName(playerid, "New_Name"); //їHarб falta? їSi? їNo? їQuien sabe? їWIki? їAH, que hace falta? Ok pues lo dejo.
      SetPlayerName(playerid, pname);
      return 1;
    }
    return 0;
}
Quote:
Originally Posted by GROVE22
Посмотреть сообщение
Pon: #pragma tabsize 0 abajo de los includes
¬¬ xDD
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)