Portal SAMP
[Ajuda] Ajuda com sscanf - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Ajuda com sscanf (/showthread.php?tid=3778)



Ajuda com sscanf - RosaScripter - 14/07/2023

Alguém sabe qual params posso usar para alterar o p,dd e p,ffff do sscanf?

Fiz algumas alteração mas sem sucesso, peguei um sistema da net e to fazendo alterações.

[Imagem: attachment.php?aid=252]

[Imagem: attachment.php?aid=251]


RE: Ajuda com sscanf - White_Blue - 14/07/2023

Para que você quer alterar os especificadores do sscanf? Cada especificador é único, 'f' serve para valores decimais e 'd' para valores inteiros. Vale lembrar que o especificador da vírgula está sendo usado de modo incorreto, essa é a causa do erro no console provavelmente.

Se quer é passar uma vírgula(,) entre os parâmetros você pode fazer da seguinte forma:
Código PHP:
if(sscanf(params"p<,>fff"



RE: Ajuda com sscanf - RosaScripter - 14/07/2023

(14/07/2023 04:11)White_Blue Escreveu: Para que você quer alterar os especificadores do sscanf? Cada especificador é único, 'f' serve para valores decimais e 'd' para valores inteiros. Vale lembrar que o especificador da vírgula está sendo usado de modo incorreto, essa é a causa do erro no console provavelmente.

Se quer é passar uma vírgula(,) entre os parâmetros você pode fazer da seguinte forma:
Código PHP:
if(sscanf(params"p<,>fff"

Na versão mais atual do sscand, o p, foi removido e por esse grande motivo estou mexendo nesse sistema para deixar atualizado e eu poder integrar a minha gamemode.


RE: Ajuda com sscanf - RosaScripter - 17/07/2023

(14/07/2023 01:55)RosaScripter Escreveu: Alguém sabe qual params posso usar para alterar o p,dd e p,ffff do sscanf?

Fiz algumas alteração mas sem sucesso, peguei um sistema da net e to fazendo alterações.

[Imagem: attachment.php?aid=252]

[Imagem: attachment.php?aid=251]

Ainda necessito de ajuda nesse cod, alguém ??? Revivendo pos não tive resposta.


RE: Ajuda com sscanf - k2bi_YT - 17/07/2023

Se for no caso de salvar e carregar as informações de um veículo, você pode usar DOF2 com uma função split, creio que fica bem mais fácil de se usar e entender..
Código PHP:
SalvarVeh(vehicleid)
{
    new 
str[500];
    
format(strsizeof(str), "%d|%d|%f|%f|%f|%f|%d|%d|%d|%d|%s|%s|%d|%d|%d|%d",
    
VehicleCreate[vehicleid],
    
VehicleModel[vehicleid]
    
VehiclePos[vehicleid][0],
    
VehiclePos[vehicleid][1],
    
VehiclePos[vehicleid][2],
    
VehicleColor[vehicleid][0],
    
VehicleColor[vehicleid][1],
    
VehicleInterior[vehicleid],
    
VehicleWorld[vehicleid],
    
VehicleOwner[vehicleid],
    
VehicleNumberPlate[vehicleid],
    
VehicleValue[vehicleid],
    
VehicleLock[vehicleid],
    
VehicleAlarm[vehicleid],
    
VehiclePaintjob[vehicleid]);
    
DOF2_SetString(file"InfoVehicle"str);
    return 
true;
}

CarregarVeh(vehicleid)
{
    new 
file[64], string[16][25];
    
format(filesizeof(file), Pasta_Carro);
    
split(DOF2_GetString(file"InfoVehicle"), string'|');
    
VehicleCreate[vehicleid] = strval(string[0]);
    
VehicleModel[vehicleid] = strval(string[1]);
    
VehiclePos[vehicleid] = floatstr(string[2]);
    
VehiclePos[vehicleid] = floatstr(string[3]);
    
VehiclePos[vehicleid] = floatstr(string[4]);
    
VehicleColor[vehicleid] = strval(string[5]);
    
VehicleColor[vehicleid] = strval(string[6]);
    
VehicleInterior[vehicleid] = strval(string[7]);
    
VehicleWorld[vehicleid].....
    return 
true;
}

stock split(const strsrc[], const strdest[][], delimiter)
{
    new 
ili;
    new 
aNum;
    new 
len;
    while(
<= strlen(strsrc))
    {
        if(
strsrc[i]==delimiter || i==strlen(strsrc))
        {
            
len strmid(strdest[aNum], strsrclii128);
            
strdest[aNum][len] = 0;
            
li i+1;
            
aNum++;
        }
        
i++;
    }
    return 
true;


Obvio que não está 100% correto mas é mais para entender split + DOF2 de carregar/salvar uma info.

Desconsidere caso não seja o esperado..


RE: Ajuda com sscanf - xbruno1000x - 17/07/2023

Dei uma olhada lá no readme e fala sobre essa atualização no especificador p. Segue abaixo o que encontrei:
Citar:The previous version of sscanf had p to change the symbol used to separate tokens. This specifier still exists but it has been formalised to match the array and enum syntax. What was previously:

sscanf("1,2,3", "p,iii", var0, var1, var2);

Is now:

sscanf("1,2,3", "p<,>iii", var0, var1, var2);


Lá no Readme fala sobre todos especificadores, inclusive o p:
https://github.com/Y-Less/sscanf/blob/master/README.md

Issue similar ao seu:
https://github.com/oscar-broman/PAWN-Boilerplate/issues/32


RE: Ajuda com sscanf - White_Blue - 17/07/2023

(14/07/2023 11:05)RosaScripter Escreveu:
(14/07/2023 04:11)White_Blue Escreveu: Para que você quer alterar os especificadores do sscanf? Cada especificador é único, 'f' serve para valores decimais e 'd' para valores inteiros. Vale lembrar que o especificador da vírgula está sendo usado de modo incorreto, essa é a causa do erro no console provavelmente.

Se quer é passar uma vírgula(,) entre os parâmetros você pode fazer da seguinte forma:
Código PHP:
if(sscanf(params"p<,>fff"

Na versão mais atual do sscand, o p, foi removido e por esse grande motivo estou mexendo nesse sistema para deixar atualizado e eu poder integrar a minha gamemode.

O especificador "p" não foi removido, apenas foi reformulado, como o Bruno disse acima.


RE: Ajuda com sscanf - RosaScripter - 18/07/2023

(17/07/2023 22:19)xbruno1000x Escreveu: Dei uma olhada lá no readme e fala sobre essa atualização no especificador p. Segue abaixo o que encontrei:
Citar:The previous version of sscanf had p to change the symbol used to separate tokens. This specifier still exists but it has been formalised to match the array and enum syntax. What was previously:

sscanf("1,2,3", "p,iii", var0, var1, var2);

Is now:

sscanf("1,2,3", "p<,>iii", var0, var1, var2);


Lá no Readme fala sobre todos especificadores, inclusive o p:
https://github.com/Y-Less/sscanf/blob/master/README.md

Issue similar ao seu:
https://github.com/oscar-broman/PAWN-Boilerplate/issues/32

Dei uma olhada, e vi que se talvez se eu mude os f para F funcione.


RE: Ajuda com sscanf - RosaScripter - 18/07/2023

(14/07/2023 01:55)RosaScripter Escreveu: Alguém sabe qual params posso usar para alterar o p,dd e p,ffff do sscanf?

Fiz algumas alteração mas sem sucesso, peguei um sistema da net e to fazendo alterações.

[Imagem: attachment.php?aid=252]

[Imagem: attachment.php?aid=251]

DÃO ESSE TOPICO COMO RESOLVIDO.


RE: Ajuda com sscanf - Device-Black - 18/07/2023

(18/07/2023 12:16)RosaScripter Escreveu:
(17/07/2023 22:19)xbruno1000x Escreveu: Dei uma olhada lá no readme e fala sobre essa atualização no especificador p. Segue abaixo o que encontrei:
Citar:The previous version of sscanf had p to change the symbol used to separate tokens. This specifier still exists but it has been formalised to match the array and enum syntax. What was previously:

sscanf("1,2,3", "p,iii", var0, var1, var2);

Is now:

sscanf("1,2,3", "p<,>iii", var0, var1, var2);


Lá no Readme fala sobre todos especificadores, inclusive o p:
https://github.com/Y-Less/sscanf/blob/master/README.md

Issue similar ao seu:
https://github.com/oscar-broman/PAWN-Boilerplate/issues/32

Dei uma olhada, e vi que se talvez se eu mude os f para F funcione.

Especificadores maisculos servem para inserir valores padrões caso não exista um valor para ele

Código PHP:
sscanf("2:texto""p<:>ds[5]F(5.0)"inttxtdec); 
O código acima terá como resultado: int = 2, txt = texto, dec = 5.0
dec recebe 5.0 e sscanf retorna 0, indicando que não houve falha, pois mesmo na ausência de parametros, ja havia um valor padronizado