Dъvida sscanf -
SkullFire - 20.10.2013
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(playerid, params[])
{
new playerdestino, playerNome[MAX_PLAYER_NAME], pdestinoNome[MAX_PLAYER_NAME], mensagem[128], string[128];
if(sscanf(params, "ds", playerdestino, mensagem)) 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(playerid, playerNome, MAX_PLAYER_NAME);
GetPlayerName(playerdestino, pdestinoNome, MAX_PLAYER_NAME);
format(string, sizeof(string), "* PM de %s (%d): %s", playerNome, playerid, mensagem);
SendClientMessage(playerdestino, 0xFFFF80AA, string);
format(string, sizeof(string), "* PM para %s(%d): %s", pdestinoNome, playerdestino, mensagem);
SendClientMessage(playerid, 0x6F6F00AA, string);
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
Re: Dъvida sscanf -
Schocc - 20.10.2013
u User name/id (bots and players)
ex:
d Integer
ex:
@
edit: Se precisar de mais explicaзхes й sу pedir.
Re: Dъvida sscanf -
iDreak - 20.10.2013
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"
Re: Dъvida sscanf -
SkullFire - 20.10.2013
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 ?
Re: Dъvida sscanf -
Schocc - 20.10.2013
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
Re: Dъvida sscanf -
SkullFire - 20.10.2013
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
Re: Dъvida sscanf -
PT - 20.10.2013
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
Re: Dъvida sscanf -
Schocc - 20.10.2013
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.