Variables.
#1

Hola.

Tengo este codigo en todos los comandos del sistema administrativo quй uso, andaba bien,pero ahora quй cambie de host ningun comando sirve, al usar un comando sobre un player me dicй quй no puedo usar el comando en un admin con mayor level, alo quй entiendo es quй a todos los reconoce como admins,lo borro y queda sin problemas pero seria mejor que no puedan usar comandos sobre un administrador con mas level, alguiйn me puede ayudar ?

Esto es lo que indentifica al player si es nivel admin o si es mayor level.(No funciуna)
Код:
if(PlayerInfo[player1][Level] == ServerInfo[MaxAdminLevel] && PlayerInfo[playerid][Level] != 
ServerInfo[MaxAdminLevel])
return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" No puedes usar comandos sobre admin's de mas nivel");
Reply
#2

Te fijaste que en el nuevo host, se lean las cuentas?
Osea que tengas permisos 777
Reply
#3

Si tengo permisos ._. alo que entiendo creeo yase cual es el problema, los comandos llevan "return else" y igual funciones sin else

Ejemplo: esto no funciуna:
Код:
   if (strcmp("/Burn", cmd, true) == 0)
   {
   if(PlayerInfo[playerid][Level] >= 1)
   {
   new temporal[256], ajsts[256];
   temporal = strtok(cmdtext,idx);

   if(!strlen(temporal))
   return SendClientMessage(playerid, COLOR_RED, ""USOMSG" /Burn [jugador]");

   new player1 = strval(temporal), Float:xsd, Float:ysd, Float:zsd;

   if(PlayerInfo[player1][Level] == ServerInfo[MaxAdminLevel] && PlayerInfo[playerid][Level] != ServerInfo[MaxAdminLevel])
   return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" No puedes usar comandos sobre admin's de mas nivel");

   if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID)
   {
   format(ajsts, sizeof(ajsts), "Has quemado a %s", PlayerName2(player1));
   SendClientMessage(playerid,COLOR_BLUE,ajsts);

   if(player1 != playerid)
   {
   format(ajsts,sizeof(ajsts),"El Administrador %s te ha quemado", PlayerName2(playerid));
   SendClientMessage(player1,COLOR_BLUE,ajsts);
   }
   GetPlayerPos(player1, xsd, ysd, zsd);
   return CreateExplosion(xsd, ysd , zsd + 3, 1, 10);
   }
   else return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" El jugador no esta conectado");
   }
   else return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" Necesitas ser Administrador nivel 1 para usar este comando");
   }
Pero si modifico paraquй el msj valla al final del comando con "else return" si funciуna, pero modificar todos los comandos ? o_o mira asi funciуna:
Код:
   if (strcmp("/Burn", cmd, true) == 0)
   {
   if(PlayerInfo[playerid][Level] >= 1)
   {
   new temporal[256], ajsts[256];
   temporal = strtok(cmdtext,idx);

   if(!strlen(temporal))
   return SendClientMessage(playerid, COLOR_RED, ""USOMSG" /Burn [jugador]");

   new player1 = strval(temporal), Float:xsd, Float:ysd, Float:zsd;

   if(PlayerInfo[player1][Level] == ServerInfo[MaxAdminLevel] && PlayerInfo[playerid][Level] != ServerInfo[MaxAdminLevel])
   {
   if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID)
   {
   format(ajsts, sizeof(ajsts), "Has quemado a %s", PlayerName2(player1));
   SendClientMessage(playerid,COLOR_BLUE,ajsts);

   if(player1 != playerid)
   {
   format(ajsts,sizeof(ajsts),"El Administrador %s te ha quemado", PlayerName2(playerid));
   SendClientMessage(player1,COLOR_BLUE,ajsts);
   }
   GetPlayerPos(player1, xsd, ysd, zsd);
   return CreateExplosion(xsd, ysd , zsd + 3, 1, 10);
   }
   else return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" No puedes usar comandos sobre admin's de mas nivel");
   }
   else return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" El jugador no esta conectado");
   }
   else return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" Necesitas ser Administrador nivel 1 para usar este comando");
   }
O tambiйn podria ser de estar forma, borrando esa funciуn y solo comprobando si el usuario es admin mas no max_level asi:
Код:
   if (strcmp("/Burn", cmd, true) == 0)
   {
   if(PlayerInfo[playerid][Level] >= 1)
   {
   new temporal[256], ajsts[256];
   temporal = strtok(cmdtext,idx);

   if(!strlen(temporal))
   return SendClientMessage(playerid, COLOR_RED, ""USOMSG" /Burn [jugador]");

   new player1 = strval(temporal), Float:xsd, Float:ysd, Float:zsd;

   if(PlayerInfo[player1][Level] >= 1) return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" No puedes usar este comando en un administrador.");
   
   if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID)
   {
   format(ajsts, sizeof(ajsts), "Has quemado a %s", PlayerName2(player1));
   SendClientMessage(playerid,COLOR_BLUE,ajsts);

   if(player1 != playerid)
   {
   format(ajsts,sizeof(ajsts),"El Administrador %s te ha quemado", PlayerName2(playerid));
   SendClientMessage(player1,COLOR_BLUE,ajsts);
   }
   GetPlayerPos(player1, xsd, ysd, zsd);
   return CreateExplosion(xsd, ysd , zsd + 3, 1, 10);
   }
   else return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" El jugador no esta conectado");
   }
   else return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" Necesitas ser Administrador nivel 1 para usar este comando");
   }
