[Ajuda] sscanf
#1

Bem, eu nгo conheзo nada de sscanf, entгo venho pedir ajuda de vocкs.
Eu quero fazer uma comparaзгo de strings, por exemplo:
PHP код:
CMD:escolher(playeridparams[])
/*No cmd /escolher eu quero checar se o player digitou algumas palavras chave, como "/escolher spawn", "/escolher emprego", etc. Tem como fazer pelo sscanf ou й sу pelo strcmp?*/ 
______
Reply
#2

Quote:
Originally Posted by GustavoVader
Посмотреть сообщение
Bem, eu nгo conheзo nada de sscanf, entгo venho pedir ajuda de vocкs.
Eu quero fazer uma comparaзгo de strings, por exemplo:
PHP код:
CMD:escolher(playeridparams[])
/*No cmd /escolher eu quero checar se o player digitou algumas palavras chave, como "/escolher spawn", "/escolher emprego", etc. Tem como fazer pelo sscanf ou й sу pelo strcmp?*/ 
______
Acho que й assim, pelo oq eu entendi

pawn Код:
CMD:escolher(playerid, params[])
{

     if (isnull(params))
    {
        SendClientMessage(playerid, -1, "USE: /escolher [opзгo]");
        SendClientMessage(playerid, COLOR_GREEN, "Opзхes: {FFFFFF}spawn, emprego");
        return 1;
    }

    if (!strcmp(params, "spawn", true))
    {
          // FUNЗХES AQUI
    }

    if (!strcmp(params, "emprego", true))
   {
               // FUNЗХES AQUI
    }
    return 1;
}
OBS: sу vocк indentar o cуdigo, caso precise.

REP + se te ajudei.
Reply
#3

Ahh sim, pelo strcmp eu sei fazer, porйm queria saber se pelo sscanf dб. Queria otimizar meu cуdigo, jб que o sscanf й mais rбpido. Enfim, obrigado.
Reply
#4

Quote:
Originally Posted by GustavoVader
Посмотреть сообщение
Ahh sim, pelo strcmp eu sei fazer, porйm queria saber se pelo sscanf dб. Queria otimizar meu cуdigo, jб que o sscanf й mais rбpido. Enfim, obrigado.
Cara strcmp й comparador de strings, o comando estб em ZCMD e usa sim sscanf.
Reply
#5

Quote:
Originally Posted by Derritee1001
Посмотреть сообщение
Acho que й assim, pelo oq eu entendi

pawn Код:
CMD:escolher(playerid, params[])
{

     if (isnull(params))
    {
        SendClientMessage(playerid, -1, "USE: /escolher [opзгo]");
        SendClientMessage(playerid, COLOR_GREEN, "Opзхes: {FFFFFF}spawn, emprego");
        return 1;
    }

    if (!strcmp(params, "spawn", true))
    {
          // FUNЗХES AQUI
    }

    if (!strcmp(params, "emprego", true))
   {
               // FUNЗХES AQUI
    }
    return 1;
}
OBS: sу vocк indentar o cуdigo, caso precise.

REP + se te ajudei.
Verificou se o parвmetro й nulo, sendo que o cara nгo pediu isso e ainda pediu REP... "Hello World"

use:
Код:
if(sscanf(params, "ESPECIFICADOR", VARIAVEL)) return SendClientMessage(playerid, -1, "Parвmetro correto.");
Os especificadores sгo os seguintes:
Код:
Specifier(s)			Name				Example values
	i, d			Integer				1, 42, -10
	c			Character			a, o, *
	l			Logical				true, false
	b			Binary				01001, 0b1100
	h, x			Hex				1A, 0x23
	o			Octal				045 12
	n			Number				42, 0b010, 0xAC, 045
	f			Float				0.7, -99.5
	g			IEEE Float			0.7, -99.5, INFINITY, -INFINITY, NAN, NAN_E
	u			User name/id (bots and players)	******, 0
	q			Bot name/id			ShopBot, 27
	r			Player name/id			******, 42
Reply
#6

Nгo hб necessidade de usar sscanf para esse caso, o cуdigo do Derritee1001 estб correto. E nгo se preocupe com otimizaзгo, pois o isnull й a melhor opзгo.
Reply
#7

Quote:
Originally Posted by F1N4L
Посмотреть сообщение
use:
Код:
if(sscanf(params, "ESPECIFICADOR", VARIAVEL)) return SendClientMessage(playerid, -1, "Parвmetro correto.");
Os especificadores sгo os seguintes:
Код:
Specifier(s)			Name				Example values
	i, d			Integer				1, 42, -10
	c			Character			a, o, *
	l			Logical				true, false
	b			Binary				01001, 0b1100
	h, x			Hex				1A, 0x23
	o			Octal				045 12
	n			Number				42, 0b010, 0xAC, 045
	f			Float				0.7, -99.5
	g			IEEE Float			0.7, -99.5, INFINITY, -INFINITY, NAN, NAN_E
	u			User name/id (bots and players)	******, 0
	q			Bot name/id			ShopBot, 27
	r			Player name/id			******, 42
"VARIAVEL" que vocк diz seria uma variбvel "string" para armazenar o resultado obtido, certo?

Quote:
Originally Posted by Artista
Посмотреть сообщение
Nгo hб necessidade de usar sscanf para esse caso, o cуdigo do Derritee1001 estб correto. E nгo se preocupe com otimizaзгo, pois o isnull й a melhor opзгo.
Eu tenho um cуdigo muito semelhante ao dele, usando strcmp. Й que eu li em alguns tуpicos de turoriais que sscanf й muito mais otimizado e decidi atualizar meu cуdigo, porйm eu empaquei nesse comando.
Mas jб consegui resolver.

Obrigado pelas respostas ^^

___________
Reply
#8

VARIAVEL = string / inteiro
Pode ser tanto um quanto outro.
Ex.:

PHP код:
CMD:escolher(playeridparams[])
{
    new 
Escolheu// inteiro
    
new str[20]; // string
    
    
if(sscanf(params"i"Escolheu)) return SendClientMessage(playerid, -1"/escolher [nъmero]");
    
    
format(strsizeof str"Vocк escolheu o nъmero %i"Escolheu);
    
SendClientMessage(playerid, -1str);
    
    return 
1;
}
CMD:escolher(playeridparams[])
{
    new 
Escolheu[10]; // string
    
    
if(sscanf(params"s[10]"Escolheu)) return SendClientMessage(playerid, -1"/escolher [palavra]");
    
    if(
strcmp(Escolheu"teste"true) == 0) return SendClientMessage(playerid, -1"Vocк escolheu a palavra 'teste'.");
    
    return 
1;

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)