SA-MP Forums Archive
[Ajuda] undefined symbol "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] undefined symbol "sscanf" (/showthread.php?tid=357640)



undefined symbol "sscanf" - R3S1D3NT1 - 07.07.2012

bem Galera la estava eu indo criar um Code pronto !! terminei na exata hora que vou copilar tchanam
da 5 Erros
1°:error 017: undefined symbol "sscanf"
2°:error 029: invalid expression, assumed zero
3°:error 017: undefined symbol "sscanf"
4°:invalid expression, assumed zero
5°:fatal error 107: too many error messages on one line

Linha dos Erros:
PHP код:
if(sscanf(params"i"Desafia)) return SendClientMessage(playerid, -1"Use: /Desafia [id]");
outro erro:
 
stock sscanf(string[], format[], {Float,_}:...) 
Observaзхes: Estou usando uma strtok que um amigo aki do forum me passou que usando ela nгo preзisar de include usei ir ja testei em outros fs mais nesse ta dando esses erros
Strtok:
PHP код:
stock sscanf(string[], format[], {Float,_}:...)
{
    
#if defined isnull
        
if (isnull(string))
    
#else
        
if (string[0] == || (string[0] == && string[1] == 0))
    
#endif
        
{
            return 
format[0];
        }
    
#pragma tabsize 4
    
new
        
formatPos 0,
        
stringPos 0,
        
paramPos 2,
        
paramCount numargs(),
        
delim ' ';
    while (
string[stringPos] && string[stringPos] <= ' ')
    {
        
stringPos++;
    }
    while (
paramPos paramCount && string[stringPos])
    {
        switch (
format[formatPos++])
        {
            case 
'\0':
            {
                return 
0;
            }
            case 
'i''d':
            {
                new
                    
neg 1,
                    
num 0,
                    
ch string[stringPos];
                if (
ch == '-')
                {
                    
neg = -1;
                    
ch string[++stringPos];
                }
                do
                {
                    
stringPos++;
                    if (
'0' <= ch <= '9')
                    {
                        
num = (num 10) + (ch '0');
                    }
                    else
                    {
                        return -
1;
                    }
                }
                while ((
ch string[stringPos]) > ' ' && ch != delim);
                
setarg(paramPos0num neg);
            }
            case 
'h''x':
            {
                new
                    
num 0,
                    
ch string[stringPos];
                do
                {
                    
stringPos++;
                    switch (
ch)
                    {
                        case 
'x''X':
                        {
                            
num 0;
                            continue;
                        }
                        case 
'0' .. '9':
                        {
                            
num = (num << 4) | (ch '0');
                        }
                        case 
'a' .. 'f':
                        {
                            
num = (num << 4) | (ch - ('a' 10));
                        }
                        case 
'A' .. 'F':
                        {
                            
num = (num << 4) | (ch - ('A' 10));
                        }
                        default:
                        {
                            return -
1;
                        }
                    }
                }
                while ((
ch string[stringPos]) > ' ' && ch != delim);
                
setarg(paramPos0num);
            }
            case 
'c':
            {
                
setarg(paramPos0string[stringPos++]);
            }
            case 
'f':
            {
                new 
changestr[16], changepos 0strpos stringPos;
                while(
changepos 16 && string[strpos] && string[strpos] != delim)
                {
                    
changestr[changepos++] = string[strpos++];
                    }
                
changestr[changepos] = '\0';
                
setarg(paramPos,0,_:floatstr(changestr));
            }
            case 
'p':
            {
                
delim format[formatPos++];
                continue;
            }
            case 
'\'':
            {
                new
                    
end formatPos 1,
                    
ch;
                while ((
ch format[++end]) && ch != '\'') {}
                if (!
ch)
                {
                    return -
1;
                }
                
format[end] = '\0';
                if ((
ch strfind(stringformat[formatPos], falsestringPos)) == -1)
                {
                    if (
format[end 1])
                    {
                        return -
1;
                    }
                    return 
0;
                }
                
format[end] = '\'';
                
stringPos ch + (end formatPos);
                
formatPos end 1;
            }
            case 
'u':
            {
                new
                    
end stringPos 1,
                    
id 0,
                    
bool:num true,
                    
ch;
                while ((
ch string[++end]) && ch != delim)
                {
                    if (
num)
                    {
                        if (
'0' <= ch <= '9')
                        {
                            
id = (id 10) + (ch '0');
                        }
                        else
                        {
                            
num false;
                        }
                    }
                }
                if (
num && IsPlayerConnected(id))
                {
                    
setarg(paramPos0id);
                }
                else
                {
                    
#if !defined foreach
                        #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
                        #define __SSCANF_FOREACH__
                    #endif
                    
string[end] = '\0';
                    
num false;
                    new
                        
name[MAX_PLAYER_NAME];
                    
id end stringPos;
                    foreach (
Playerplayerid)
                    {
                        
GetPlayerName(playeridnamesizeof (name));
                        if (!
strcmp(namestring[stringPos], trueid))
                        {
                            
setarg(paramPos0playerid);
                            
num true;
                            break;
                        }
                    }
                    if (!
num)
                    {
                        
setarg(paramPos0INVALID_PLAYER_ID);
                    }
                    
string[end] = ch;
                    
#if defined __SSCANF_FOREACH__
                        #undef foreach
                        #undef __SSCANF_FOREACH__
                    #endif
                
}
                
stringPos end;
            }
            case 
's''z':
            {
                new
                    
0,
                    
ch;
                if (
format[formatPos])
                {
                    while ((
ch string[stringPos++]) && ch != delim)
                    {
                        
setarg(paramPosi++, ch);
                    }
                    if (!
i)
                    {
                        return -
1;
                    }
                }
                else
                {
                    while ((
ch string[stringPos++]))
                    {
                        
setarg(paramPosi++, ch);
                    }
                }
                
stringPos--;
                
setarg(paramPosi'\0');
            }
            default:
            {
                continue;
            }
        }
        while (
string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
        {
            
stringPos++;
        }
        while (
string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
        {
            
stringPos++;
        }
        
paramPos++;
    }
    do
    {
        if ((
delim format[formatPos++]) > ' ')
        {
            if (
delim == '\'')
            {
                while ((
delim format[formatPos++]) && delim != '\'') {}
            }
            else if (
delim != 'z')
            {
                return 
delim;
            }
        }
    }
    while (
delim ' ');
    return 
0;

+rep pra quem ajuda ae por favor


Re: undefined symbol "sscanf" - fantastic_xD - 07.07.2012

final do gm
PHP код:
stock sscanf(string[], format[], {Float,_}:...)
{
    
#if defined isnull
        
if (isnull(string))
    
#else
        
if (string[0] == || (string[0] == && string[1] == 0))
    
#endif
        
{
            return 
format[0];
        }
    
#pragma tabsize 4
    
new
        
formatPos 0,
        
stringPos 0,
        
paramPos 2,
        
paramCount numargs(),
        
delim ' ';
    while (
string[stringPos] && string[stringPos] <= ' ')
    {
        
stringPos++;
    }
    while (
paramPos paramCount && string[stringPos])
    {
        switch (
format[formatPos++])
        {
            case 
'\0':
            {
                return 
0;
            }
            case 
'i''d':
            {
                new
                    
neg 1,
                    
num 0,
                    
ch string[stringPos];
                if (
ch == '-')
                {
                    
neg = -1;
                    
ch string[++stringPos];
                }
                do
                {
                    
stringPos++;
                    if (
'0' <= ch <= '9')
                    {
                        
num = (num 10) + (ch '0');
                    }
                    else
                    {
                        return -
1;
                    }
                }
                while ((
ch string[stringPos]) > ' ' && ch != delim);
                
setarg(paramPos0num neg);
            }
            case 
'h''x':
            {
                new
                    
num 0,
                    
ch string[stringPos];
                do
                {
                    
stringPos++;
                    switch (
ch)
                    {
                        case 
'x''X':
                        {
                            
num 0;
                            continue;
                        }
                        case 
'0' .. '9':
                        {
                            
num = (num << 4) | (ch '0');
                        }
                        case 
'a' .. 'f':
                        {
                            
num = (num << 4) | (ch - ('a' 10));
                        }
                        case 
'A' .. 'F':
                        {
                            
num = (num << 4) | (ch - ('A' 10));
                        }
                        default:
                        {
                            return -
1;
                        }
                    }
                }
                while ((
ch string[stringPos]) > ' ' && ch != delim);
                
setarg(paramPos0num);
            }
            case 
'c':
            {
                
setarg(paramPos0string[stringPos++]);
            }
            case 
'f':
            {
 
                new 
changestr[16], changepos 0strpos stringPos;     
                while(
changepos 16 && string[strpos] && string[strpos] != delim)
                {
                    
changestr[changepos++] = string[strpos++];
                    } 
                
changestr[changepos] = '\0'
                
setarg(paramPos,0,_:floatstr(changestr)); 
            } 
            case 
'p':
            {
                
delim format[formatPos++];
                continue;
            }
            case 
'\'':
            {
                new
                    
end formatPos 1,
                    
ch;
                while ((
ch format[++end]) && ch != '\'') {}
                if (!
ch)
                {
                    return -
1;
                }
                
format[end] = '\0';
                if ((
ch strfind(stringformat[formatPos], falsestringPos)) == -1)
                {
                    if (
format[end 1])
                    {
                        return -
1;
                    }
                    return 
0;
                }
                
format[end] = '\'';
                
stringPos ch + (end formatPos);
                
formatPos end 1;
            }
            case 
'u':
            {
                new
                    
end stringPos 1,
                    
id 0,
                    
bool:num true,
                    
ch;
                while ((
ch string[++end]) && ch != delim)
                {
                    if (
num)
                    {
                        if (
'0' <= ch <= '9')
                        {
                            
id = (id 10) + (ch '0');
                        }
                        else
                        {
                            
num false;
                        }
                    }
                }
                if (
num && IsPlayerConnected(id))
                {
                    
setarg(paramPos0id);
                }
                else
                {
                    
#if !defined foreach
                        #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
                        #define __SSCANF_FOREACH__
                    #endif
                    
string[end] = '\0';
                    
num false;
                    new
                        
name[MAX_PLAYER_NAME];
                    
id end stringPos;
                    foreach (
Playerplayerid)
                    {
                        
GetPlayerName(playeridnamesizeof (name));
                        if (!
strcmp(namestring[stringPos], trueid))
                        {
                            
setarg(paramPos0playerid);
                            
num true;
                            break;
                        }
                    }
                    if (!
num)
                    {
                        
setarg(paramPos0INVALID_PLAYER_ID);
                    }
                    
string[end] = ch;
                    
#if defined __SSCANF_FOREACH__
                        #undef foreach
                        #undef __SSCANF_FOREACH__
                    #endif
                
}
                
stringPos end;
            }
            case 
's''z':
            {
                new
                    
0,
                    
ch;
                if (
format[formatPos])
                {
                    while ((
ch string[stringPos++]) && ch != delim)
                    {
                        
setarg(paramPosi++, ch);
                    }
                    if (!
i)
                    {
                        return -
1;
                    }
                }
                else
                {
                    while ((
ch string[stringPos++]))
                    {
                        
setarg(paramPosi++, ch);
                    }
                }
                
stringPos--;
                
setarg(paramPosi'\0');
            }
            default:
            {
                continue;
            }
        }
        while (
string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
        {
            
stringPos++;
        }
        while (
string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
        {
            
stringPos++;
        }
        
paramPos++;
    }
    do
    {
        if ((
delim format[formatPos++]) > ' ')
        {
            if (
delim == '\'')
            {
                while ((
delim format[formatPos++]) && delim != '\'') {}
            }
            else if (
delim != 'z')
            {
                return 
delim;
            }
        }
    }
    while (
delim ' ');
    return 
false;




Re: undefined symbol "sscanf" - R3S1D3NT1 - 07.07.2012

Deu o mesmo erro ¬¬


Re: undefined symbol "sscanf" - @Riichard - 07.07.2012

Manda o comando inteiro ¬¬


Re: undefined symbol "sscanf" - F_Cinco - 07.07.2012

Vocк tem a include sscanf? '-'


Re: undefined symbol "sscanf" - Lуs - 07.07.2012

Verifique se vocк instalou correctamenteo plugin/include.

Abraзos.


Re: undefined symbol "sscanf" - .FuneraL. - 07.07.2012

Quote:
Originally Posted by Los
Посмотреть сообщение
Verifique se vocк instalou correctamenteo plugin/include.

Abraзos.
Los, ele usa unicamente a stock sscanf dentro do prуprio script.


Re: undefined symbol "sscanf" - R3S1D3NT1 - 08.07.2012

eu uso uma strtok dentro do script n preзisa de include antigamente dava certo mais agora n sei pq ta errado


Re: undefined symbol "sscanf" - GReeN_WOoD - 08.07.2012

Tente:

Coloque o plugin sscanf na pasta plugins como disse o LУS.
Apуs ter colocado abra o pwn.exe e no canto esquerdo superior tem uma pasta amarela, clique-a e abra seu gamemode.
Compile e reporte abaixo o que deu.


AW: undefined symbol "sscanf" - denis15711 - 08.07.2012

TENTA ASSIM :
pawn Код:
// ================[ SSCANF ]================ //

stock sscanf(string[], format[], {Float,_}:...)
{
    #if defined isnull
        if (isnull(string))
    #else
        if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
    #endif
        {
            return format[0];
        }
    #pragma tabsize 4
    new
        formatPos = 0,
        stringPos = 0,
        paramPos = 2,
        paramCount = numargs(),
        delim = ' ';
    while (string[stringPos] && string[stringPos] <= ' ')
    {
        stringPos++;
    }
    while (paramPos < paramCount && string[stringPos])
    {
        switch (format[formatPos++])
        {
            case '\0':
            {
                return 0;
            }
            case 'i', 'd':
            {
                new
                    neg = 1,
                    num = 0,
                    ch = string[stringPos];
                if (ch == '-')
                {
                    neg = -1;
                    ch = string[++stringPos];
                }
                do
                {
                    stringPos++;
                    if ('0' <= ch <= '9')
                    {
                        num = (num * 10) + (ch - '0');
                    }
                    else
                    {
                        return -1;
                    }
                }
                while ((ch = string[stringPos]) > ' ' && ch != delim);
                setarg(paramPos, 0, num * neg);
            }
            case 'h', 'x':
            {
                new
                    num = 0,
                    ch = string[stringPos];
                do
                {
                    stringPos++;
                    switch (ch)
                    {
                        case 'x', 'X':
                        {
                            num = 0;
                            continue;
                        }
                        case '0' .. '9':
                        {
                            num = (num << 4) | (ch - '0');
                        }
                        case 'a' .. 'f':
                        {
                            num = (num << 4) | (ch - ('a' - 10));
                        }
                        case 'A' .. 'F':
                        {
                            num = (num << 4) | (ch - ('A' - 10));
                        }
                        default:
                        {
                            return -1;
                        }
                    }
                }
                while ((ch = string[stringPos]) > ' ' && ch != delim);
                setarg(paramPos, 0, num);
            }
            case 'c':
            {
                setarg(paramPos, 0, string[stringPos++]);
            }
            case 'f':
            {

                new changestr[16], changepos = 0, strpos = stringPos;
                while(changepos < 16 && string[strpos] && string[strpos] != delim)
                {
                    changestr[changepos++] = string[strpos++];
                    }
                changestr[changepos] = '\0';
                setarg(paramPos,0,_:floatstr(changestr));
            }
            case 'p':
            {
                delim = format[formatPos++];
                continue;
            }
            case '\'':
            {
                new
                    end = formatPos - 1,
                    ch;
                while ((ch = format[++end]) && ch != '\'') {}
                if (!ch)
                {
                    return -1;
                }
                format[end] = '\0';
                if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
                {
                    if (format[end + 1])
                    {
                        return -1;
                    }
                    return 0;
                }
                format[end] = '\'';
                stringPos = ch + (end - formatPos);
                formatPos = end + 1;
            }
            case 'u':
            {
                new
                    end = stringPos - 1,
                    id = 0,
                    bool:num = true,
                    ch;
                while ((ch = string[++end]) && ch != delim)
                {
                    if (num)
                    {
                        if ('0' <= ch <= '9')
                        {
                            id = (id * 10) + (ch - '0');
                        }
                        else
                        {
                            num = false;
                        }
                    }
                }
                if (num && IsPlayerConnected(id))
                {
                    setarg(paramPos, 0, id);
                }
                else
                {
                    #if !defined foreach
                        #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
                        #define __SSCANF_FOREACH__
                    #endif
                    string[end] = '\0';
                    num = false;
                    new
                        name[MAX_PLAYER_NAME];
                    id = end - stringPos;
                    foreach (Player, playerid)
                    {
                        GetPlayerName(playerid, name, sizeof (name));
                        if (!strcmp(name, string[stringPos], true, id))
                        {
                            setarg(paramPos, 0, playerid);
                            num = true;
                            break;
                        }
                    }
                    if (!num)
                    {
                        setarg(paramPos, 0, INVALID_PLAYER_ID);
                    }
                    string[end] = ch;
                    #if defined __SSCANF_FOREACH__
                        #undef foreach
                        #undef __SSCANF_FOREACH__
                    #endif
                }
                stringPos = end;
            }
            case 's', 'z':
            {
                new
                    i = 0,
                    ch;
                if (format[formatPos])
                {
                    while ((ch = string[stringPos++]) && ch != delim)
                    {
                        setarg(paramPos, i++, ch);
                    }
                    if (!i)
                    {
                        return -1;
                    }
                }
                else
                {
                    while ((ch = string[stringPos++]))
                    {
                        setarg(paramPos, i++, ch);
                    }
                }
                stringPos--;
                setarg(paramPos, i, '\0');
            }
            default:
            {
                continue;
            }
        }
        while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
        {
            stringPos++;
        }
        while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
        {
            stringPos++;
        }
        paramPos++;
    }
    do
    {
        if ((delim = format[formatPos++]) > ' ')
        {
            if (delim == '\'')
            {
                while ((delim = format[formatPos++]) && delim != '\'') {}
            }
            else if (delim != 'z')
            {
                return delim;
            }
        }
    }
    while (delim > ' ');
    return 0;
}