Quй es mas recomendable ?
Reply
#4

Tu cуdigo no funciona porque, traducido al idioma humano, diria mas o menos asн: "si la variable PlayerInfo[player1][Level] en ServerInfo[MaxAdminLevel] y ademбs la variable PlayerInfo[playerid][Level] sea diferente a ServerInfo[MaxAdminLevel] se ejecutarб lo que sigue despues de los brackets"...

pawn Код:
if(PlayerInfo[player1][Level] == ServerInfo[MaxAdminLevel] && PlayerInfo[playerid][Level] !=
ServerInfo[MaxAdminLevel])
return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" No puedes usar comandos sobre admin's de mas nivel");
Lo que tu quieres, es que si un jugador tiene menos o igual nivel que otro, no pueda ejecutar comandos administrativos en contra de el segundo... entonces.

pawn Код:
#define usuario1 PlayerInfo[player1][Level] // Quien usa el comando
#define usuario2 PlayerInfo[playerid][Level] // A quien le afecta el comando

if(usuario1 <= usuario2)
return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" No puedes usar comandos sobre admin's de mas nivel");
Reply
#5

Quote:
Originally Posted by DesingMyCry
Посмотреть сообщение
Tu cуdigo no funciona porque, traducido al idioma humano, diria mas o menos asн: "si la variable PlayerInfo[player1][Level] en ServerInfo[MaxAdminLevel] y ademбs la variable PlayerInfo[playerid][Level] sea diferente a ServerInfo[MaxAdminLevel] se ejecutarб lo que sigue despues de los brackets"...

pawn Код:
if(PlayerInfo[player1][Level] == ServerInfo[MaxAdminLevel] && PlayerInfo[playerid][Level] !=
ServerInfo[MaxAdminLevel])
return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" No puedes usar comandos sobre admin's de mas nivel");
Lo que tu quieres, es que si un jugador tiene menos o igual nivel que otro, no pueda ejecutar comandos administrativos en contra de el segundo... entonces.

pawn Код:
#define usuario1 PlayerInfo[player1][Level] // Quien usa el comando
#define usuario2 PlayerInfo[playerid][Level] // A quien le afecta el comando

if(usuario1 <= usuario2)
return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" No puedes usar comandos sobre admin's de mas nivel");
Un pocу de atenciуn a este codigo y notaras quй eso ya esta en mi script.

[playerid] = administrador quй ocupa el comando(1 usuario)
[playerid1] = usuario al quй comparas la variable y en el cual ejecutas el comando(2 usuario).
pawn Код:
if(PlayerInfo[player1][Level] == ServerInfo[MaxAdminLevel] &&
PlayerInfo[playerid][Level] !=  ServerInfo[MaxAdminLevel])
Ami entender esta bien,esto esta bien:
pawn Код:
if(PlayerInfo[player1][Level] == ServerInfo[MaxAdminLevel])
return SendClientMessage(playerid, COLOR_RED, "No puedes usar comandos sobre administradores con mas nivel.");
Esa funciуn dice quй si el playerid1(usuario 2) tiene nivel admin retornemos al mensaje y el comando no funciуne.

Esto es creeo donde estб el error:
pawn Код:
if(PlayerInfo[playerid][Level] != ServerInfo[MaxAdminLevel])
return SendClientMessage(playerid, Creeo Quй aqui estб el error.");
Puйs ahi hace comparativa con el playerid(usuario 1[administrador]) y por logico retorta al mensaje en vez de continuar el comando pues deve ser administrador para poder ejecutar el comando.

Soluciуn ї?:
pawn Код:
if(PlayerInfo[player1][Level] == ServerInfo[MaxAdminLevel] && PlayerInfo[player1][Level] != ServerInfo[MaxAdminLevel])
return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" No puedes usar comandos sobre admin's de mas nivel");
Reply
#6

pawn Код:
if(PlayerInfo[player1][Level] == ServerInfo[MaxAdminLevel] && PlayerInfo[playerid][Level] != ServerInfo[MaxAdminLevel])
return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" No puedes usar comandos sobre admin's de mas nivel");
Reply
#7

Tu cуdigo esta mal, y es obvio al no funcionar.
Reply
#8

Snoopythekill ъsalo como te dije, te tiene que funcionar.
Reply
#9

No me funciono,sale el mismo mensaje.

Gracias de todas formas
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)