[FS]: RolePlay - nombre check

¿Tienes un FilterScript muy bueno y quieres compartirlo con los demás? ¿Qué esperas? ¡Muéstranoslo aquí!

Moderador: Ayudantes

Reglas del Foro
  • Al liberar un FilterScript, debes informar sobre qué trata el código claramente, imágenes o vídeos y la explicación de cómo usarlo.
  • En caso de que quieras publicar un TextDraw que únicamente cumpla una función estética (como ser un TextDraw que muestra el nombre del servidor), es decir, no cumple ninguna función más que decorativa/visual (a diferencia de un TextDraw que realiza la función de velocímetro y contiene los códigos para ello, por ejemplo), debe ir en la sección Guías y Aportes.
  • Si el link de descarga no funciona, el tema será eliminado.
  • Si no eres el autor del FilterScript o has utilizado códigos de otros autores, recuerda colocar los créditos correspondientes. (El plagio es motivo de sanción).
Responder
Avatar de Usuario
Alejandro44
Aprendiz
Aprendiz
Mensajes: 138
Registrado: 30 Ago 2017 07:07
Ubicación: Venezuela
Contactar:
Reputación: 6

04 Sep 2018 14:22

Hola gente como estan bueno hoy les traigo un FS, que al ingresar al servidor con un nombre que no tenga el _, o que tenga algun simbolo lo kickeara del sv lanzandole un dialogo y automaticamente lo kickea el fs no fue echo por mi esta echo por: [DrM] spatrik, yo solo le añadi el dialogo, el dialogo tampoco es mio solo lo tome de la gm PlayerZeta, creditos a sus creadores.

//================================================//
// CREDITOS: [DrM] spatrik //
//
// TRADUCION: Alejandro44 //
//
// Dialogo: PlayerZeta //
//
// Funciones: [DrM] spatrik //
//================================================//

Imagen: https://imgur.com/4XjGQav
//================================================//
FS Original: https://pastebin.com/f6098c02

CODIGO PAWNO:
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91

//================================================//
//Creditos: [DrM] spatrik

//Traducion: Alejandro44

//Funciones: [DrM] spatrik

//Dialogo: PlayerZeta
//================================================//

#include <a_samp>

#define INMIGRACION 14001

new symbols[] =
{
	'[', ']'
};

new abc[] =
{
	'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
	'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
};

new bool: Big;

public OnPlayerConnect(playerid)
{
	new string[128], pName[MAX_PLAYER_NAME];
	GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
	if(IsPlayerNPC(playerid))
	{
	    return 1;
 	}
	if(strfind(pName, "_", true) == -1)
	{
        string="{2E9AFE}Departamento de inmigración:{FFFFFF} Tu nombre no es aceptable.\n{2E9AFE}Formato para el nombre:{FFFFFF} Nombre_Apellido\nPor favor, vuelve con un nombre válido.";
        ShowPlayerDialog(playerid, INMIGRACION, DIALOG_STYLE_MSGBOX, "Nombre inválido",string,"Aceptar","");
	    Kick(playerid);
	    return 1;
		} else {
		for(new i; i <= strlen(pName); i++)
		{
		    for(new j; j <= 9; j++)
		    {
		        if(pName[i] == j)
		        {
		            string="{2E9AFE}Departamento de inmigración:{FFFFFF} Tu nombre no es aceptable.\n{2E9AFE}Formato para el nombre:{FFFFFF} Nombre_Apellido\nPor favor, vuelve con un nombre válido.";
		            ShowPlayerDialog(playerid, INMIGRACION, DIALOG_STYLE_MSGBOX, "Nombre inválido",string,"Aceptar","");
				    Kick(playerid);
				    return 1;
		        }
		    }
		    for(new j; j <= sizeof(symbols); j++)
		    {
			    if(pName[i] == symbols[j])
			    {
			        string="{2E9AFE}Departamento de inmigración:{FFFFFF} Tu nombre no es aceptable.\n{2E9AFE}Formato para el nombre:{FFFFFF} Nombre_Apellido\nPor favor, vuelve con un nombre válido.";
                    ShowPlayerDialog(playerid, INMIGRACION, DIALOG_STYLE_MSGBOX, "Nombre inválido",string,"Aceptar","");
				    Kick(playerid);
				    return 1;
			    }
			}
			if(i >= 1)
			{
			    if(Big == true)
			    {
			        Big = false;
			        continue;
			    }
			    if(pName[i] == '_')
			    {
			        Big = true;
			        continue;
				}
			    for(new j; j <= sizeof(abc); j++)
			    {
			        if(pName[i] == abc[j])
			        {
			            string="{2E9AFE}Departamento de inmigración:{FFFFFF} Tu nombre no es aceptable.\n{2E9AFE}Formato para el nombre:{FFFFFF} Nombre_Apellido\nPor favor, vuelve con un nombre válido.";
                        ShowPlayerDialog(playerid, INMIGRACION, DIALOG_STYLE_MSGBOX, "Nombre inválido",string,"Aceptar","");
					    Kick(playerid);
					    return 1;
			        }
			    }
			}
		}
	}
	return 1;
}
  Cantidad de llaves: Abiertas(32)-Cerradas(32) | Lineas Totales: 91
