Saltar al contenido
  • Global

    Global

    Chatroom Rules

    • NO SE DA SOPORTE EN CHATBOX
    • NO SPAM
    • NO FLOOD

Publicaciones recomendadas

  • Usuario
Publicado

Hola a todos, les quería pedir ayuda en las variables de admin, tengo unos comandos con la variable de admin y cuando copilo no da error ni warning, pero cuando entro al servidor para hacer el comando me dice que no tengo nivel suficiente y ya edite al maximo nivel.

 

enum PlayerInfo
{
NivelAdmin, //pInfo[playerid][NivelAdmin];
}

 

new pInfo[MAX_PLAYERS][PlayerInfo];

 

VARIABLE QUE USO:

 

if(pInfo[playerid][NivelAdmin] >= 1) El 1 vendria a ser el nivel, maximo 5

 

 

Les dejo lo demas:

 

stock Registrar(playerid, key[])
{
new PlayerDatos[64];
new nombre[MAX_PLAYER_NAME];
GetPlayerName(playerid,nombre,sizeof(nombre));
format(PlayerDatos,sizeof(PlayerDatos),"/Accounts/%s.ini",nombre);
dini_Create(PlayerDatos);
dini_Set(PlayerDatos,"Nombre",nombre);
dini_Set(PlayerDatos,"Contraseña",key);
SendClientMessage(playerid, COLOR_VERDE_CLARO, "Te has registrado correctamente");
dini_IntSet(PlayerDatos,"NivelAdmin",0);
dini_IntSet(PlayerDatos,"Asesinatos",0);
dini_IntSet(PlayerDatos,"Muertes",0);
dini_IntSet(PlayerDatos,"Score",0);
dini_IntSet(PlayerDatos,"Dinero",0);
return 1;
}
stock Ingresar(playerid, key[])
{
new PlayerDatos[64];
new nombre[MAX_PLAYER_NAME];
GetPlayerName(playerid,nombre,sizeof(nombre));
format(PlayerDatos,sizeof(PlayerDatos),"/Accounts/%s.ini",nombre);
if(!strcmp(key,dini_Get(PlayerDatos,"Contraseña"),false))
{
pInfo[playerid][NivelAdmin] = dini_Int(PlayerDatos, "NivelAdmin");
SetPlayerScore(playerid,dini_Int(PlayerDatos, "Score"));
GivePlayerMoney(playerid, dini_Int(PlayerDatos, "Dinero")-GetPlayerMoney(playerid));
SendClientMessage(playerid, COLOR_VERDE_CLARO, "Has ingresado exitosamente.");
if(pInfo[playerid][NivelAdmin] >= 1)
{
EsAdmin[playerid] = 1;
}
if(pInfo[playerid][NivelAdmin] >= 2)
{
EsAdmin[playerid] = 1;
}
if(pInfo[playerid][NivelAdmin] >= 3)
{
EsAdmin[playerid] = 1;
}
if(pInfo[playerid][NivelAdmin] >= 4)
{
EsAdmin[playerid] = 1;
}
if(pInfo[playerid][NivelAdmin] >= 5)
{
EsAdmin[playerid] = 1;
}
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Ingresar", "{FF0000}Contraseña Incorrecta!\n{FFFFFF}Ingresa la contraseña para ingresar", "Ingresar", "Cancelar");
}
return 1;

}

 

  • Usuario
Publicado

Y el comando? Ahí solo tienes las funciones que llamas en el comando, o al entrar, el problema debe estar en el comando, es donde generalmente se pone la sentencia de el nivel.

 

Deja el comando xd

  • Usuario
Publicado

este comando anda, pero para todos los usuarios(admins como players comunes) y yo quiero q sea solo para admin

 

dcmd_asay(playerid,params[]) {
#pragma unused params
if(IsAdmin(playerid, 1)) {
if(!strlen(params)) return SendClientMessage(playerid, COLOR_ROJO, "Usa: /asay [texto]");
new string[128]; format(string, sizeof(string), "*Admin %s: %s", PlayerName2(playerid), params[0] );
return SendClientMessageToAll(COLOR_AZUL,string);
} else return SendClientMessage(playerid,COLOR_ROJO,"ERROR: Ese comando no existe, usa /comandos para ver todos los comandos");
}

ese es uno de los comandos, la mayoria de los comandos son de ladmin 4.2

  • Usuario
