Fallos en mi admin chat
#1

Hola, estaba haciendo por mi cuenta un chat para administradores y tengo algunos errores in-game:

Код:
CMD:a(playerid,params[])
{
    #pragma unused params
    if(DatosPJ[playerid][pAdmin] == 1)
    {
        new text[128];
        if(sscanf(params, "s[128]", text))
        {
            SendClientMessage(playerid,-1,"Usage: /a [texto]");
            return 1;
        }
		new name[MAX_PLAYER_NAME+1], string4[24+MAX_PLAYER_NAME+1];
		GetPlayerName(playerid, name, sizeof(name));
        format(string4, sizeof(string4), "[Aprendiz] %s: %s", name, text);
        SendClientMessageToAll(-1,string4);
    }
	if(DatosPJ[playerid][pAdmin] == 2)
    {
        new text2[128];
        if(sscanf(params, "st[128]", text2))
        {
            SendClientMessage(playerid,-1,"Usage: /a [texto]");
            return 1;
        }
		new name[MAX_PLAYER_NAME+1], st[24+MAX_PLAYER_NAME+1];
		GetPlayerName(playerid, name, sizeof(name));
        format(st, sizeof(st), "[Moderador] %s: %s", name, text2);
        SendClientMessageToAll(-1,st);
    }
	if(DatosPJ[playerid][pAdmin] == 3)
    {
        new text3[128];
        if(sscanf(params, "str[128]", text3))
        {
            SendClientMessage(playerid,-1,"Usage: /a [texto]");
            return 1;
        }
		new name[MAX_PLAYER_NAME+1], str[24+MAX_PLAYER_NAME+1];
		GetPlayerName(playerid, name, sizeof(name));
        format(str, sizeof(str), "[Moderador global] %s: %s", name, text3);
        SendClientMessageToAll(-1,str);
    }
	if(DatosPJ[playerid][pAdmin] == 4)
    {
        new text4[128];
        if(sscanf(params, "strr[128]", text4))
        {
            SendClientMessage(playerid,-1,"Usage: /a [texto]");
            return 1;
        }
		new name[MAX_PLAYER_NAME+1], strr[24+MAX_PLAYER_NAME+1];
		GetPlayerName(playerid, name, sizeof(name));
        format(strr, sizeof(strr), "[Administrador] %s: %s", name, text4);
        SendClientMessageToAll(-1,strr);
    }
    else
    {
        SendClientMessage(playerid, -1,"No perteneces al equipo administrativo");
    }
    return 1;
}
Seguramente estй todo mal organizado y haya una mejor forma de hacerlo en vez de como estб ahн pero bueno me quedo satisfecho de que aparezca el rango que tienes en el chat.

Los problemas... primero, todo el mundo puede ver el admin chat, es decir, los usuarios con "pAdmin = 0", segundo, cuando uso el comando se envia sin problemas pero abajo sale el mensaje de error: "No perteneces al equipo administrativo".

Todavнa no estoy muy documentado pero creo que tambiйn hize mal el tema de aprovechar la memoria y tal, no me lo he leido bien pero creo que estб mal fijo jaja.

Un saludo
Reply
#2

Estбs enviando el mensaje hacia todos.

Prueba haciendo una funciуn que verifique cada jugador y si ese "cada jugador" tiene como variable de administrador 1 o mбs que le aparezca el mensaje.

pawn Код:
stock MensajeAdmin(color,message[])
{
  foreach(new p: Player) // Comprobamos cada jugador
  {
     if(DatosPJ[p][pAdmin] >= 1) // Si un jugador tiene la variable pAdmin en 1 o mбs.
    {
         SendClientMessage(p,color,message); // Enviarб el mensaje a ese mismo jugador.
    }
  }
  return 1;
}
El comando podrнa ser algo como:

pawn Код:
CMD:a(playerid,params[])
{
    new mensaje[128],rango[30],string[128],Nombre[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Nombre,sizeof(Nombre));
    if(sscanf(params,"s[128]",mensaje)) return SendClientMessage(playerid,-1,"Uso: /a [Texto]");
    if(DatosPJ[playerid][pAdmin] == 0) return SendClientMessage(playerid,-1,"No puedes usar este comando"); // Si el jugador tiene pAdmin en 0, manda restricciуn
    switch(DatosPJ[playerid][pAdmin]) // Si hay una variable pAdmin en el jugador...
    {
      case 1: rango = "Aprendiz"; // ..y es 1 , es Aprendiz
      case 2: rango = "Moderador"; // si es 2 moderador..
      case 3: rango = "Moderador Global"; // si es 3 moderador glob.
      case 4: rango = "Administrador"; // si es 4 administrador
    }    
    format(string,sizeof(string),"[%s] %s: %s",rango,Nombre,mensaje); // imprimimos los resultados. Rango, nombre del jugador y mensaje puesto.
    MensajeAdmin(-1,string); // Enviamos el mensaje con la funciуn que estб arriba.
    return 1;
}
Ni lo probй. Sinceramente lo hice en el cuadro de texto para responder este mensaje.
Reply
#3

Pues si funciona me quitas un peso de encima, compara las lнneas de mi cуdigo con el tuyo xDDDD
Reply
#4

Quote:
Originally Posted by Orei
Посмотреть сообщение
Pues si funciona me quitas un peso de encima, compara las lнneas de mi cуdigo con el tuyo xDDDD
їPor quй yo? hacelo vos.
Reply
#5

Hacelo con switch como dijo Juance, si no queda super mal optimizado...
Reply
#6

Quote:
Originally Posted by Juance
Посмотреть сообщение
їPor quй yo? hacelo vos.
Nadie ha dicho que lo pruebes tъ, dуnde pone йso? xD
Quote:

Pues si funciona me quitas un peso de encima, compara las lнneas de mi cуdigo con el tuyo xDDDD

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)