Ayuda > /Admins
#1

Buenas, tengo el cmd /admins, que configurй para que saliera un nombre especнfico para cada nivel de administraciуn, pero cuando pongo el comando sale que todos son "Admin de prueba".

Serнa una gran ayuda que me dijeran en que fallй.

De antemano gracias.

____


pawn Код:
dcmd_admins(playerid,params[])
    {
        #pragma unused params
        new cantidadadmins, titulo[128], admins[512];
        for(new i=0; i < MAX_PLAYERS; i++)
        {
            if (PlayerInfo[i][Level] >= 1 || IsPlayerAdmin(i)) cantidadadmins++;
        }
        if (cantidadadmins == 0) return SendClientMessage(playerid, red, "Lamentablemente, no hay administradores conectados.");
        format(titulo, 128, "{FFFF00}Administraciуn conectada (C: %d)", cantidadadmins);
        for(new i=0; i < MAX_PLAYERS; i++)
        {
            if(IsPlayerConnected(i))
            {
                if(PlayerInfo[i][Level] >= 1)
                {
                    new string[256];
                    format(string, sizeof(string), "{66CCCC}%s {FFFFFF}- {66CC00}Nivel %d {FFFFFF}- {00FFFF}Admin de Prueba\n", PlayerName2(i), PlayerInfo[i][Level]);
                    strcat(admins, string);
                }
                else if(PlayerInfo[i][Level] >= 2)
                {
                    new string[256];
                    format(string, sizeof(string), "{66CCCC}%s {FFFFFF}- {66CC00}Nivel %d {FFFFFF}- {CC6600}Moderador\n", PlayerName2(i), PlayerInfo[i][Level]);
                    strcat(admins, string);
                }
                else if(PlayerInfo[i][Level] >= 3)
                {
                    new string[256];
                    format(string, sizeof(string), "{66CCCC}%s {FFFFFF}- {66CC00}Nivel %d {FFFFFF}- {00FF00}Admin\n", PlayerName2(i), PlayerInfo[i][Level]);
                    strcat(admins, string);
                }
                else if(PlayerInfo[i][Level] >= 4)
                {
                    new string[256];
                    format(string, sizeof(string), "{66CCCC}%s {FFFFFF}- {66CC00}Nivel %d {FFFFFF}- {0000FF}Admin Cabecilla\n", PlayerName2(i), PlayerInfo[i][Level]);
                    strcat(admins, string);
                }
                else if(PlayerInfo[i][Level] >= 5)
                {
                    new string[256];
                    format(string, sizeof(string), "{66CCCC}%s {FFFFFF}- {66CC00}Nivel %d {FFFFFF}- {990033}Co Creador\n", PlayerName2(i), PlayerInfo[i][Level]);
                    strcat(admins, string);
                }
                else if(PlayerInfo[i][Level] >= 6)
                {
                    new string[256];
                    format(string, sizeof(string), "{66CCCC}%s {FFFFFF}- {66CC00}Nivel %d {FFFFFF}- {FF0000}Creador\n", PlayerName2(i), PlayerInfo[i][Level]);
                    strcat(admins, string);
                }
                else if(IsPlayerAdmin(i))
                {
                    new string[256];
                    format(string, sizeof(string), "{66CCCC}%s {FFFFFF}- {66CC00}Nivel %d {FFFFFF}- {FF0000}Admin RCON\n", PlayerName2(i), PlayerInfo[i][Level]);
                    strcat(admins, string);
                }
                ShowPlayerDialog(playerid, DIALOGO_NULL, DIALOG_STYLE_MSGBOX, titulo, admins, "Aceptar", "" );
            }
        }
        return 1;
    }
Reply
#2

En ves de esto
pawn Код:
if(PlayerInfo[i][Level] >= 1)
usa esto en todos

pawn Код:
if(PlayerInfo[i][Level] == 1)
Claro esta con diferente numero
Reply
#3

Usa ==. O bien, sуlo if. Ya que si usas else y >= se saltearб los otros porque el primero se cumple.
Reply
#4

Quote:
Originally Posted by Daniel_Ruiz
Посмотреть сообщение
En ves de esto
pawn Код:
if(PlayerInfo[i][Level] >= 1)
usa esto en todos

pawn Код:
if(PlayerInfo[i][Level] = 1)
Claro esta con diferente numero
No es un signo igual, son dos signos igual, porque si es uno sуlo sirve para asignarle un valor a la variable y dбrsela a un jugador. Prueba cambiar los >= por ==, y tambiйn prueba usando un return 1; debajo de cada strcat(admins, string);
Reply
#5

Quote:
Originally Posted by DeadSkyTkb
Посмотреть сообщение
No es un signo igual, son dos signos igual, porque si es uno sуlo sirve para asignarle un valor a la variable y dбrsela a un jugador. Prueba cambiar los >= por ==, y tambiйn prueba usando un return 1; debajo de cada strcat(admins, string);
Exacto

Oye Recuerda Siempre >= esto indica Mayor o Igual y Todos lo tenian.
Reply
#6

Quote:
Originally Posted by Daniel_Ruiz
Посмотреть сообщение
En ves de esto
pawn Код:
if(PlayerInfo[i][Level] >= 1)
usa esto en todos

pawn Код:
if(PlayerInfo[i][Level] = 1)
Claro esta con diferente numero
si usted usa asн el compilador tirara error ya que usted esta asignando un valor en una condiciуn cosa que es imposible, para comparar se usa "==".

Saludos
Reply
#7

Quote:
Originally Posted by Daniel_Ruiz
Посмотреть сообщение
Exacto

Oye Recuerda Siempre >= esto indica Menor o Igual y Todos lo tenian.
Te estбs equivocando
>= Left is greater than or equal to Right if (Left >= Right)
https://sampwiki.blast.hk/wiki/Control_Structures#Operators
Reply
#8

Quote:
Originally Posted by Daniel_Ruiz
Посмотреть сообщение
Exacto

Oye Recuerda Siempre >= esto indica Menor o Igual y Todos lo tenian.
No, >= significa mayor o igual, hay que cambiarlo a == que al usarlo como condicionante el sistema pondrб la condiciуn que si la variable que tiene asignada a un jugador es igual a (==) se ejecute X cуdigo o funciуn.

Revisa en tu ejemplo, en tu ejemplo pusiste sуlo un signo igual (=), que se usa para darle un valor a una variable y asignбrsela al jugador, y no se puede usar en una condicionante, por ejemplo, se puede usar asн:

pawn Код:
zcmd(quieroadmin, playerid, params[])
{
    PlayerInfo[playerid][Level] = 1;
    return 1;
}
Reply
#9

Ya dejen de regaсarme xd Creo que el ya entendio.
Reply
#10

La soluciуn efectiva que obtuve fue cambiar >= por ==, muchas gracias por la ayuda.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)