sscanf error?
#1

Hello,
i'm making my own gamemode but admin system is not mine but i fully edited it.

i using on top:
Код:
#include <a_samp>
#include <zcmd>
#include <sscanf>

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print("  Filterscript by Tuntun Loaded!");
	print("--------------------------------------\n");
	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}

#else

main()
{
	print("\n----------------------------------");
	print("  Gamemode by Tuntun Loaded!");
	print("----------------------------------\n");
}
And i getting error:

Код:
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(3) : fatal error 100: cannot read from file: "sscanf"

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


1 Error.
But pawno is not for my gamemode..
Reply
#2

Make sure you have sscanf.inc file in your pawno/include folder.

Important! Open the pawno.exe where your sscanf is.

Otherwise you can simple copy sscanf function to your script.

https://sampwiki.blast.hk/wiki/Sscanf_code

pawn Код:
/*----------------------------------------------------------------------------*-
Function:
    sscanf
Params:
    string[] - String to extract parameters from.
    format[] - Parameter types to get.
    {Float,_}:... - Data return variables.
Return:
    0 - Successful, not 0 - fail.
Notes:
    A fail is either insufficient variables to store the data or insufficient
    data for the format string - excess data is disgarded.
 
    A string in the middle of the input data is extracted as a single word, a
    string at the end of the data collects all remaining text.
 
    The format codes are:
 
    c - A character.
    d, i - An integer.
    h, x - A hex number (e.g. a colour).
    f - A float.
    s - A string.
    z - An optional string.
    pX - An additional delimiter where X is another character.
    '' - Encloses a litteral string to locate.
    u - User, takes a name, part of a name or an id and returns the id if they're connected.
 
    Now has IsNumeric integrated into the code.
 
    Added additional delimiters in the form of all whitespace and an
    optioanlly specified one in the format string.
-*----------------------------------------------------------------------------*/

 
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;
}
Reply
#3

Go to your pawno folder, and click on pawno.exe , then open up your script from there and try save it again.
Reply
#4

Download link?
Reply
#5

https://sampforum.blast.hk/showthread.php?tid=120356

But why you don't simple copy & paste the code to your script?

You can find this code here. https://sampwiki.blast.hk/wiki/Sscanf_code
Just copy the code to your script and you don't need #include <sscanf>
Reply
#6

I downloaded the sscanf file and replace the files then i complie it and i got this error:

Код:
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(51) : warning 201: redefinition of constant/macro (symbol "COLOR_RED")
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(241) : error 017: undefined symbol "sscanf"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(242) : error 017: undefined symbol "COLOR_YELLOW"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(245) : error 017: undefined symbol "GetAdminLevel"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(247) : error 017: undefined symbol "GetPName"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(248) : error 017: undefined symbol "COLOR_REPORT"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(255) : error 017: undefined symbol "GetAdminLevel"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(258) : error 017: undefined symbol "COLOR_GRAY"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(260) : error 017: undefined symbol "GetAdminLevel"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(263) : error 017: undefined symbol "COLOR_GRAY"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(265) : error 017: undefined symbol "GetAdminLevel"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(268) : error 017: undefined symbol "COLOR_GRAY"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(270) : error 017: undefined symbol "GetAdminLevel"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(273) : error 017: undefined symbol "COLOR_GRAY"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(275) : error 017: undefined symbol "GetAdminLevel"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(278) : error 017: undefined symbol "COLOR_GRAY"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(286) : error 017: undefined symbol "GetAdminLevel"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(287) : error 017: undefined symbol "sscanf"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(289) : error 017: undefined symbol "GetPName"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(297) : error 017: undefined symbol "GetAdminLevel"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(298) : error 017: undefined symbol "sscanf"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(296) : warning 203: symbol is never used: "vid"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(296 -- 313) : error 017: undefined symbol "GetAdminLevel"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(296 -- 315) : error 017: undefined symbol "sscanf"
D:\LOF\Life of Flying 0.3x\gamemodes\Test.pwn(296 -- 315) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


23 Errors.
And if i copy and paste the code i get same error..and by the way where to paste the codes?At top or?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)