29 Warnings (warscheinlich klammerfehler)

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Servus,


    Ich habe ein Befehl gescriptet das ich die Adminranks sehen kann.
    Hier der Code:

    Spoiler anzeigen
    stock LoadAccount(playerid)
    {
    SpielerInfo[playerid][pEingeloggt] = true;
    SpielerInfo[playerid][pGeld] = cache_get_field_content_int(0, "Geld", mysqlHandle), GivePlayerMoney(playerid, SpielerInfo[playerid][pGeld]);
    SpielerInfo[playerid][pLevel] = cache_get_field_content_int(0, "Level", mysqlHandle), SetPlayerScore(playerid, SpielerInfo[playerid][pLevel]);
    SpielerInfo[playerid][pKills] = cache_get_field_content_int(0, "Kills", mysqlHandle);
    SpielerInfo[playerid][pTode] = cache_get_field_content_int(0, "Tode", mysqlHandle);
    SpielerInfo[playerid][pAdminlevel] = cache_get_field_content_int(0, "Adminlevel", mysqlHandle), SpielerInfo[playerid][pAdminlevel];
    SpielerInfo[playerid][pRank1] = cache_get_field_content_int(0, "Rank1", mysqlHandle), SpielerInfo[playerid][pRank1];
    SpielerInfo[playerid][pRank2] = cache_get_field_content_int(0, "Rank2", mysqlHandle), SpielerInfo[playerid][pRank2];
    SpielerInfo[playerid][pRank3] = cache_get_field_content_int(0, "Rank3", mysqlHandle), SpielerInfo[playerid][pRank3];
    SpielerInfo[playerid][pRank4] = cache_get_field_content_int(0, "Rank4", mysqlHandle), SpielerInfo[playerid][pRank4];
    SpielerInfo[playerid][pRank5] = cache_get_field_content_int(0, "Rank5", mysqlHandle), SpielerInfo[playerid][pRank5];
    SpielerInfo[playerid][pRank6] = cache_get_field_content_int(0, "Rank6", mysqlHandle), SpielerInfo[playerid][pRank6];
    SpielerInfo[playerid][pRank7] = cache_get_field_content_int(0, "Rank7", mysqlHandle), SpielerInfo[playerid][pRank7];
    printf("Acc geladen (%s)",NamePlayer(playerid));
    return 1;
    }ocmd:arank(playerid)
    {
    new string[128];
    format(string, sizeof(string),"Rank 1: %s\nRank 2: %s\nRank 3: %s\nRank 4: %s\nRank 5: %s\nRank 6: %s\nRank 7: %s\n\n",SpielerInfo[playerid][pRank1],SpielerInfo[playerid][pRank2],SpielerInfo[playerid][pRank3],SpielerInfo[playerid][pRank4],SpielerInfo[playerid][pRank5],SpielerInfo[playerid][pRank6],SpielerInfo[playerid][pRank7]);
    ShowPlayerDialog(playerid,DIALOG_ARANK,DIALOG_STYLE_MSGBOX, "Arank",string,"Ok","");
    return 1;
    }


    Hier die Warnings.

    Spoiler anzeigen
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(160) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(160) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(160) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(160) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(160) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(160) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(160) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(383) : warning 215: expression has no effect
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(384) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(384) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(384) : warning 215: expression has no effect
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(385) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(385) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(385) : warning 215: expression has no effect
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(386) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(386) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(386) : warning 215: expression has no effect
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(387) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(387) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(387) : warning 215: expression has no effect
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(388) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(388) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(388) : warning 215: expression has no effect
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(389) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(389) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(389) : warning 215: expression has no effect
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(390) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(390) : warning 213: tag mismatch
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(390) : warning 215: expression has no effect
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

    Spoiler anzeigen
    29 Warnings.

  • Schick mal das enum was du für SpielerInfo nutzt. (Wo pRank3 ist).
    Wenn du z.B. ein Boolean als Integer oder einen Integer als String o.ä. nutzen willst, ist das (denke ich mal) Tag mismatch. Das gleiche wäre wenn du einen Textdraw erstellen willst ohne Text: als Tag.


  • SpielerInfo[playerid][pRank1] = cache_get_field_content_int(0, "Rank1", mysqlHandle), SpielerInfo[playerid][pRank1];

    Was ist denn das für ne Anweisung?
    Ich glaube du meinst es so:

    SpielerInfo[playerid][pRank1] = cache_get_field_content_int(0, "Rank1", mysqlHandle);

    ik bin der vito c:

  • Was ist da falsch?
    Jeffry: villeicht weißt du was.

    Code
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(161) : warning 213: tag mismatchC:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(161) : warning 213: tag mismatchC:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(161) : warning 213: tag mismatchC:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(161) : warning 213: tag mismatchC:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(161) : warning 213: tag mismatchC:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(161) : warning 213: tag mismatchC:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(161) : warning 213: tag mismatchC:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(385) : warning 213: tag mismatchC:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(386) : warning 213: tag mismatchC:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(387) : warning 213: tag mismatchC:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(388) : warning 213: tag mismatchC:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(389) : warning 213: tag mismatchC:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(390) : warning 213: tag mismatchC:\Users\Patrick\Desktop\IRP-City\gamemodes\Reallife-Skript.pwn(391) : warning 213: tag mismatchPawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase14 Warnings.



    stock LoadAccount(playerid)
    {
    SpielerInfo[playerid][pEingeloggt] = true;
    SpielerInfo[playerid][pGeld] = cache_get_field_content_int(0, "Geld", mysqlHandle), GivePlayerMoney(playerid, SpielerInfo[playerid][pGeld]);
    SpielerInfo[playerid][pLevel] = cache_get_field_content_int(0, "Level", mysqlHandle), SetPlayerScore(playerid, SpielerInfo[playerid][pLevel]);
    SpielerInfo[playerid][pKills] = cache_get_field_content_int(0, "Kills", mysqlHandle);
    SpielerInfo[playerid][pTode] = cache_get_field_content_int(0, "Tode", mysqlHandle);
    SpielerInfo[playerid][pAdminlevel] = cache_get_field_content_int(0, "Adminlevel", mysqlHandle);
    SpielerInfo[playerid][pRank1] = cache_get_field_content_int(0, "Rank1", mysqlHandle);//Fehler
    SpielerInfo[playerid][pRank2] = cache_get_field_content_int(0, "Rank2", mysqlHandle);//fehler
    SpielerInfo[playerid][pRank3] = cache_get_field_content_int(0, "Rank3", mysqlHandle);//fehler
    SpielerInfo[playerid][pRank4] = cache_get_field_content_int(0, "Rank4", mysqlHandle);//Fehler
    SpielerInfo[playerid][pRank5] = cache_get_field_content_int(0, "Rank5", mysqlHandle);//fehler
    SpielerInfo[playerid][pRank6] = cache_get_field_content_int(0, "Rank6", mysqlHandle);//Fehler
    SpielerInfo[playerid][pRank7] = cache_get_field_content_int(0, "Rank7", mysqlHandle);//fehler
    printf("Acc geladen (%s)",NamePlayer(playerid));
    return 1;
    }


    ocmd:arank(playerid)
    {
    new string[128];
    format(string, sizeof(string),"Rank 1: %s\nRank 2: %s\nRank 3: %s\nRank 4: %s\nRank 5: %s\nRank 6: %s\nRank 7: %s\n\n",SpielerInfo[playerid][pRank1],SpielerInfo[playerid][pRank2],SpielerInfo[playerid][pRank3],SpielerInfo[playerid][pRank4],SpielerInfo[playerid][pRank5],SpielerInfo[playerid][pRank6],SpielerInfo[playerid][pRank7]);//fehler161
    ShowPlayerDialog(playerid,DIALOG_ARANK,DIALOG_STYLE_MSGBOX, "Arank",string,"Ok","");
    return 1;
    }

  • So kann das ja nicht funktionieren :)
    In der MYSQL Abfrage möchtest du den INT (Zahlen) Wert haben, aber bei deinem "new string[128]" möchtest du Strings haben und keine Zahlen (%s). Ersetze sie mal bei dem format(...) durch %i anstatt %s. Der Compiler hat
    bei den Rank Variablen Zahlen geladen aber du willst beim format Texte, also denkt er, dass die Variablen Texte sein müssen -> Fehlermeldung.


    Also das ist meine Vermutung :P

  • Naja ich hab herrausgefunden das es durch das "SpielerInfo[playerid][pRank1]" ist.
    Wie kann ich das ändern?
    Hier nochmal alles wichtige:
    ocmd:arank(playerid)
    {
    new string[128];
    format(string, sizeof(string),"Rank 1: %s",Adminrank[playerid][Rank1]);
    SendClientMessage(playerid, -1, string);
    return 1;
    }


    enum AdminRank
    {
    pRank1,
    pRank2,
    pRank3,
    pRank4,
    pRank5,
    pRank6,
    pRank7
    }
    new Adminrank[MAX_PLAYERS][AdminRank];


    Adminrank[playerid][pRank1] = cache_get_field_content_int(0, "Rank1", mysqlHandle);
    Adminrank[playerid][pRank2] = cache_get_field_content_int(0, "Rank2", mysqlHandle);
    Adminrank[playerid][pRank3] = cache_get_field_content_int(0, "Rank3", mysqlHandle);
    Adminrank[playerid][pRank4] = cache_get_field_content_int(0, "Rank4", mysqlHandle);
    Adminrank[playerid][pRank5] = cache_get_field_content_int(0, "Rank5", mysqlHandle);
    Adminrank[playerid][pRank6] = cache_get_field_content_int(0, "Rank6", mysqlHandle);
    Adminrank[playerid][pRank7] = cache_get_field_content_int(0, "Rank7", mysqlHandle);

  • Wie gesagt, ersetz das %s durch %i.
    Ich werde dir keinen Code hier rein posten, da diese Erklärung wohl reichen sollte ;)

  • Kommt drauf an welches MySQL Plugin du verwendest.
    Ich persöhnlich würde dir das Tutorial von Maddin sehr ans Herz legen,
    da dort alles einfach und detailliert erklärt wird.


    Bei deinem Problem fällt mir nur ein, dass du in der Datenbank mal schauen solltest,
    ob dort denn 0 steht oder ein anderer Wert. Wenn da 0 steht funktioniert ja alles,
    ansonsten weiß ich auch nicht unbedingt weiter. Aber wie gesagt, der Maddin hat
    ein sehr gutes Tutorial geschrieben.


    Zum Tutorial: Klick mich

  • Aber kannst du mir nicht helfen?
    Ich möchte anfangen MySQL zu "erlernen" und möchte anfangen etwas auszulesen per command.
    bisheriger Command:
    ocmd:arank(playerid)
    {
    new string[128], query[128];
    format(query, sizeof(query), "SELECT * FROM admins, aRank1");
    mysql_tquery(mysqlHandle,query);
    format(string, sizeof(string),"Rank 1: %i",Adminrank[playerid][pRank1]);
    SendClientMessage(playerid, -1, string);
    return 1;
    }


    keine Fehler oder so
    085zehn:

  • Das Problem hier ist, dass die pRank's als Integer-Datentypen erstellt werden.
    enum AdminRank
    {
    pRank1,
    pRank2,
    pRank3,
    pRank4,
    pRank5,
    pRank6,
    pRank7
    }


    Aber im Format wird %s (= String) genutzt, was aber nicht geht, weil es ein Integer ist.
    Wenn du im Format einen String haben willst, mach folgendes:
    enum AdminRank
    {
    pRank1[64],
    pRank2[64],
    pRank3[64],
    pRank4[64],
    pRank5[64],
    pRank6[64],
    pRank7[64]
    }


    Mfg:
    MomoGrimm


    PS: Ich garantiere nicht, dass es richtig ist :P


    //EDIT: Wichtig ist, dass du bei der Initialisierung (Definieren der Werte über msyql o.ä.) es dann auch als String definierst. Sonst erhälst du erneut tag mismatches.

  • Ok anderes Thema das ist schon lange abgeharkt..
    Warum funktioniert das nicht:
    ocmd:makeadmin(playerid, params[])
    {
    new query[128], string[128], rank, pID;
    if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,ROT,"Du brauchst das Rcon Passwort.");
    //if(sscanf(params,"ui",pID,rank))return SendClientMessage(playerid,-1,"Tippe: /makeadmin [spieler] [level]");
    if(rank<0||rank>7)return SendClientMessage(playerid,ROT,"Ungültig.");
    format(string, sizeof(string),"Du hast Adminlevel erhalten. Checke /stats");
    SendClientMessage(pID,ROT,string);
    format(query, sizeof(query), "UPDATE accounts SET adminlevel = '%d' WHERE adminlevel = '%s'",rank);
    mysql_tquery(mysqlHandle, query, "", "");
    return 1;
    }


    könnte man das Resourcenfreundlicher schreiben?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen