sscanf, comando no me funciona.
#1

Hola, pues bueno estuve haciendo comandos para mi servidor y no se porque a la hora de utilizar el comando poongo /congelar ID y me dice que debo utilizar /congelar ID y me paspo -.- una ayudita?
Este es otro comando, ya que el de congelar lo borre.
pawn Код:
CMD:quitarsancion(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 4) return SendClientMessage(playerid, Color_NaranjaOscuro, "No eres administrador");
    if(!sscanf(params, "u", params[0])) return SendClientMessage(playerid, Color_NaranjaOscuro, "Uso correcto: /quitarsancion [ID]");
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, Color_NaranjaOscuro, "No ese usuario no estб conectado");
    {
        new Mensaje[64], Jugador[MAX_PLAYER_NAME];
        GetPlayerName(playerid, Jugador, MAX_PLAYER_NAME);
        format(Mensaje, sizeof(Mensaje), "El usuario %s fue liberado de su sanciуn.", Jugador);
        SpawnPlayer(params[0]);
    }
    return 1;
}
Me dice "Uso correcto: /quitarsancion [ID]" cada vez que lo uso.
Reply
#2

es porque no sabes usar sscanf, en vez de "if(!sscanf(params, "u", params[0]))" cambialo por "if(sscanf(params, "u", params[0]))" y debe repararse.
Reply
#3

Es asн:

pawn Код:
if(!sscanf(params, "u", params[0]))
{
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, Color_NaranjaOscuro, "No ese usuario no estб conectado");
    {
        new Mensaje[64], Jugador[MAX_PLAYER_NAME];
        GetPlayerName(playerid, Jugador, MAX_PLAYER_NAME);
        format(Mensaje, sizeof(Mensaje), "El usuario %s fue liberado de su sanciуn.", Jugador);
        SpawnPlayer(params[0]);
    }
}
else return SendClientMessage(playerid, Color_NaranjaOscuro, "Uso correcto: /quitarsancion [ID]");

//o asн:

if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, Color_NaranjaOscuro, "Uso correcto: /quitarsancion [ID]");
Reply
#4

Quote:
Originally Posted by Parka
Посмотреть сообщение
es porque no sabes usar sscanf, en vez de "if(!sscanf(params, "u", params[0]))" cambialo por "if(sscanf(params, "u", params[0]))" y debe repararse.
Otacon me enseсo a utilizar sscanf e.e

EDIT: Asн esta bien echo?
pawn Код:
CMD:quitarsancion(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 4) return SendClientMessage(playerid, Color_NaranjaOscuro, "No eres administrador");
    {
        if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, Color_NaranjaOscuro, "Uso correcto: /quitarsancion [ID]");
        {
            if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, Color_NaranjaOscuro, "No ese usuario no estб conectado");
            {
                new Mensaje[64], Jugador[MAX_PLAYER_NAME];
                GetPlayerName(playerid, Jugador, MAX_PLAYER_NAME);
                format(Mensaje, sizeof(Mensaje), "El usuario %s fue liberado de su sanciуn.", Jugador);
                SpawnPlayer(params[0]);
            }
        }
    }
    return 1;
}
Reply
#5

pawn Код:
CMD:quitarsancion(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 4) return SendClientMessage(playerid, Color_NaranjaOscuro, "No eres administrador");
    {
        if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, Color_NaranjaOscuro, "Uso correcto:    /quitarsancion [ID]");
            if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, Color_NaranjaOscuro, "No ese usuario no estб conectado");
            {
                new Mensaje[64], Jugador[MAX_PLAYER_NAME];
                GetPlayerName(playerid, Jugador, MAX_PLAYER_NAME);
                format(Mensaje, sizeof(Mensaje), "El usuario %s fue liberado de su sanciуn.", Jugador);
                SpawnPlayer(params[0]);
        }
    }
    return 1;
}
No abras llave en "sscanf" si lo vas a utilizar sin el signo de admiraciуn...[!]
Reply
#6

Quote:
Originally Posted by Juance
Посмотреть сообщение
pawn Код:
CMD:quitarsancion(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 4) return SendClientMessage(playerid, Color_NaranjaOscuro, "No eres administrador");
    {
        if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, Color_NaranjaOscuro, "Uso correcto:    /quitarsancion [ID]");
            if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, Color_NaranjaOscuro, "No ese usuario no estб conectado");
            {
                new Mensaje[64], Jugador[MAX_PLAYER_NAME];
                GetPlayerName(playerid, Jugador, MAX_PLAYER_NAME);
                format(Mensaje, sizeof(Mensaje), "El usuario %s fue liberado de su sanciуn.", Jugador);
                SpawnPlayer(params[0]);
        }
    }
    return 1;
}
No abras llave en "sscanf" si lo vas a utilizar sin el signo de admiraciуn...[!]
no se abre es cuando es 1 sola la funciуn a retornar en este caso, no tiene que ver con el comparador
Reply
#7

!ї!ї!ї!ї!QUE?!?!?!?!?!?!.

No se te entendiу nada. El [!] significa si no me equivoco que el sscanf fue bien usado, y si no lo es, retorna a un mensaje "else return" . En este caso estamos indicando que si el sscanf no se usу bien, que no deje ejecutar la funciуn y le envнe un mensaje de cуmo tiene que usar el comando.

Siempre y cuando no uses el [!] no hace falta abrir una llave en sscanf.
Reply
#8

Quote:
Originally Posted by xTexTx
Посмотреть сообщение
Otacon me enseсo a utilizar sscanf e.e

EDIT: Asн esta bien echo?
pawn Код:
CMD:quitarsancion(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 4) return SendClientMessage(playerid, Color_NaranjaOscuro, "No eres administrador");
    {
    if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, Color_NaranjaOscuro, "Uso correcto: /quitarsancion [ID]");
        {
            if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, Color_NaranjaOscuro, "No ese usuario no estб conectado");
            {
                new Mensaje[64], Jugador[MAX_PLAYER_NAME];
                GetPlayerName(playerid, Jugador, MAX_PLAYER_NAME);
                format(Mensaje, sizeof(Mensaje), "El usuario %s fue liberado de su sanciуn.", Jugador);
                SpawnPlayer(params[0]);
            }
        }
    }
    return 1;
}
Al decir que OTACON te enseсo y preguntar una duda sobre dicho tema estas daсando la integridad de dicho scripter, en mi opiniуn OTACON quizб te aclaro una que otra duda si no te fueses enseсado para que sirve '!' y como se usa eso en sscanf.

aqui vamos cuando hacemos una sentancia normalmente un scripter con conocimientos previos sabes que si es de este modo:


pawn Код:
#include a_samp

new bool:MyBoleanaVariable=false;

public OnPlayerConnect(playerid){
    if(MyBoleanaVariable){//aqui estamos diciendo que si recae en "true" o en un numero diferente de cero se da la funcion
   
    }else if(!MyBoleanaVariable){//aqui estamos diciendo que se recae en "false" o en cero se da la funcion.
   
    }
    return 1;
}

sscanf retornar a CERO = hizo bien el comando.
sscanf retornar a DIFERENTE DE CERO= fallo el comando.

sscanf al colocarlo de este modo, if(!sscanf(...)), le estas diciendo que si retorna a '0' se de lo que esta dentro de las llaves, creo que con esta informacion es suficiente para que entiendes tu error.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)