GM/FS: Cualquier GM. (( TIENEN QUE ADAPTARLO CON SUS VARIABLES ))

(( SI LO USAN, RESPETEN CREDITOS ))

Última edición por Alejandro44 el 04 Sep 2018 19:28, editado 1 vez en total.
Mis aportes:


Avatar de Usuario
Kemula
Junior
Junior
Mensajes: 207
Registrado: 25 Ago 2015 09:36
Ubicación: España.
Reputación: 14

04 Sep 2018 15:48

Gracias por aportar, pero sinceramente, prefiero usar un regexp.

Ejemplo:
 Codigo Pawno:
1
2
3
4
5
6
7

IsRoleplayName(nickname[])
{
    new Regex:r = Regex_New("[A-Z][a-z]+_[A-Z][a-z]+");
    new check = Regex_Check(nickname, r);
    Regex_Delete(r);
    return check;
}
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 7
Esto hace exactamente lo mismo que lo tuyo.

Un saludo -hi

EDIT: Lógicamente esto no viene integrado en Pawn, y necesitamos un plugin. Es de urShadow, creador de Pawn.CMD.
Abu-Dhabi
Junior
Junior
Mensajes: 316
Registrado: 23 Ago 2014 15:20
Ubicación: Buenos Aires - Argentina
Reputación: 21

05 Sep 2018 00:35

Kemula escribió:
04 Sep 2018 15:48
Gracias por aportar, pero sinceramente, prefiero usar un regexp.

Ejemplo:
 Codigo Pawno:
1
2
3
4
5
6
7

IsRoleplayName(nickname[])
{
    new Regex:r = Regex_New("[A-Z][a-z]+_[A-Z][a-z]+");
    new check = Regex_Check(nickname, r);
    Regex_Delete(r);
    return check;
}
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 7
Esto hace exactamente lo mismo que lo tuyo.

Un saludo -hi

EDIT: Lógicamente esto no viene integrado en Pawn, y necesitamos un plugin. Es de urShadow, creador de Pawn.CMD.
Ta fenómeno, pero pone el link del plugin al menos...

http://forum.sa-mp.com/showthread.php?t=247893
Avatar de Usuario
Kemula
Junior
Junior
Mensajes: 207
Registrado: 25 Ago 2015 09:36
Ubicación: España.
Reputación: 14

05 Sep 2018 02:03

Abu-Dhabi escribió:
05 Sep 2018 00:35
Ta fenómeno, pero pone el link del plugin al menos...

http://forum.sa-mp.com/showthread.php?t=247893
La verdad creí que quien tuviese interés en usarlo, con los datos que dejé (Creador: urShadow. Nombre del plugin:PawnRegex) podían encontrarlo.

Tu enlace no es el correcto, es otro plugin distinto con otras funciones distintas.

El plugin correcto es este: https://github.com/urShadow/Pawn.Regex/ ... /README.md

