[Ajuda] SSCANF
#1

Olб galera, gostaria de pedir uma ajuda e sim tambйm um dъvida, estou tendo problemas no meu servidor que alguns comandos estгo dando warning no server_log, entгo gostaria de saber se essas warnings pode afetar o servidor pois ele estб desligando sozinho sem registrar nenhum erro no server_log somente vбrias warnings da qual citada.

WARNING
pawn Код:
sscanf warning: Strings without a length are deprecated, please add a destination size.
E gostaria de saber o porque dessa warning.

Um dos Comando que faz dar a warning:

pawn Код:
CMD:cnn(playerid, params[])
    {
        new Texto[128];
        if(sscanf(params, "s", Texto))
        {
            SendClientMessage(playerid, COR_VERDEFORTE, "Uso correto: /cnn [menssagem]");
        }
        else
        {
            if(Logado[playerid])
            {
                if(PlayerInfo[playerid][Admin] >= 1)
                {
                    if(TempoTela[playerid] == 0)
                    {
                        GetPlayerName(playerid, playername, sizeof(playername));
                        format(str, sizeof(str), "~h~~g~%s: ~y~%s", playername, Texto);
                        GameTextForAll(str, 6000, 3);
                        TempoTela[playerid] = 5;
                        format(str, sizeof(str), "[Comando]: %s usou /cnn para digitar: %s", playername, Texto);
                        Log(str);
                    }
                    else
                    {
                        format(str, sizeof(str), "* Aguarde %d segundos para enviar uma menssagem.", TempoTela[playerid]);
                        SendClientMessage(playerid, COR_AZULCLARO, str);
                    }
                }
                else
                {
                    SendClientMessage(playerid, COR_AZULCLARO, "Vocк nгo tem permissгo para usar este comando!");
                }
            }
            else
            {
                SendClientMessage(playerid, COR_AZULCLARO, "Vocк tem que estar logado para usar este comando!");
            }
        }
        return 1;
    }
