Comando con sscanf
#1

Buenas, tengo un problema con un comando que acabo de realizar utilizando sscanf.

El comando es /dar admin [id/partenombre] [nivel] y no funciona.


pawn Код:
CMD:dar(playerid, params[])
{
    new option[50];
    if (!sscanf(params, "s[50]", option))
    {
        if (strfind(option, "admin", true) != -1)
        {
            if (pdata[Admin] >= 0)
            {
                new player, nivel;
                if (!sscanf(option, "ri", player, nivel))
                {
                    if (player != INVALID_PLAYER_ID)
                    {
                        new message[77];
                        PlayerData[player][Admin] = nivel;
                        format(message, sizeof(message), "Info: El administrador %s te ha dado nivel de admin %i", pdata[Nombre], nivel);
                        SendClientMessage(player, COLOR_INFO, message);
                        format(message, sizeof(message), "Info: Le has dado al jugador %s el nivel %i de admin", PlayerData[player][Nombre], nivel);
                        SendClientMessage(playerid, COLOR_INFO, message);
                    }
                    else
                    {
                        SendClientMessage(playerid, COLOR_ERROR, tJugNoConect);
                    }
                }
                else
                {
                    SendClientMessage(playerid, COLOR_ERROR, "Error: Debes introducir los parбmetros jugador y nivel de admin");
                }
            }
            else
            {
                SendClientMessage(playerid, COLOR_ERROR, tNoNivelAdmin);
            }
        }
        else
        {
            SendClientMessage(playerid, COLOR_USO, "Uso: /dar admin");
        }
    }
    else
    {
        SendClientMessage(playerid, COLOR_USO, "Uso: /dar admin");
    }
    return 1;
}
Cuando lo uso y pongo por ejemplo /dar admin 0 3 (0 es mi ID) dice que no estoy conectado, y si pongo /dar admin Ochenta 3 (Ochenta mi nombre ingame) dice que debo introducir parбmetros.

Ayuda por favor.
Reply
#2

En
pawn Код:
if (!sscanf(params, "s[50]", option))
estбs usando un solo parбmetro que es elegir la opciуn a realizar. Por tanto, la condiciуn serнa asн:

pawn Код:
new player,nivel;
 if (!sscanf(params, "s[50]ud", option,player,nivel)) // Primero estб la opciуn que es un string. Luego estб el parбmetro 'u' que actъa como parte del nombre del usuario o su id. Y luego estб el 'd' que actъa como un entero, que es donde almacenas el nivel a setear
Reply
#3

Quote:
Originally Posted by Juance
Посмотреть сообщение
En
pawn Код:
if (!sscanf(params, "s[50]", option))
estбs usando un solo parбmetro que es elegir la opciуn a realizar. Por tanto, la condiciуn serнa asн:

pawn Код:
new player,nivel;
 if (!sscanf(params, "s[50]ud", option,player,nivel)) // Primero estб la opciуn que es un string. Luego estб el parбmetro 'u' que actъa como parte del nombre del usuario o su id. Y luego estб el 'd' que actъa como un entero, que es donde almacenas el nivel a setear
No debido a que si yo por ejemplo quiero hacer el comando /dar vida que te de 100 de vida no necesita parбmetros y no funcionarб.
Reply
#4

En el comando para dar un nivel de administrador, le estбs seteando una variable al jugador que no tiene valor.

Si antes de que le setees la variable de administrador al jugador, le das un valor a nivel, entonces eso cambiarнa todo.

Ademбs de que le estбs dando a ningъn jugador, porque la variable "player" tampoco tiene valor.

Sscanf sirve para que le des un valor a la variable definida y usar esa variable en otras funciones. Si vos escribнs /dar admin , entonces no se sabrнa el nivel ni a quй jugador le estбs seteando el nivel. La condiciуn de sscanf que te di es correcta, puesto que le da un valor a "player" y "nivel" para luego setearle esos valores al jugador que previamente se definiу.

їAsн o mбs claro?

Edito: No vi el sscanf que defines luego del primer sscanf. Ese sscanf no te darб ningъn valor, los valores de "player" y "nivel" deben estar en el sscanf principal.
Reply
#5

Solucionado.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)