Publicado
if(IsAdmin(playerid, 1))

Esa es la sentencia que tienes mal, hay estas comprobando si el usuario es admin rcon, no admin con tu variable por niveles.

 

Lo correcto seria cambiar esa sentencia por esta:

if(pInfo[playerid][NivelAdmin] >=1)

Ahí estarías comprobando si el nivel de admin que almacenas en la variables es igual o mayor a uno, lo cual te dejaría pasar a la segunda parte del comando o retornar en que no tiene el suficiente nivel.

  • Usuario
Publicado

pero asi lo tengo xD


en otros comandos, esa seria una variable

 

stock IsAdmin(playerid,nivel)
{
if(pInfo[playerid][NivelAdmin] >= nivel) return 1;
return 0;
}
esto es lo que tengo
  • Usuario
Publicado

No había visto la función esa xD y analizando el código, me di cuenta que estas definiendo que nunca usas parámetros, cuando en realidad si usas (el parametro sera el texto que escriba el jugador).

 

Borra esto del comando:

#pragma unused params
  • Usuario
Publicado

Seguro? el ladmin venia con eso


dcmd_descongelar(playerid,params[]) {
	if(pInfo[playerid][Logueado] == 1) {
	    if(pInfo[playerid][NivelAdmin] >= 2|| IsPlayerAdmin(playerid)) {
		    if(!strlen(params)) return SendClientMessage(playerid, COLOR_ROJO, "USA: /descongelar [id]");
	    	new player1, string[128];
			player1 = strval(params);

		 	if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID) {
		 	    if(pInfo[player1][Congelado] == 1) {
					UnFreezeMe(player1);
					format(string,sizeof(string),"El Administrator %s te ha descongelado", PlayerName2(playerid) ); SendClientMessage(player1,COLOR_AZUL,string);
					format(string,sizeof(string),"El Administrator %s ha descongelado a %s", PlayerName2(playerid), PlayerName2(player1));
		    		return SendClientMessageToAll(COLOR_AZUL,string);
				} else return SendClientMessage(playerid, COLOR_ROJO, "ERROR: El jugador no se encuentra congelado");
			} else return SendClientMessage(playerid, COLOR_ROJO, "ERROR: El jugador no esta conectado, o es administrador de mayor nivel");
		} else return SendClientMessage(playerid,COLOR_ROJO,"ERROR: Ese comando no existe, usa /comandos para ver todos los comandos");
	} else return SendClientMessage(playerid,COLOR_ROJO,"ERROR: Debes estar registrado para usar este comando!");
}

y este?

  • Usuario
Publicado

Esas son las contras de usar un ladmin modificado y/o traducido. Con respecto al comando descongelar, qué error te da? A simple vista veo que esta bien.


PD: No mandes pms para que revise el tema xD

  • Usuario
Publicado

No estoy seguro de qué dices, pero sí de que tu función no funcionaría.

 

Sería algo así:

stock bool:IsAdmin(playerid,nivel)
{
if(pInfo[playerid][NivelAdmin] >= nivel) return bool:true;
else return bool:false;
}

Creo que así funcionaría.

  • Usuario
Publicado

No estoy seguro de qué dices, pero sí de que tu función no funcionaría.

 

Sería algo así:

stock bool:IsAdmin(playerid,nivel)
{
if(pInfo[playerid][NivelAdmin] >= nivel) return bool:true;
else return bool:false;
}

Creo que así funcionaría.

 

 

Esa función.

  • Usuario
Publicado (editado)

Mmmm.

 

Vi que usaste '#pragma unused params', con eso declaras que 'params' no servirá o no tendrá valor al ejecutar el código, y sí usas 'params' para el código. Quita esa directiva e inténtalo otra vez.

Editado por -EnzoMetlc-

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invitado
Responder a este tema...

×   Pegar como texto enriquecido.   Pegar como texto sin formato

  Only 75 emoji are allowed.

×   Tu enlace se ha incrustado automáticamente..   Mostrar como un enlace en su lugar

×   Se ha restaurado el contenido anterior.   Limpiar editor

×   No se pueden pegar imágenes directamente. Carga o inserta imágenes desde la URL.

  • Explorando recientemente   0 miembros

    • No hay usuarios registrados viendo esta página.
×
×
  • Crear nuevo...