SA-MP Forums Archive
[Ajuda] Ajuda com sscanf - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Ajuda com sscanf (/showthread.php?tid=366836)



dude fuck off - FireCat - 07.08.2012

Tipo, quando faзo
pawn Код:
sscanf(gQuery,"e<p<|>{s[25]s[41]}s[16]iii>",PInfo[playerid]);
printf("IP: %s Money: %i Score: %i Level: %i",PInfo[playerid][pIP],PInfo[playerid][Money],PInfo[playerid][Score],PInfo[playerid][Level]);
Faz print de tudo 0 e IP й null.

Quando faзo
pawn Код:
sscanf(gQuery,"e<p<|>s[25]s[41]s[16]iii>",PInfo[playerid]);
printf("IP: %s Money: %i Score: %i Level: %i",PInfo[playerid][pIP],PInfo[playerid][Money],PInfo[playerid][Score],PInfo[playerid][Level]);
Faz print de tudo como deve de ser...
Qual й o problema?


Re: Ajuda com sscanf - paulor - 07.08.2012

pawn Код:
sscanf(gQuery,"e<p<|>{s[25]s[41]}s[16]iii>",PInfo[playerid]);
//Aki vc ta ignorando duas Str.

sscanf(gQuery,"e<p<|>s[25]s[41]s[16]iii>",PInfo[playerid]);
//Aki nгo, aki ele vai preenche-las
Uma coisa, 'PInfo[playerid]' й esse msm o Enum ? nгo seria: 'PInfo' ?


Re: Ajuda com sscanf - FireCat - 07.08.2012

Quote:
Originally Posted by paulor
Посмотреть сообщение
pawn Код:
sscanf(gQuery,"e<p<|>{s[25]s[41]}s[16]iii>",PInfo[playerid]);
//Aki vc ta ignorando duas Str.

sscanf(gQuery,"e<p<|>s[25]s[41]s[16]iii>",PInfo[playerid]);
//Aki nгo, aki ele vai preenche-las
Uma coisa, 'PInfo[playerid]' й esse msm o Enum ? nгo seria: 'PInfo' ?
Eu quero que nao prencha as 2 primeiras strings.
E й uma enum, mas quero que prencha sу as variaveis do playerid, por isso essa parte ta certa >.<


Re: Ajuda com sscanf - paulor - 07.08.2012

Quote:
Originally Posted by FireCat
Посмотреть сообщение
Eu quero que nao prencha as 2 primeiras strings.
E й uma enum, mas quero que prencha sу as variaveis do playerid, por isso essa parte ta certa >.<
Entгo a 1 estб correta!


Re: Ajuda com sscanf - FireCat - 07.08.2012

Quote:
Originally Posted by paulor
Посмотреть сообщение
Entгo a 1 estб correta!
Mas nгo estб a fazer o load correcto!
Nem nas prints!


Re: Ajuda com sscanf - Abravanel - 07.08.2012

Tente.
pawn Код:
sscanf(gQuery,"e<p<|>{s[" #MAX_PLAYER_NAME "]s[41]}s[16]iii>",PInfo[playerid]);



Re: Ajuda com sscanf - paulor - 08.08.2012

pawn Код:
new Str[25], String[41];
strcat(Str, PInfo[0][ITEM_0]); strcat(String, PInfo[0][ITEM_1]); //Altere com os nome dos Itens.
sscaf(gQuery,"e<p<|>s[25]s[41]s[16]iii>",PInfo[0]);
strmid(PInfo[0][ITEM_0], Str, 0, 25); strmid(PInfo[0][ITEM_1], String, 0, 41); //Altere com os nome dos Itens.
printf("IP: %s  Money: %i  Score: %i   Level: %i",PInfo[0][pIP],PInfo[0][Money],PInfo[0][Score],PInfo[0][Level]);
Ъnica maneira funcional que encontrei...


Re: Ajuda com sscanf - ipsBruno - 08.08.2012

As strings estгo logo no inicio? Entгo basta passar a string com o caractere inicial acima do ip, й um bom truque de acesso em arrays/strings

Faзa:
sscanf(string ,"e<p<|>{s[1]s[1]}dd>", enumVariable[c]);

A parte em azul vai pular as duas primeiras strings e a segunda parte em vermelho vai aplicar os valores inteiros. A parte verde й a partir de que valor deve ser colocado

Exemplo:
pawn Код:
// declaraзгo  
     
new quesry [] = "127.0.0.1|Bruno|10|10";

enum firefeio {
    a[24], // vamos pular estб parte
    b[24], // vamos pular estб parte
    c , // colocar um valor
    d
}

new brunocat[firefeio] ;



// fazer a 'mбgica'
    sscanf(quesry ,"e<p<|>{s[1]s[1]}dd>", brunocat[c]);
   
// imprimir os dados
// ||10|10                                        

    printf(
        "%s|%s|%d|%d",
        brunocat[a],
        brunocat[b],
        brunocat[c],
        brunocat[d]
    );
Se der "Overflow" basta aumentar o tamanho de s[1]s[1] para o tamanho total das arrays, no meu caso 24

_______

No seu caso ficaria:

sscanf(gQuery,"e<p<|>{s[25]s[41]}s[32]iii>",PInfo[playerid][pIP]);

Assim iria pular as duas strings e aplicar os valores apуs pIP


Re: Ajuda com sscanf - FireCat - 08.08.2012

Quote:
Originally Posted by ipsBruno
Посмотреть сообщение
As strings estгo logo no inicio? Entгo basta passar a string com o caractere inicial acima do ip, й um bom truque de acesso em arrays/strings

Faзa:
sscanf(string ,"e<p<|>{s[1]s[1]}dd>", enumVariable[c]);

A parte em azul vai pular as duas primeiras strings e a segunda parte em vermelho vai aplicar os valores inteiros. A parte verde й a partir de que valor deve ser colocado

Exemplo:
pawn Код:
// declaraзгo  
     
new quesry [] = "127.0.0.1|Bruno|10|10";

enum firefeio {
    a[24], // vamos pular estб parte
    b[24], // vamos pular estб parte
    c , // colocar um valor
    d
}

new brunocat[firefeio] ;



// fazer a 'mбgica'
    sscanf(quesry ,"e<p<|>{s[1]s[1]}dd>", brunocat[c]);
   
// imprimir os dados
// ||10|10                                        

    printf(
        "%s|%s|%d|%d",
        brunocat[a],
        brunocat[b],
        brunocat[c],
        brunocat[d]
    );
Se der "Overflow" basta aumentar o tamanho de s[1]s[1] para o tamanho total das arrays, no meu caso 24

_______

No seu caso ficaria:

sscanf(gQuery,"e<p<|>{s[25]s[41]}s[32]iii>",PInfo[playerid][pIP]);

Assim iria pular as duas strings e aplicar os valores apуs pIP
pfft odeio essas variaveis! xD
Mas tipo, se eu puser PInfo[playerid][pIP] nгo vai fazer load na enum toda
Й por isso que estou a fazer no inicio do sscanf e< (para espicificar que й uma enum)
e depois p<|> para saber o delimiter.
Se fizermos PInfo[playerid][pIP] nгo vai fazer load na enum toda


Re: Ajuda com sscanf - ipsBruno - 08.08.2012

Vocк quer fazer o que afinal? Cortar as duas primeiras strings e as duas primeiras partes da enum? Й aquilo que fiz.