Variable innerhalb zweier Befehle "symbol already defined"

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Abend,
    mich zieht es nach einiger Zeit mal wieder ans Skripten. Ich habe einen Error den ich mir nicht erklären kann.
    Ich habe folgendes:



    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp("/com1", cmdtext, true, 10) == 0)
    {
    new string[128];
    //......
    return 1;
    }
    if(strcmp("/com2", cmdtext, true, 10) == 0)
    {
    new string[128];
    //......
    return 1;
    }
    }


    Jetzt erhalte ich für das new string im com2 Befehl den Error "Symbol already defined". Sonst ist dieser Variablenname nicht vergeben. Wie kann das sein?


    OT: Die Forensuche liefert für "symbol already defined" übrigens überhaupt keinen Treffer

  • Du hast "string" wahrscheinlich global definiert.

    Ja, das denke ich auch. Entweder du suchst mal in deinem Script mit (STRG + F) und gibtst mal "new string" ein oder du testet es so, dann sollte kein Fehler kommen ;)


    MfG :thumbup:


    Mit freundlichen Grüßen
    German_ScripterHD

  • Also die Variable string ist nicht global deklariert. Sie existiert nur in den beiden Commands. Das ganze vor die Commands zu ziehen möchte ich eigentlich nicht weil dadurch die Übersicht verloren geht. Ich bin mir aber sicher dass das bisher nie Probleme gab wenn man Variablen mit gleichem Namen in verschiedenen Commands nutzt.

  • Ich bin mir aber sicher dass das bisher nie Probleme gab wenn man Variablen mit gleichem Namen in verschiedenen Commands nutzt.

    Da, hast du Recht. Eigentlich sollten keine Probleme dadurch entstehen.
    Hast du es mal mit meinem Code versucht? Kommen dort auch Fehler?


    MfG :thumbup:


    Mit freundlichen Grüßen
    German_ScripterHD

  • Wenn ich eine Variable umbenenne klappt es. Aber damit ist das Problem ja nicht gelöst, nur ignoriert. Hier mal beide Commands. Stehen so untereinander. Probleme gab es erst als ich /bug eingefügt habe.



    if(strcmp("/premskin", cmdtext, true, 10) == 0)
    {
    new premstring[128];
    format(premstring,sizeof(premstring),"SELECT `Skin` FROM `%s`.`Premiumskins` WHERE ID = '%d'",mysqldb,GetPVarInt(playerid,DBID_KEY));



    mysql_query(premstring,-1,-1,connection);
    mysql_store_result(connection);
    if(mysql_num_rows(connection) != 0)
    {
    if(GetPVarInt(playerid,USEPREMIUMSKIN_KEY) == 0)
    {
    new data[64];
    new info[512];
    new field[1][6];
    while(mysql_fetch_row(data,"|",connection))
    {
    spliter(data, field, '|');
    format(info,sizeof(info),"%s%d\n",info,strval(field[0]));
    }
    ShowPlayerDialog(playerid,premskinusedialog,DIALOG_STYLE_LIST,"Bitte wähle deinen Skin",info,"Absenden","Abbrechen");
    }
    else if(GetPVarInt(playerid,USEPREMIUMSKIN_KEY) == 1)
    {
    SetPVarInt(playerid,USEPREMIUMSKIN_KEY,0);
    SendClientMessage(playerid,hblau,"Premiumskin ausgeschaltet. Du erhälst ihn nun nicht mehr beim Spawnen");
    SetPlayerSkin(playerid,GetPVarInt(playerid,OLDPREMIUMSKIN_KEY));
    }
    }
    else
    {
    SendClientMessage(playerid,rot,"Fehler: Du hast noch keinen Premiumskin erworben");
    }
    mysql_free_result(connection);
    }



    if(strcmp("/bugs",cmdtext, true) == 0)
    {
    if(GetPVarInt(playerid,ADMIN_KEY) >= 2)
    {
    new query[256];
    new info[1024]; // warning 219: local variable "info" shadows a variable at a preceding level
    format(query,sizeof(query),"SELECT Spieler,Meldung FROM Bugs ORDER BY ID DESC");



    mysql_query(query,-1,-1,connection);
    mysql_store_result(connection);



    if(mysql_num_rows(connection) == 0)
    {
    strins(info,"keine Bugs gemeldet",0);
    }
    else
    {
    strins(info,"Spieler\tMeldung\n",0);
    new data[256]; // error 021: symbol already defined: "data"
    new field[2][256]; // error 021: symbol already defined: "field"
    while(mysql_fetch_row(data,"|",connection))
    {
    spliter(data, field, '|');
    format(info,sizeof(info),"%s%s\t%s\n",info,field[0],field[1]);
    }
    }
    ShowPlayerDialog(playerid,bugdialog,DIALOG_STYLE_TABLIST_HEADERS,"Bugmeldungen",info,"schließen","");
    mysql_free_result(connection);
    }
    else
    {
    SendClientMessage(playerid, rot, "Du besitzt nicht die nötige Einstufung zur Ausführung dieses Befehls");
    }
    return 1;
    }

    Geht um info, field und data