need help with this code
#1

OK I Changed this from warnings to just general problems...

hello i fixed my on problem but ran into another this code does not seem to work can any of you take a look at it and point out and mistakes
pawn Код:
if(dialogid == CARCHECK)//mark
    {
        if((betacheckstate)==1)
        {
            print("Passed checkcar");
        }
        if(response)
        {
            if((betacheckstate)==1)
            {
                print("Passed response");
            }
            new ammountofpages = 12 * trackcurrentpage[playerid];
            new name[128];
            new strcount;
            new startcount;
            new str[512][13];
            if(listitem == 13)
            {
                if((betacheckstate)==1)
                {
                    print("listitem = 13");
                }
                for(new count;count < 12;count++)
                {
                    currentpageemptyslots[playerid][count] = 0;
                }
                new lstpg = trackcurrentpage[playerid] - 1;
                if((currentpagestate[lstpg]) ==1)
                {
                    GetPlayerName(playerid, name,sizeof(name));
                    if((betacheckstate)==1)
                    {
                        print("passed currentpagestate");
                    }
                    for(new count; count < MAX_VEHICLES;count++)
                    {
                        if((carstate[count])==1)
                        {
                            if(strcmp(name,carowner[count],true,64)==0)
                            {
                                if((ammountofpages) >= startcount)
                                {
                                    format(str[strcount],sizeof(str),"%s",GetVehicleName(carmid[count]));
                                    if((betacheckstate)==1)
                                    {
                                        printf("adding car to list... model id %s",str[strcount]);
                                    }
                                    strcount ++;
                                    if((strcount)==12)
                                    {
                                        currentpagestate[trackcurrentpage[playerid]] = 1;
                                        if((betacheckstate)==1)
                                        {
                                            print("string full");
                                        }
                                        break;
                                    }
                                }
                                else
                                {
                                    startcount ++;
                                }
                            }
                        }
                    }
                    for(new count;count < 12;count++)
                    {
                        if(strcmp(str[count],"",true,64)==0)
                        {
                            format(str[count],sizeof(str),"EmptySlot");
                            if((betacheckstate)==1)
                            {
                                print("emptyslot added");
                            }
                        }
                    }
                    if((trackcurrentpage[playerid]) < 1)
                    {
                        if((betacheckstate)==1)
                        {
                            print("trackcurrentpage is first");
                        }
                        format(string,sizeof(string),"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\nnextpage",str[0],str[1],str[2],str[3],str[4],str[5],str[6],str[7],str[8],str[9],str[10],str[11],str[12]);
                    }
                    else if((trackcurrentpage[playerid]) > 1)
                    {
                        if((betacheckstate)==1)
                        {
                            printf("trackcurrentpage is %i",trackcurrentpage[playerid]);
                        }
                        if((currentpagestate[trackcurrentpage[playerid]]) == 1)
                        {
                            if((betacheckstate)==1)
                            {
                                print("currentpagestate = notlast");
                            }
                            format(string,sizeof(string),"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\nnextpage\nbackpage",str[0],str[1],str[2],str[3],str[4],str[5],str[6],str[7],str[8],str[9],str[10],str[11],str[12]);
                        }
                        else
                        {
                            if((betacheckstate)==1)
                            {
                                print("currentpagestate = last");
                            }
                            format(string,sizeof(string),"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\nbackpage",str[0],str[1],str[2],str[3],str[4],str[5],str[6],str[7],str[8],str[9],str[10],str[11],str[12]);
                        }
                    }
                    trackcurrentpage[playerid] ++;
                    if((betacheckstate)==1)
                    {
                        printf("ShowingPlayerDialog... currentpage:%i",trackcurrentpage[playerid]);
                    }
                    ShowPlayerDialog(playerid,CARCHECK,DIALOG_STYLE_LIST,"Track Car",string,"Ok","Close");
                }
                else
                {
                    goto prev;
                    if((betacheckstate)==1)
                    {
                        print("showing the prev(listitem 14 <back>)");
                    }
                }
                return 1;
            }
            else if(listitem == 14)
            {
                prev:
                if((betacheckstate)==1)
                {
                    print("listitem = 14");
                }
                for(new count;count < 12;count++)
                {
                    currentpageemptyslots[playerid][count] = 0;
                }
                trackcurrentpage[playerid] = trackcurrentpage[playerid] -1;
                GetPlayerName(playerid, name,sizeof(name));
                for(new count; count < MAX_VEHICLES;count++)
                {
                    if((carstate[count])==1)
                    {
                        if(strcmp(name,carowner[count],true,64)==0)
                        {
                            if((ammountofpages) >= startcount)
                            {
                                format(str[strcount],sizeof(str),"%s",GetVehicleName(carmid[count]));
                                if((betacheckstate)==1)
                                {
                                    printf("adding car to list... model id %s",str[strcount]);
                                }
                                strcount ++;
                                if((strcount)==12)
                                {
                                    currentpagestate[trackcurrentpage[playerid]] = 1;
                                    if((betacheckstate)==1)
                                    {
                                        print("string full");
                                    }
                                    break;
                                }
                            }
                            else
                            {
                                startcount ++;
                            }
                        }
                    }
                }
                if((currentpagestate[trackcurrentpage[playerid]])==0)
                {
                    for(new count;count < 12;count++)
                    {
                        if(strcmp(str[count],"",true,64)==0)
                        {
                            format(str[count],sizeof(str),"EmptySlot");
                            if((betacheckstate)==1)
                            {
                                print("adding emptyslot");
                            }
                        }
                    }
                }
                if((trackcurrentpage[playerid]) < 1)
                {
                    if((betacheckstate)==1)
                    {
                        print("trackcurrentpage is first");
                    }
                    format(string,sizeof(string),"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\nnextpage",str[0],str[1],str[2],str[3],str[4],str[5],str[6],str[7],str[8],str[9],str[10],str[11],str[12]);
                }
                else if((trackcurrentpage[playerid]) > 1)
                {
                    if((currentpagestate[trackcurrentpage[playerid]]) == 1)
                    {
                        if((betacheckstate)==1)
                        {
                            printf("trackcurrentpage is %i",trackcurrentpage[playerid]);
                        }
                        format(string,sizeof(string),"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\nnextpage\nbackpage",str[0],str[1],str[2],str[3],str[4],str[5],str[6],str[7],str[8],str[9],str[10],str[11],str[12]);
                    }
                    else
                    {
                        if((betacheckstate)==1)
                        {
                            print("currentpagestate = last");
                        }
                        format(string,sizeof(string),"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\nbackpage",str[0],str[1],str[2],str[3],str[4],str[5],str[6],str[7],str[8],str[9],str[10],str[11],str[12]);
                    }
                }
                ShowPlayerDialog(playerid,CARCHECK,DIALOG_STYLE_LIST,"Track Car",string,"Ok","Close");
                return 1;
            }
            else
            {
                if((betacheckstate)==1)
                {
                    print("you have selected a slot");
                }
                if((currentpageemptyslots[playerid][listitem])==0)
                {
                    if((betacheckstate)==1)
                    {
                        print("the slot is occupide");
                    }
                    for(new count;count < 12;count++)
                    {
                        currentpageemptyslots[playerid][count] = 0;
                    }
                    new jbvehicleid = trackcarid[listitem][trackcurrentpage[playerid]];
                    SaveCar(carid[jbvehicleid]);
                    SetPlayerCheckpoint(playerid,carx[jbvehicleid],cary[jbvehicleid],carz[jbvehicleid],8.0);
                    SendClientMessage(playerid, YELLOW, "Your car is in the check point");
                }
                else
                {
                    ShowPlayerDialog(playerid,ERRORCHECKCAR,DIALOG_STYLE_MSGBOX,"ERROR","You have selected and empty slot","Back","Close");
                }
                return 1;
            }
        }
        else
        {
            SendClientMessage(playerid, RED, "Closed boxes");
        }
    }
