[Ajuda] Dъvida sscanf
#1

Seguinte, vi um tutorial aqui no fуrum explicando sobre o sscanf . Entгo eu fui na pбgina do plugin aqui no fуrum para olhar as definiзхes dele.

No fуrum de explicaзгo estб escrito assim :
Код:
i ou d - Integer
Sвo utilizados para numeros INTEIROS, exemplo: 1, 2, 18791...
E um comando assim :
PHP код:
CMD:pm(playeridparams[])
{
    new 
playerdestinoplayerNome[MAX_PLAYER_NAME], pdestinoNome[MAX_PLAYER_NAME], mensagem[128], string[128];
    if(
sscanf(params"ds"playerdestinomensagem)) return SendClientMessage(playerid, -1"Use /pm [ID] [mensagem].");
   
    if(
playerdestino == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1"ID invбlida ou inexistente.");
    
    if(!
strlen(mensagem)) return SendClientMessage(playerid, -1"Digite uma mensagem.");
    
GetPlayerName(playeridplayerNomeMAX_PLAYER_NAME);
    
GetPlayerName(playerdestinopdestinoNomeMAX_PLAYER_NAME);
    
    
format(stringsizeof(string), "* PM de %s (%d): %s"playerNomeplayeridmensagem);
    
SendClientMessage(playerdestino0xFFFF80AAstring);
    
format(stringsizeof(string), "* PM para %s(%d): %s"pdestinoNomeplayerdestinomensagem);
    
SendClientMessage(playerid0x6F6F00AAstring);    
    return 
1;

Код:
if(sscanf(params, "ds", playerdestino, mensagem))
O "d" seria o id do usuario , mas olhe .faria alguma diferenзa se eu trocasse o "d" por "u" ? ficaria assim:
Код:
if(sscanf(params, "us", playerdestino, mensagem))
Tуpico sscanf:
Код:
U	U(any format number)	Optional user (bot/player)
Valeu, abraзos :P
Reply
#2

u User name/id (bots and players)
ex:
Quote:

******, 0

d Integer
ex:
Quote:

1, 42, -10

@edit: Se precisar de mais explicaзхes й sу pedir.
Reply
#3

Eu prefiro sempre colocar no ID do Player com "i" pois quando coloco com "u" da problemas :S:
pawn Код:
if(sscanf(params, "i", PlayerID))
Pois entгo te recomendo deixar com "i"
Reply
#4

Quote:
Originally Posted by Schocc
Посмотреть сообщение
u User name/id (bots and players)
ex:


d Integer
ex:


@edit: Se precisar de mais explicaзхes й sу pedir.
Eu sei fera, mas iria fazer alguma diferenзa em trocar d por u nesse comando ?
Reply
#5

O "u", "q" e "r" especificadores de busca de um usuбrio por nome ou ID. O mйtodo desta pesquisa mudou nas ъltimas versхes do "sscanf".


Adicionalmente "U", "Q", e "R" usado para levar um nome ou ID como seu valor padrгo - este jб foi alterado para apenas um nъmero, e sscanf nгo vai tentar determinar se este nъmero estб online:

Anterior:
pawn Код:
testar()
{
    sscanf(params, "U(******)", id);
    if (id == INVALID_PLAYER_ID)
    {
        // ****** ou o jogador entrou nгo estб conectado.
    }
   return 0;
}
Novo mйtodo:
pawn Код:
testar()
{
    sscanf(params, "U(-1)", id);
    if (id == -1)
    {
        // Nenhum jogador foi inscrito.
    }
    else if (id == INVALID_PLAYER_ID)
        // Jogador entrou nгo estб conectado.
    }
    return 0;
}

Especialmente para players usamos o u, que ele vai fazer uma verificaзгo de players online, muitos jб devem ter percebido outros nгo ao usar o especificador u


Resumindo, use os especificadores i e d para valores inteiros e nгo para id de Players.
E claro use o especificador u, para id e nomes de Players.

Espero ter ajudado
Reply
#6

Quote:
Originally Posted by Schocc
Посмотреть сообщение
O "u", "q" e "r" especificadores de busca de um usuбrio por nome ou ID. O mйtodo desta pesquisa mudou nas ъltimas versхes do "sscanf".


Adicionalmente "U", "Q", e "R" usado para levar um nome ou ID como seu valor padrгo - este jб foi alterado para apenas um nъmero, e sscanf nгo vai tentar determinar se este nъmero estб online:

Anterior:
pawn Код:
testar()
{
    sscanf(params, "U(******)", id);
    if (id == INVALID_PLAYER_ID)
    {
        // ****** ou o jogador entrou nгo estб conectado.
    }
   return 0;
}
Novo mйtodo:
pawn Код:
testar()
{
    sscanf(params, "U(-1)", id);
    if (id == -1)
    {
        // Nenhum jogador foi inscrito.
    }
    else if (id == INVALID_PLAYER_ID)
        // Jogador entrou nгo estб conectado.
    }
    return 0;
}

Especialmente para players usamos o u, que ele vai fazer uma verificaзгo de players online, muitos jб devem ter percebido outros nгo ao usar o especificador u


Resumindo, use os especificadores i e d para valores inteiros e nгo para id de Players.
E claro use o especificador u, para id e nomes de Players.

Espero ter ajudado
Muito obrigado mano. rs, jб atй consegui criar meu 1° comando usando sscanf . Depois te dou +REP , pq tem q esperar 24hrs . Obrigado de verdade :P
Reply
#7

Quote:
Originally Posted by iDreak
Посмотреть сообщение
Eu prefiro sempre colocar no ID do Player com "i" pois quando coloco com "u" da problemas :S:
pawn Код:
if(sscanf(params, "i", PlayerID))
Pois entгo te recomendo deixar com "i"
cara n tenho certeza se com o 'i' da mas sei que com o parametro 'u' se vc um comando para ir no player vc tanto pode fazer /ir id como /ir parte do nick que da na mesma u.u
Reply
#8

Quote:
Originally Posted by iDreak
Посмотреть сообщение
Eu prefiro sempre colocar no ID do Player com "i" pois quando coloco com "u" da problemas :S:
pawn Код:
if(sscanf(params, "i", PlayerID))
Pois entгo te recomendo deixar com "i"
De maneira alguma й recomendado usar i para Players/ID, pois jб existe o especificador U para players, leiam o tуpico do sscanf eu nгo tenho muito tempo para explicar.


Como jб disse й recomendado o uso dos especificadores i e d, em casos que o valor de saнda nгo seja passado para Players/ID.

bla bla bla bla bla heuheu eu to sem PC se nгo eu escrevia um texto


@edit: Os problemas acontecem porque algo esta incorreto no cуdigo, mas tudo tem uma soluзгo para cada problema.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)