SA-MP Forums Archive
How to fix these - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Help Archive (https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: How to fix these (/showthread.php?tid=122155)



How to fix these - JoeDaDude - 20.01.2010

pawn Код:
new name[24];
GetPlayerName(playerid,name,24);
if(strcmp(name, "Torran", false) == 0)
{
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Admin","This Admin Account Requires a Password\nType down the correct password to login","OK","Cancel");
}
return 1;
}
Код:
C:\Program Files\Rockstar Games\GTA San Andreas\sa-mp\gamemodes\sftdm.pwn(415) : warning 219: local variable "name" shadows a variable at a preceding level
So to fix it i removed

pawn Код:
new name[24];
And then it brung the errors

Код:
C:\Program Files\Rockstar Games\GTA San Andreas\sa-mp\gamemodes\sftdm.pwn(415) : error 017: undefined symbol "name"
C:\Program Files\Rockstar Games\GTA San Andreas\sa-mp\gamemodes\sftdm.pwn(416) : error 017: undefined symbol "name"
But ive never had this error before,
And ive used name lots and lots of times,


Re: How to fix these - JoeDaDude - 20.01.2010

Same with strings too,
It all started when i added this command,
Im new to ZCMD so i might of done something wrong,

pawn Код:
CMD:arrest(playerid, params[]_
{
if (!sscanf(params, "u", id)) return SendClientMessage(playerid, COLOR_RED, "Usage: /arrest [Playerid/PartOfName]");
if (!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_RED, "Player not found");
if (gTeam[playerid] != TEAM_CROOKSF) return SendClientMessage(playerid, COLOR_RED, "You are not a police officer");
if (id == playerid) return SendClientMessage(playerid, COLOR_RED, "You cannot use this command on yourself");
if (gTeam[id] == gTeam[playerid]) return SendClientMessage(playerid, COLOR_RED, "You cannot arrest a police officer");

new name[MAX_PLAYER_NAME], string[48];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "Police Officer %s has arrested you.", name);
SendClientMessage(id, COLOR_WHITE, string);
SetTimerEx("ArrestTimer", 20000, 0, "i", playerid);
SetPlayerPos(id, 264.9072,77.9281,1001.0391);
GivePlayerMoney(playerid,-1);
ResetPlayerMoney(playerid);

GetPlayerName(id, name, sizeof(name));
format(string, sizeof(string), "You have arrested %s", name);
SendClientMessage(playerid, COLOR_WHITE, string);
return 1;
}



Re: How to fix these - WackoX - 20.01.2010

I think it means that you already have
Код:
new name;
at the top of your script, so not in a public.


Re: How to fix these - JoeDaDude - 20.01.2010

I know what the error means,
Its just something in that code thats causing it

pawn Код:
CMD:arrest(playerid, params[])
{
if (!sscanf(params, "u", id)) return SendClientMessage(playerid, COLOR_RED, "Usage: /arrest [Playerid/PartOfName]");
if (!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_RED, "Player not found");
if (gTeam[playerid] != TEAM_CROOKSF) return SendClientMessage(playerid, COLOR_RED, "You are not a police officer");
if (id == playerid) return SendClientMessage(playerid, COLOR_RED, "You cannot use this command on yourself");
if (gTeam[id] == gTeam[playerid]) return SendClientMessage(playerid, COLOR_RED, "You cannot arrest a police officer");

new name[MAX_PLAYER_NAME], string[48];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "Police Officer %s has arrested you.", name);
SendClientMessage(id, COLOR_WHITE, string);
SetTimerEx("ArrestTimer", 20000, 0, "i", playerid);
SetPlayerPos(id, 264.9072,77.9281,1001.0391);
GivePlayerMoney(playerid,-1);
ResetPlayerMoney(playerid);

GetPlayerName(id, name, sizeof(name));
format(string, sizeof(string), "You have arrested %s", name);
SendClientMessage(playerid, COLOR_WHITE, string);
return 1;
}



Re: How to fix these - Nero_3D - 20.01.2010

if you know what it means, fix it
you used "name" already somewhere above

easiest way for you, rename the name variable (and everywhere you used it in arrest)
or find "name" and change that varialbe / function whatever


Re: How to fix these - JoeDaDude - 20.01.2010

Thats the fing, I do that! I know what to do, And ive doen it, And it still says it,
Its in that arrest code there, But if i remove name and string from tht, no errors,
But 2 warnings tht undefined symbol name and string,Whatevre i do just brings more errors


Re: How to fix these - Nero_3D - 20.01.2010

what happens if you remove the whole arrest code ?


Re: How to fix these - JoeDaDude - 20.01.2010

Compiled successfully


Re: How to fix these - Nero_3D - 20.01.2010

thats indeed strange

try that
pawn Код:
CMD:arrest(playerid, params[])
{
    if (gTeam[playerid] != TEAM_CROOKSF) return SendClientMessage(playerid, COLOR_RED, "You are not a police officer");
    if (sscanf(params, "u", id)) return SendClientMessage(playerid, COLOR_RED, "Usage: /arrest [Playerid/PartOfName]");
    if (!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_RED, "Player not found");
    if (id == playerid) return SendClientMessage(playerid, COLOR_RED, "You cannot use this command on yourself");
    if (gTeam[id] == gTeam[playerid]) return SendClientMessage(playerid, COLOR_RED, "You cannot arrest a police officer");

    new string[58];

    GetPlayerName(playerid, string, MAX_PLAYER_NAME);
    format(string, sizeof(string), "Police Officer %s has arrested you.", string);
    SendClientMessage(id, COLOR_WHITE, string);

    GetPlayerName(id, string, MAX_PLAYER_NAME);
    format(string, sizeof(string), "You have arrested %s", string);
    SendClientMessage(playerid, COLOR_WHITE, string);

    SetTimerEx("ArrestTimer", 20000, 0, "i", playerid); //playerid ?
    SetPlayerPos(id, 264.9072, 77.9281, 1001.0391);
    ResetPlayerMoney(playerid); //playerid ?
    return 1;
}



Re: How to fix these - JoeDaDude - 20.01.2010

pawn Код:
stock sscanf(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;
}
Код:
C:\Program Files\Rockstar Games\GTA San Andreas\sa-mp\gamemodes\sftdm.pwn(1084) : error 017: undefined symbol "string"
C:\Program Files\Rockstar Games\GTA San Andreas\sa-mp\gamemodes\sftdm.pwn(1084) : error 029: invalid expression, assumed zero
C:\Program Files\Rockstar Games\GTA San Andreas\sa-mp\gamemodes\sftdm.pwn(1084) : error 017: undefined symbol "string"
C:\Program Files\Rockstar Games\GTA San Andreas\sa-mp\gamemodes\sftdm.pwn(1084) : fatal error 107: too many error messages on one line

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


4 Errors.