No encuentro el error >.<
#1

Hola, hice el siguiente comando:
pawn Код:
CMD:daradmin(playerid, params[])
{
    new Textito[128];
    if(DatosPJ[playerid][pAdmin] < 4)
    {
        if(sscanf(params, "ui", params[0], params[1]))
        if(IsPlayerConnected(params[0]))
        {
            format(Textito, sizeof(Textito), "Nombraste administrador rango %i al usuario %s",params[1],Jugador);
            SendClientMessage(playerid, -1, Textito);
            format(Textito, sizeof(Textito), "%s te nombro administrador rango %i",NombreJugador(playerid),params[1]);
            SendClientMessage(Jugador(params[0]), -1, Textito);
            DatosPJ[params[0]][pAdmin] = params[1];
        }
    } else SendClientMessage(playerid, -1, "No eres admin");
    return 1;
}
Y me sale el siguiente error:
Код:
C:\Documents and Settings\Administrador\Escritorio\Roleplay\gamemodes\Gamemode.pwn(536) : error 076: syntax error in the expression, or invalid function call
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


1 Error.
їUna ayudita?, desde ya gracias.
Reply
#2

No terminaste la condiciуn aqui:

pawn Код:
if(sscanf(params, "ui", params[0], params[1]))
Ademбs, estбs usando "params" incorrectamente.
pawn Код:
params = "hola";
params[0] = "h";
params[1] = "o";
Los diferentes valores de las celdas son letras distintas, no palabras separadas por espacios.

El cуdigo correcto serнa:
pawn Код:
CMD:daradmin(playerid, params[])
{
    new Textito[128], jugador, nivel;
    if(DatosPJ[playerid][pAdmin] < 4)
    {
        if(sscanf(params, "ui",jugador,nivel)) return 1; // no completу el comando.
        if(IsPlayerConnected(jugador))
        {
            format(Textito, sizeof(Textito), "Nombraste administrador rango %i al usuario %d",nivel,NombreJugador(jugador));
            SendClientMessage(playerid, -1, Textito);
            format(Textito, sizeof(Textito), "%s te nombro administrador rango %i",NombreJugador(playerid),nivel);
            SendClientMessage(jugador, -1, Textito);
            DatosPJ[jugador][pAdmin] = nivel;
        }
    } else SendClientMessage(playerid, -1, "No eres admin");
    return 1;
}
Si quieres explicaciуn, lee documentaciуn de sscanf antes de usarlo. No hagas cosas a ciegas.
Reply
#3

Quote:
Originally Posted by admantis
Посмотреть сообщение
No terminaste la condiciуn aqui:

pawn Код:
if(sscanf(params, "ui", params[0], params[1]))
Ademбs, estбs usando "params" incorrectamente.
pawn Код:
params = "hola";
params[0] = "h";
params[1] = "o";
Los diferentes valores de las celdas son letras distintas, no palabras separadas por espacios.

El cуdigo correcto serнa:
pawn Код:
CMD:daradmin(playerid, params[])
{
    new Textito[128], jugador, nivel;
    if(DatosPJ[playerid][pAdmin] < 4)
    {
        if(sscanf(params, "ui",jugador,nivel)) return 1; // no completу el comando.
        if(IsPlayerConnected(jugador))
        {
            format(Textito, sizeof(Textito), "Nombraste administrador rango %i al usuario %d",nivel,NombreJugador(jugador));
            SendClientMessage(playerid, -1, Textito);
            format(Textito, sizeof(Textito), "%s te nombro administrador rango %i",NombreJugador(playerid),nivel);
            SendClientMessage(jugador, -1, Textito);
            DatosPJ[jugador][pAdmin] = nivel;
        }
    } else SendClientMessage(playerid, -1, "No eres admin");
    return 1;
}
Si quieres explicaciуn, lee documentaciуn de sscanf antes de usarlo. No hagas cosas a ciegas.
No sй si estбs en lo correcto con lo de

Quote:
pawn Код:
params = "hola";
params[0] = "h";
params[1] = "o";
pero yo uso sscanf y hago perfectamente cosas como esta:

pawn Код:
CMD:test(playerid,params[])
{
if(sscanf(params,"ui", params[0],params[1])) return SendClientMessage(playerid,-1,"uso correcto: /test [ID/Nombre] [Nivel]");
return 1;
}
o tambiйn

pawn Код:
GetPlayerName(params[0],name,sizeof(name));
SendClientMessage(params[0],-1,"hola");
etc etc...
Reply
#4

Ese comando estб muy incompleto.

pawn Код:
CMD:daradmin(playerid, params[])
{
    if(DatosPJ[playerid][pAdmin] < 4)
    {
        if(sscanf(params, "ui", params[0], params[1])) return SendClientMessage(playerid, -1, "Uso - /daradmin [playerid] [level].");
        if(IsPlayerConnected(params[0]) && params[0] != INVALID_PLAYER_ID) // Player conectado && invalid..
        {
            if(params[1] < 0 || params[1] > 3) // Minimo & maximo nivel.
            {
                if(DatosPJ[playerid][pAdmin] > DatosPJ[params[0]][pAdmin]) // Si es mayor lvl admin.
                {
                    if(DatosPJ[params[0]][pAdmin] != params[1]) // Si ya tiene ese lvl.
                    {
                        format(Textito, sizeof(Textito), "Nombraste administrador rango %i al usuario %s",params[1],Jugador);
                        SendClientMessage(playerid, -1, Textito);
                        format(Textito, sizeof(Textito), "%s te nombro administrador rango %i",NombreJugador(playerid),params[1]);
                        SendClientMessage(Jugador(params[0]), -1, Textito);
                        DatosPJ[params[0]][pAdmin] = params[1];
                    }
                    else
                    {
                        SendClientMessage(playerid, -1, "Este player ya tiene este lvl.");
                    }
                }
                else
                {
                    SendClientMessage(playerid, -1, "No puedes utilizar este comando sobre un administrador con mбs lvl.");
                }
            }
            else
            {
                SendClientMessage(playerid, -1, "Uso correcto /daradmin [playerid] [lvl 0-3].");
            }
        }
        else
        {
            SendClientMessage(playerid, -1, "Player no conectado.");
        }
    }
    else
    {
        SendClientMessage(playerid, -1, "No eres admin");
    }
    return 1;
}
Reply
#5

Quote:

CMD:daradmin(playerid, params[])
{
new Textito[128];
if(DatosPJ[playerid][pAdmin] < 4)
{
if(sscanf(params, "ii", params[0], params[1]))
if(IsPlayerConnected(params[0]))
{
format(Textito, sizeof(Textito), "Nombraste administrador rango %d al usuario %s",params[1],Jugador);
SendClientMessage(playerid, -1, Textito);
format(Textito, sizeof(Textito), "%s te nombro administrador rango %d",NombreJugador(playerid),params[1]);
SendClientMessage(params[0], -1, Textito); // creo que este era el bug
DatosPJ[params[0]][pAdmin] = params[1];
}
} else SendClientMessage(playerid, -1, "No eres admin");
return 1;
}

Y asi esta correcto, si aun no esta bien fijate en el public "NombreJugador", respondiendo a lo de admantis que es esto:

Quote:

params = "hola";
params[0] = "h";
params[1] = "o";

Esta bien depende como se use, como string o como integer, double, float u otro, xTexTx lo puso correctamente bien, y alli no deberia dar ningun warning ni error, yo por lo general uso los params[0],params[1]... para no crear mas news.
Reply
#6

Quote:
Originally Posted by admantis
Посмотреть сообщение
Los diferentes valores de las celdas son letras distintas
si por eso no se que quiso decir con йsto
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)