Problem mit Banlist Mysql

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
  • Hey leute, ich hab bei meiner banlist ein problem/frage, undzwar soll beim bann der grund in abgespeichert werden, ich habe aber keinen plan wie


    banbefehl
    ocmd:ban(playerid,params[])
    {
    if(IstSpielerAdmin(playerid, 5))
    {
    new pID, reason[128],string[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid, 0xAFAFAFAA, "Benutze: /ban [ID] [Grund]");
    format(string,sizeof(string),"[ADMCMD]: %s wurde von Admin %s Gebannt! Grund: %s", SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(0xFF4122FF,string);
    SpielerInfo[pID][pBann] = 1;
    ts_ban(SpielerName(pID),"Ingame Bann",0);
    Kick(pID);
    }
    else
    {
    SendClientMessage(playerid,0xAFAFAFAA,"Du bist kein Admin!");
    }
    return 1;
    }
    banlist
    ocmd:banlist(playerid, params[])//format(Query, sizeof(Query), "SELECT * FROM `accounts` WHERE `Name` = '%s'", Name);
    {
    if(SpielerInfo[playerid][Adminlevel] >= 2)
    {
    new query[128], plName[16], grund[128], str[1028], str2[96];
    format(query, sizeof(query), "SELECT `Name`, `Banngrund` FROM `accounts` WHERE `Bann` = '1'");
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(query))
    {
    mysql_fetch_field_row(plName, "Name");
    mysql_fetch_field_row(grund, "Banngrund");
    format(str2, sizeof(str2), "Name: %s\tGrund: %s\n", plName, grund);
    strcat(str, str2);
    }
    mysql_free_result();
    ShowPlayerDialog(playerid, DIALOG_BANNLIST, DIALOG_STYLE_MSGBOX, "Bannliste",str, "schließen", "");
    }
    return 1;
    }

  • Falls du eine Spalte mit dem Namen Banngrund schon besitzt und du auch einer variabel hast mit dem namen
    SpielerInfo[pID][pBann] was in deinem Update query wahrscheinlich verwendet wird wirst du bestimmt auch einen string deklariert haben im jeweiligen enum
    was SpielerInfo als index dient.


    Das brauchst du nur noch strcat verwenden und den grund welchen du eingibst zusammenfügen
    strcat(SpielerInfo[pID][UNKNOWN],reason);

  • Falls du eine Spalte mit dem Namen Banngrund schon besitzt und du auch einer variabel hast mit dem namen
    SpielerInfo[pID][pBann] was in deinem Update query wahrscheinlich verwendet wird wirst du bestimmt auch einen string deklariert haben im jeweiligen enum
    was SpielerInfo als index dient.


    Das brauchst du nur noch strcat verwenden und den grund welchen du eingibst zusammenfügen
    strcat(SpielerInfo[pID][UNKNOWN],reason);


    ich versteh es nicht wirklich, also müsste es so aussehen?
    ocmd:ban(playerid,params[])
    {
    if(IstSpielerAdmin(playerid, 5))
    {
    new pID, reason[128],string[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid, 0xAFAFAFAA, "Benutze: /ban [ID] [Grund]");
    format(string,sizeof(string),"[ADMCMD]: %s wurde von Admin %s Gebannt! Grund: %s", SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(0xFF4122FF,string);
    strcat(SpielerInfo[pID][Banngrund],reason);
    SpielerInfo[pID][pBann] = 1;
    ts_ban(SpielerName(pID),"Ingame Bann",0);
    Kick(pID);
    }
    else
    {
    SendClientMessage(playerid,0xAFAFAFAA,"Du bist kein Admin!");
    }
    return 1;
    }sry wenn ich mich wirklich doof anstelle

  • Ja das ist richtig. Du kannst ja noch zusätzlich dein querys posten welches ausgeführt wird wenn der spieler dne Server verlässt und der SQL Befehl UPDATE verwendet wird.
    weil wenn SpielerInfo[pID][Banngrund] genauso gespeichert wird wie SpielerInfo[pID][pBann] dann passt dies so.

  • Ja das ist richtig. Du kannst ja noch zusätzlich dein querys posten welches ausgeführt wird wenn der spieler dne Server verlässt und der SQL Befehl UPDATE verwendet wird.
    weil wenn SpielerInfo[pID][Banngrund] genauso gespeichert wird wie SpielerInfo[pID][pBann] dann passt dies so.



    es sind die querys aus maddins tutorial, wenn du das meinst, und nun wird der banngrund in der datenbank mit 0 ausgegeben

  • hab im enum Banngrund,


    speichere es so ab
    mysql_SetInt("accounts", "Banngrund", SpielerInfo[playerid][Banngrund], "Name", SpielerInfo[playerid][pName]);


    Lade es so
    SpielerInfo[playerid][Banngrund] = mysql_GetInt("accounts", "Banngrund", "Name", SpielerInfo[playerid][pName]);


    meh hab ich nicht,

  • nur ist das ein string und kein integer


    mysql_SetString("accounts", "Banngrund", SpielerInfo[playerid][Banngrund], "Name", SpielerInfo[playerid][pName]);


    strcat(SpielerInfo[playerid][Banngrund],mysql_GetString("accounts", "Banngrund", "Name", SpielerInfo[playerid][pName]));