Nick Name para comando

¿Necesitas un código y no lo encuentras? Pídelo aquí. Seguramente alguien te lo facilitará rápidamente.

Moderador: Ayudantes

Reglas del Foro
  • A la hora de realizar su pedido, especifique bien los detalles y tenga buena ortografía, de esa manera el resto de los usuarios podrán entender lo que busca.
  • Recuerde utilizar el BBCode [Pawn]Código aquí[/Pawn] si proporciona algún código de referencia.
  • Sólo se aceptan pedidos de códigos que no especifiquen un Gamemode, esto significa que recibirás un código en el cual basarte, no un código completo.
  • No se admiten pedidos de Gamemodes, utiliza la sección Gamemodes o el buscador.
  • Todos somos aprendices y/o tenemos obligaciones. No pidas sistemas extensos o formes obligación, recuerda que no somos máquinas o esclavos.
  • Sigue al pie de la letra la Plantilla de Pedidos. Muchos usuarios te lo recordarán, pero si un tema no tiene el formato, el mismo será eliminado.
  • Evita colocar títulos como: "[Pedido]", "[Ayuda]", etc. Los títulos deben ser descriptivos.
  • Si el pedido se realiza, no modifiques el título ni el contenido de los mensajes del tema. Quizás le pueda servir a alguien más en otro momento.
  • Si el pedido se realiza, el tema será movido a "Pedidos Realizados".
  • Si el pedido no cumple con alguna de las reglas antes mencionadas o con las Normas del foro, el tema será movido a "Pedidos cerrados" o a la Papelera.
Responder
EL CHUKY
Aprendiz
Aprendiz
Mensajes: 52
Registrado: 28 Oct 2018 03:55
Reputación: 2

21 Abr 2019 00:21

Descripción detallada del pedido: Buenas, alguien tiene el código que es para que solo un jugador del server pueda ejecutar cierto comando? Es decir, que aunque seas administrador, si no tienes cierto NickName, no te deje ejecutar el comando. Espero me haya explicado bien XD

GM/FS: Liberty Zone

Notas: Uso zcmd
PROGRAMAR ES UN ARTE, SIGUE TUS METAS

Imagen

Avatar de Usuario
MrDave
Ayudante
Ayudante
Mensajes: 955
Registrado: 05 Oct 2017 12:13
Reputación: 107

21 Abr 2019 10:46

EL CHUKY escribió:
21 Abr 2019 00:21
Descripción detallada del pedido: Buenas, alguien tiene el código que es para que solo un jugador del server pueda ejecutar cierto comando? Es decir, que aunque seas administrador, si no tienes cierto NickName, no te deje ejecutar el comando. Espero me haya explicado bien XD

GM/FS: Liberty Zone

Notas: Uso zcmd

Usando la función strcmp lo puedes lograr.
Por ejemplo:
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

#include <a_samp>
#include <zcmd>

main()
{
}

CMD:prueba(playerid)
{
	new name[24];
	GetPlayerName(playerid, name, 24);
	if(strcmp(name, "EL_CHUKY", false) == 0)
	{
		printf("Eres %s :)", name);
	}
	else
	{
	    printf("No eres %s :(", name);
	}
	return 1;
}
  Cantidad de llaves: Abiertas(4)-Cerradas(4) | Lineas Totales: 21
Sí quieres agregar más nombres, puedes hacer algo como esto:
 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

#include <a_samp>
#include <zcmd>

#define MAX_NAMES 3

new Names[MAX_NAMES][24] =
{
	{"EL_CHUKY"},
	{"MR_DAVE"},
	{"FEDE_NEY"}
};

main()
{
}

DetectarNombre(playerid)
{
	new name[24];
	new i;
	GetPlayerName(playerid, name, 24);
	for(i = 0; i != sizeof Names; ++i)
	{
	    if(strcmp(name, Names[i], false) == 0)
	    {
	        return 1; //Si el jugador si está autorizado.
	    }
	}
	return 0; //Si el jugador no está autorizado.
}

CMD:prueba(playerid)
{
	if(!DetectarNombre(playerid))
	{
	    printf("No estas autorizado para usar este comando.");
	    return 1;
	}
	return 1;
}
  Cantidad de llaves: Abiertas(10)-Cerradas(10) | Lineas Totales: 40
Sí no quieres repetir la misma condición en cada comando, puedes usar una macro. Por ejemplo:
 Codigo Pawno:
1
2
3
4
5
6

#define DETECT_NAME(%0) 			\
if(!DetectarNombre(%0))   	\
{   								\
	SendClientMessage(%0, -1, "No estas autorizado para usar este comando."); \
	return 1; \
}
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 6
Luego para invocar la macro lo haces de esta forma:
 Codigo Pawno:
1
2
3
4
5

CMD:prueba(playerid)
{
	DETECT_NAME(playerid) //Acá no va punto y coma.
	return 1;
}
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 5

Sí quieres saber de una forma fácil de como va a ser expandida la macro "DETECT_NAME", puedes compilar manualmente usando el siguiente comando:

Código: Seleccionar todo

pawncc filename.pwn -l

El pre-procesador te generará un archivo con extensión .lst, ahí estará el código expandido por la macro.
"Código expandido" quiere decir el código que tiene la macro al momento de definirla.

- Temporalmente estoy retirado de SA-MP; por lo tanto no me envíen propuestas de proyectos.
- No respondo dudas por privado, usa la sección de preguntas.
Responder