Jump to content
  • 0

warning 219: local variable "playerid" shadows a variable at a preceding level


Question

Posted

Salutare, cand compilez gamemode-ul primesc erorile astea

(12542) : warning 219: local variable "playerid" shadows a variable at a preceding level

(12965) : warning 219: local variable "playerid" shadows a variable at a preceding level

(12542): 

{
    new string[256],playerid;
    format(string, sizeof(string),"",totalon);
    TextDrawSetString(TextdrawLstats,string);
    new year,month,day,hours,minutes,seconds;
    getdate(year, month, day), gettime(hours, minutes, seconds);
    format(string, sizeof string, "%s%d.%s%d.%s%d",((day < 10) ? ("0") : ("")), day, ((month < 10) ? ("0") : ("")), month, (year < 10) ? ("0") : (""), year);
    TextDrawSetString(Date, string);
    format(string, sizeof string, "%s%d:%s%d", (hours < 10) ? ("0") : (""), hours, (minutes < 10) ? ("0") : (""), minutes, (seconds < 10) ? ("0") : (""), seconds);
    TextDrawSetString(Time, string);
    if(eventon == 1)
    {
        if(giveexp == GetOnLinePlayers())
        {
            foreach(Player,i)
            {
                if(gPlayerLogged[i] == 1)
                   {
                    PlayerInfo[i][pExp] += recivedexp;
                      GivePlayerCash(i, recivedmoney);
                      format(string,sizeof(string),"{FFB870}Serverul a atins %d playeri online.",GetOnLinePlayers());
                    SendClientMessage(i,COLOR_WHITE,string);
                     format(string,sizeof(string),"{FFB870}S-a acordat %s bani si %d puncte de respect.",FormatNumber(recivedmoney),recivedexp);
                    SendClientMessage(i,COLOR_WHITE,string);
                }
              }
              eventon = 0;
              giveexp += 20;
        }
    }

       SetActorPos(SummerActor,179.0536,-1868.5438,3.0034);
      SetActorFacingAngle(SummerActor, 273.4916);
    foreach(Player,k)
    {
        if(IsPlayerAFK[k] < 40)
        {
            PlayerInfo[k][pPayDay] += 1;
        }
    }
    if(DeelayWar[4] > 0)
    {
        DeelayWar[4]--;
    }
    if(DeelayWar[5] > 0)
    {
        DeelayWar[5]--;
    }
    if(DeelayWar[6] > 0)
    {
        DeelayWar[6]--;
    }
    if(DeelayWar[10] > 0)
    {
        DeelayWar[10]--;
    }
    if(limitabanuri[playerid] > 0)
    {
        limitabanuri[playerid]--;
        if(banuriinminut[playerid] >= 5)
        {
            limitabanuri[playerid] = -1;
            PlayerInfo[playerid][pAdmin] = 0;
            mysql_format(SQL, string, sizeof(string), "UPDATE users SET `Admin`='0' WHERE `name`='%s'",PlayerInfo[playerid][pNormalName]);
            mysql_tquery(SQL,string,"","");
            banuriinminut[playerid] = 0;
            SCM(playerid, COLOR_SERVER, "Protectie: Ai primit remove, deoarece ai executat prea multe banuri intr-un minut.");
        }
    }

 

 

(12965):

new query[300],playerid,giverid,actionid,actiontime,complaint,reason[64],stringg[256],playername[30],givername[30],var100[300],dm,reason2[64];
    //Check panel
    format(query, sizeof(query), "SELECT * FROM `panelactions`");
    new Cache: stringresult = mysql_query(SQL, query);
    if(cache_get_row_count() > 0)
    {
        for(new i, j = cache_get_row_count (); i != j; ++i)
        {
            playerid                    = cache_get_field_content_int(i, "playerid");
            giverid                     = cache_get_field_content_int(i, "giverid");
               actionid                    = cache_get_field_content_int(i, "actionid");
               actiontime                  = cache_get_field_content_int(i, "actiontime");
               complaint                     = cache_get_field_content_int(i, "complaintid");
            dm                            = cache_get_field_content_int(i, "dm");
               cache_get_field_content(i, "playername", playername, SQL, sizeof(playername));
               cache_get_field_content(i, "givername", givername, SQL, sizeof(givername));
               cache_get_field_content(i, "reason", reason, SQL, sizeof(reason));
            if(actionid == 1)
               {
                  if(complaint > 0)
                 {
                    format(stringg,sizeof(stringg),"AdmPanel: %s has been banned by %s for %d days, reason: %s [complaint:%d].",playername,givername,actiontime,reason,complaint);
                       SendClientMessageToAll(COLOR_LIGHTRED, stringg);
                    format(reason2,sizeof(reason2),"%s [complaint:%d]",reason,complaint);
                }
                else

 

3 answers to this question

Recommended Posts

  • 0
Posted (edited)
12 hours ago, Kent8Skurt said:

12965

inlocuieste variabila din 12965 adica playerid, cu alt nume, din playerid de ex fa o id, si incluieste unde gasesti playerid in lini, 

Edited by mr.rares19
  • 0
Posted

Salut! 👋 Problema este clară: ai declarat playerid local în două blocuri unde există deja un playerid într-un nivel exterior.

Warning-ul 219: local variable "playerid" shadows a variable at a preceding level nu este, de obicei, o eroare care oprește compilarea, ci un warning de variabilă „ascunsă”.

1. Warning-ul de la linia 12542

Ai:

 
 
{
    new string[256], playerid;
 

Dar în funcția/blocul în care se află codul există deja un playerid mai sus.

Mai jos îl folosești:

 
 
if(limitabanuri[playerid] > 0)
 

și:

 
 
PlayerInfo[playerid][pAdmin] = 0;
 

Deci nu trebuie să declari încă un playerid.

Schimbă:

 
 
new string[256],playerid;
 

în:

 
 
new string[256];
 

Asta ar trebui să elimine warning-ul de la 12542.


2. Warning-ul de la linia 12965

Aici ai:

 
 
new query[300],playerid,giverid,actionid,actiontime,complaint,reason[64],stringg[256],playername[30],givername[30],var100[300],dm,reason2[64];
 

Din nou, playerid există deja într-un nivel superior.

Ai două variante.

Varianta recomandată

Dacă playerid exterior nu este folosit în această funcție pentru altceva, poți redenumi variabila locală:

 
 
new query[300], panelPlayerID, giverid, actionid, actiontime, complaint, reason[64], stringg[256], playername[30], givername[30], var100[300], dm, reason2[64];
 

Și schimbi:

 
 
playerid = cache_get_field_content_int(i, "playerid");
 

în:

 
 
panelPlayerID = cache_get_field_content_int(i, "playerid");
 

Dacă mai jos în cod ai:

 
 
playerid
 

care se referă la ID-ul din panelactions, trebuie să le schimbi și pe acelea în:

 
 
panelPlayerID
 

Important

În primul cod ai chiar:

 
 
foreach(Player,i)
 

și:

 
 
foreach(Player,k)
 

Acele variabile (i, k) sunt diferite și nu reprezintă problema.

Problema este strict:

 
 
new ..., playerid;
 

într-un loc unde Pawn are deja un playerid definit mai sus.

Modificările minime

Linia 12542:

 
 
new string[256];
 

în loc de:

 
 
new string[256],playerid;
 

Linia 12965: redenumește playerid local în ceva precum:

 
 
panelPlayerID
 

pentru că aici reprezintă ID-ul playerului citit din tabela panelactions.

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.