Agradeзo а quem puder me ajudar ! +repu tambйm (:
Reply
#2

pawn Код:
if(sscanf(params, "s[128]", Texto))
Troque por isto
Reply
#3

pawn Код:
CMD:cnn(playerid, params[])
{
    new Texto[128];
    if(sscanf(params, "s[128]", Texto))
    {
        SendClientMessage(playerid, COR_VERDEFORTE, "Uso correto: /cnn [menssagem]");
    }
    else
    {
        if(Logado[playerid])
        {
            if(PlayerInfo[playerid][Admin] >= 1)
            {
                if(TempoTela[playerid] == 0)
                {
                    GetPlayerName(playerid, playername, sizeof(playername));
                    format(str, sizeof(str), "~h~~g~%s: ~y~%s", playername, Texto);
                    GameTextForAll(str, 6000, 3);
                    TempoTela[playerid] = 5;
                    format(str, sizeof(str), "[Comando]: %s usou /cnn para digitar: %s", playername, Texto);
                    Log(str);
                }
                else
                {
                    format(str, sizeof(str), "* Aguarde %d segundos para enviar uma menssagem.", TempoTela[playerid]);
                    SendClientMessage(playerid, COR_AZULCLARO, str);
                }
            }
            else
            {
                SendClientMessage(playerid, COR_AZULCLARO, "Vocк nгo tem permissгo para usar este comando!");
            }
        }
        else
        {
            SendClientMessage(playerid, COR_AZULCLARO, "Vocк tem que estar logado para usar este comando!");
        }
    }
    return 1;
}
Por que esse erro ?

Pois voce nao definiu no sscanf o tamanho da string somente no " Texto[128]" Sempre que fazer uma string defina no sscanf tambem

exemplo:

pawn Код:
new Chat[128];
if(sscanf(params, "s[128]", Chat)) return SendClientMessage(playerid, -1, " Teste ");
Espero ter Ajudado
Reply
#4

Bom e quando eu usar uma variavel que esteja global, por exemplo. Nome do player mais esse texto.
Por exemplo:

pawn Код:
new Texto[128];
if(sscanf(params, "ss[128]", Texto, giveplayername)) return SendClientMessage(playerid, -1, " Teste ");
Sendo que a variavel giveplayername estб setada como global e com cйlulas MAX_PLAYER_NAME.
Reply
#5

Que tamanho de comando O_O.
Nгo tem necessidade de usar sscanf para um parвmetro sу.
pawn Код:
CMD:cnn(playerid, params[])
{
    if(isnull(params)) return SendClientMessage(playerid, -1, "Use: /Cnn [Texto]");
    if(Logado[playerid] < 1) return SendClientMessage(playerid, COR_AZULCLARO, "Vocк tem que estar logado para usar este comando!");
    if(PlayerInfo[playerid][Admin] < 1) return SendClientMessage(playerid, COR_AZULCLARO, "Vocк nгo tem permissгo para usar este comando!");
    if(TempoTela[playerid] != 0) return format(str, sizeof(str), "* Aguarde %d segundos para enviar uma menssagem.", TempoTela[playerid]), SendClientMessage(playerid, COR_AZULCLARO, str);
    GetPlayerName(playerid, playername, sizeof(playername));
    format(str, sizeof(str), "~h~~g~%s: ~y~%s", playername, Texto);
    GameTextForAll(str, 6000, 3);
    TempoTela[playerid] = 5;
    format(str, sizeof(str), "[Comando]: %s usou /cnn para digitar: %s", playername, Texto);
    Log(str);
    return 1;
}
Reply
#6

Quote:
Originally Posted by humildadeforever
Посмотреть сообщение
Que tamanho de comando O_O.
Nгo tem necessidade de usar sscanf para um parвmetro sу.
pawn Код:
CMD:cnn(playerid, params[])
{
    if(isnull(params)) return SendClientMessage(playerid, -1, "Use: /Cnn [Texto]");
    if(Logado[playerid] < 1) return SendClientMessage(playerid, COR_AZULCLARO, "Vocк tem que estar logado para usar este comando!");
    if(PlayerInfo[playerid][Admin] < 1) return SendClientMessage(playerid, COR_AZULCLARO, "Vocк nгo tem permissгo para usar este comando!");
    if(TempoTela[playerid] != 0) return format(str, sizeof(str), "* Aguarde %d segundos para enviar uma menssagem.", TempoTela[playerid]), SendClientMessage(playerid, COR_AZULCLARO, str);
    GetPlayerName(playerid, playername, sizeof(playername));
    format(str, sizeof(str), "~h~~g~%s: ~y~%s", playername, Texto);
    GameTextForAll(str, 6000, 3);
    TempoTela[playerid] = 5;
    format(str, sizeof(str), "[Comando]: %s usou /cnn para digitar: %s", playername, Texto);
    Log(str);
    return 1;
}
Sei disso, mais acho que vocк nгo entendeu as questхes...
Reply
#7

Quote:
Originally Posted by WeenSoares_
Посмотреть сообщение
Sei disso, mais acho que vocк nгo entendeu as questхes...
Vocк estб usando sscanf2 nй? Nгo uso ele, nгo gosto :S
Mas deve ser
pawn Код:
if(sscanf(params, "us[128]", giveplayerid, Texto)) return SendClientMessage(playerid, -1, "Use: /Mensagem [ID] [Mensagem]");
Reply
#8

Quote:
Originally Posted by WeenSoares_
Посмотреть сообщение
Sei disso, mais acho que vocк nгo entendeu as questхes...
Troque o MAX_PLAYER_NAME pra 24, que й o maximo de characteres in-game,e ai defina 24 no sscanf, o sscanf ele tem isto, de definir a variбvel e ter que colocar a lenght dela na funзгo, exemplo:

pawn Код:
new String[128];
if(sscanf(params, "s[128]", String)) ....
Hб de ser definido, caso contrбrio causarб warn.
Reply
#9

Quote:
Originally Posted by .FuneraL.
Посмотреть сообщение
Troque o MAX_PLAYER_NAME pra 24, que й o maximo de characteres in-game,e ai defina 24 no sscanf, o sscanf ele tem isto, de definir a variбvel e ter que colocar a lenght dela na funзгo, exemplo:

pawn Код:
new String[128];
if(sscanf(params, "s[128]", String)) ....
Hб de ser definido, caso contrбrio causarб warn.
sу o sscanf2, o outro nгo tem essa frescura :P
Reply
#10

HumildadeForeve entao me da um conselho

sscanf2 ou sscanf ?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)