Un saludo -hi
MuGhost
Aprendiz
Aprendiz
Mensajes: 7
Registrado: 03 Jul 2018 15:47
Reputación: 0

24 May 2019 12:39

Código: Seleccionar todo

//================================================//
//Creditos: [DrM] spatrik

//Traducion: Alejandro44

//Funciones: [DrM] spatrik

//Dialogo: PlayerZeta
//================================================//

#include <a_samp>

#define INMIGRACION 14001

new symbols[] =
{
	'[', ']'
};

new abc[] =
{
	'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
	'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
};

new bool: Big;

public OnPlayerConnect(playerid)
{
	new string[128], pName[MAX_PLAYER_NAME];
	GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
	if(IsPlayerNPC(playerid))
	{
	    return 1;
 	}
	if(strfind(pName, "_", true) == -1)
	{
        string="{2E9AFE}Departamento de inmigración:{FFFFFF} Tu nombre no es aceptable.\n{2E9AFE}Formato para el nombre:{FFFFFF} Nombre_Apellido\nPor favor, vuelve con un nombre válido.";
        ShowPlayerDialog(playerid, INMIGRACION, DIALOG_STYLE_MSGBOX, "Nombre inválido",string,"Aceptar","");
	    Kick(playerid);
	    return 1;
		} else {
		for(new i; i <= strlen(pName); i++)
		{
		    for(new j; j <= 9; j++)
		    {
		        if(pName[i] == j)
		        {
		            string="{2E9AFE}Departamento de inmigración:{FFFFFF} Tu nombre no es aceptable.\n{2E9AFE}Formato para el nombre:{FFFFFF} Nombre_Apellido\nPor favor, vuelve con un nombre válido.";
		            ShowPlayerDialog(playerid, INMIGRACION, DIALOG_STYLE_MSGBOX, "Nombre inválido",string,"Aceptar","");
				    Kick(playerid);
				    return 1;
		        }
		    }
		    for(new j; j <= sizeof(symbols); j++)
		    {
			    if(pName[i] == symbols[j])
			    {
			        string="{2E9AFE}Departamento de inmigración:{FFFFFF} Tu nombre no es aceptable.\n{2E9AFE}Formato para el nombre:{FFFFFF} Nombre_Apellido\nPor favor, vuelve con un nombre válido.";
                    ShowPlayerDialog(playerid, INMIGRACION, DIALOG_STYLE_MSGBOX, "Nombre inválido",string,"Aceptar","");
				    Kick(playerid);
				    return 1;
			    }
			}
			if(i >= 1)
			{
			    if(Big == true)
			    {
			        Big = false;
			        continue;
			    }
			    if(pName[i] == '_')
			    {
			        Big = true;
			        continue;
				}
			    for(new j; j <= sizeof(abc); j++)
			    {
			        if(pName[i] == abc[j])
			        {
			            string="{2E9AFE}Departamento de inmigración:{FFFFFF} Tu nombre no es aceptable.\n{2E9AFE}Formato para el nombre:{FFFFFF} Nombre_Apellido\nPor favor, vuelve con un nombre válido.";
                        ShowPlayerDialog(playerid, INMIGRACION, DIALOG_STYLE_MSGBOX, "Nombre inválido",string,"Aceptar","");
					    Kick(playerid);
					    return 1;
			        }
			    }
			}
		}
	}
	return 1;
}
---------------------------------------------------------------------------------------------------------------------------------------------------------

Saludos, -hi

Buen FS, pero me da error compilar ya que el "new string[128], pName[MAX_PLAYER_NAME];" Compila error ya que no tiene la capacidad suficiente para mantener los otros STRING de las lineas siguientes;

Código: Seleccionar todo

new string[256], pName[MAX_PLAYER_NAME];
por lo que les sugiero que cambien el "[128]", por "[256]", o por el "[512]".

Esto pueden usarlo para proximas referencias cuando les de el error:

Código: Seleccionar todo

error 047: array sizes do not match, or destination array is too small
Imagen
Responder