Reply
#2

The errors you are receiving indicate that the variables you are using have already been declared at a preceding level. This means that you have already declared the variables somewhere else in your script.

Either localize the variables in a higher scope or change the name of the variables that are giving you the errors. Here is an example of two variables in the same scope (which means the original variable will be shadowed):

SHADOWING VARIABLES:
pawn Код:
CMD:heal(playerid, params[])
{
    new MaxHealth; // I first defined a new variable called MaxHealth.
    if(IsPlayerAdmin(playerid))
    {
        new MaxHealth = 2000; // I create another new variable called MaxHealth.
        SetPlayerHealth(playerid, MaxHealth); // You cannot create two variables with the same name
                                                          // Unless they are in separate scopes.
    }
}
Depending on what you are trying to do with the code, there are two ways to fix shadowing. First, we can just change the value of MaxHealth instead of creating a new variable by removing the "new" and editing the existing variable.

NO SHADOWING:
pawn Код:
CMD:heal(playerid, params[])
{
    new MaxHealth; // I first defined a new variable called MaxHealth.
    if(IsPlayerAdmin(playerid))
    {
        MaxHealth = 2000; // I change the value of max health without creating a new variable.
        SetPlayerHealth(playerid, MaxHealth); // This does not result in shadowing.
    }
}
If, however you need to keep the value of MaxHealth for use later in the code, you'll just need to pick a new name for the second (or first) MaxHealth. This will prevent shadowing.

NO SHADOWING:
pawn Код:
CMD:heal(playerid, params[])
{
    new MaxHealth; // I first defined a new variable called MaxHealth.
    if(IsPlayerAdmin(playerid))
    {
        new TopHealth = 2000; // To prevent shadowing and keep the value of MaxHealth,
        SetPlayerHealth(playerid, MaxHealth); // I can simply use a new variable called "TopHealth" instead
    }
}
Just for clarity, like I mentioned earlier you can create two variable with the same name IF they are in different scopes. For example, I can create two commands that each use a variable named "MaxHealth". Because these variables are created in different scopes, they are in NO WAY RELATED. Outside of their respective scopes, I cannot use these variables for the information they hold. They can only be used within their respective scopes, which in this case is their respective commands.

MULTIPLE SCOPES - SAME VARIABLE NAME, DIFFERENT VARIABLES
pawn Код:
CMD:heal(playerid, params[])
{
    new MaxHealth;
    if(IsPlayerAdmin(playerid))
    {
        MaxHealth = 2000;
        SetPlayerHealth(playerid, MaxHealth);
    }
}

CMD:healmore(playerid, params[])
{
    new MaxHealth;
    if(IsPlayerAdmin(playerid))
    {
        MaxHealth = 99999;
        SetPlayerHealth(playerid, MaxHealth);
    }
}
Reply
#3

no I already check that it is declared else where on my script but only in privet command (if i comment this area of the script it compiles with not warning or errors
Reply
#4

I'm just telling you for a fact what the errors mean. The variables are in some way declared at a preceding level. The compiler doesn't lie. If you read my post, hopefully you will have a better idea of scope and you'll be able to fix the issue.

If you can't understand my explanation of scope, then just change the names of the variables that are giving you trouble. That's the easiest fix I can offer you. I'm not sure what you are trying to do with the variable, though, so it may end up with unintended effects.
Reply
#5

ok ok I fixed the problem but there are but there are still other problems
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)