Banliste

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
  • Hallo,


    seit neustem Funktioniert meine Banliste nicht mehr.
    Eigentlich seitdem ich 0.3.7 auf meinen Server gespielt habe.
    Code:
    public OnBannedCheck(playerid)
    {
    new rows = cache_get_row_count(), string[512], tmp[32];
    for(new i=0; i < rows; i++)
    {
    cache_get_row(i, 0, tmp);
    format(string, sizeof(string), "%s Name: %s /", string, tmp);
    cache_get_row(i, 1, tmp);
    format(string, sizeof(string), "%s Ausführender Admin: %s /", string, tmp);
    cache_get_row(i, 2, tmp);
    format(string, sizeof(string), "%sGrund: %s\n", string, tmp);
    }
    ShowPlayerDialog(playerid, DIALOG_BANLISTE, DIALOG_STYLE_MSGBOX, "Gesperrte Accounts", string, "","");
    return 1;
    }


    ocmd:banliste(playerid)
    {
    new query[256];
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,-1,"Du hast kein Admin Level 2");
    format(query, sizeof(query), "SELECT Name, Banadmin, Bangrund FROM accounts WHERE Banned = '1'");
    mysql_tquery(mysqlHandle, query, "OnBannedCheck", "d", playerid);
    return 1;
    }


    Ich hoffe ihr könnt helfen.
    Jeffry: vielleicht :whistling::thumbup:

    2 Mal editiert, zuletzt von The Sensei ()

  • Code
    [23:14:22] [DEBUG] mysql_tquery - connection: 1, query: "SELECT Name, Banadmin, Bangrund FROM accounts WHERE Banned = '1'", callback: "OnBannedCheck", format: "d"
    [23:14:22] [DEBUG] CMySQLQuery::Execute[OnBannedCheck] - starting query execution
    [23:14:22] [DEBUG] CMySQLQuery::Execute[OnBannedCheck] - query was successfully executed within 17.475 milliseconds
    [23:14:22] [DEBUG] CMySQLResult::CMySQLResult() - constructor called
    [23:14:22] [DEBUG] Calling callback "OnBannedCheck"..
    [23:14:22] [DEBUG] cache_get_row_count - connection: 1
    [23:14:23] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called


    Das hab ich völlig vergessen zu Posten. Tut mir leid.

  • Ach ja, ich seh den Fehler grade:
    ShowPlayerDialog(playerid, DIALOG_BANLISTE, DIALOG_STYLE_MSGBOX, "Gesperrte Accounts", string, "","");
    Du hast keinen Button angegeben.


    Ändere das mal zu:
    ShowPlayerDialog(playerid, DIALOG_BANLISTE, DIALOG_STYLE_MSGBOX, "Gesperrte Accounts", string, "Ok","");

  • @FerienFreak:



    Spoiler anzeigen
    public OnBannedCheck(playerid)
    {
    new rows,fields,string[512],endformat[400],Grund[128],Dauer[128],Admin[128]Name[128];];
    cache_get_data(rows, fields);
    if(rows)
    {
    cache_get_field_content(0,"Grund",Grund); // Anpassen
    cache_get_field_content(0,"Dauer",Dauer); // Anpassen
    cache_get_field_content(0,"Admin",Admin); // Anpassen
    cache_get_field_content(0,"Name",Name); // Anpassen
    format(string, sizeof(string), "Name: %s",Name);
    strcat(endformat, string);
    format(string, sizeof(string), "Ausführender Admin: %s",Admin);
    strcat(endformat, string);
    format(string, sizeof(string), "Grund: %s",Grund);
    strcat(endformat, string);
    }
    ShowPlayerDialog(playerid, DIALOG_BANLISTE, DIALOG_STYLE_MSGBOX, "Gesperrte Accounts", endformat, "OK","");
    return 1;
    }

  • Dann debugge es bitte mal.
    public OnBannedCheck(playerid)
    {
    new rows = cache_get_row_count(), string[512], tmp[32];
    printf("rows: %d", rows);
    for(new i=0; i < rows; i++)
    {
    cache_get_row(i, 0, tmp);
    format(string, sizeof(string), "%s Name: %s /", string, tmp);
    cache_get_row(i, 1, tmp);
    format(string, sizeof(string), "%s Ausführender Admin: %s /", string, tmp);
    cache_get_row(i, 2, tmp);
    format(string, sizeof(string), "%sGrund: %s\n", string, tmp);
    printf("string: %s", string);
    }
    printf("string: %s", string);
    ShowPlayerDialog(playerid, DIALOG_BANLISTE, DIALOG_STYLE_MSGBOX, "Gesperrte Accounts", string, "Ok","");
    return 1;
    }


    Was steht so im Server Log?

  • Dann ist es klar warum dir nichts angezeigt wird, es wird nichts ausgelesen.
    Poste doch bitte mal den Screenshot aus der Tabelle in der Datenbank, von den Daten. Nicht, dass da gar keine mehr drin sind, bzw. niemand gebannt ist.

  • Oke,


    es war noch niemand gebannt haha.
    Problem gelöst.


    Aber ich hab das gleiche nur mit Reports das er mir das anzeigen soll doch es passiert nichts und die Reports werden nicht richtig gespeichert.
    Code:
    Report erstellen.


    ocmd:report(playerid)
    {
    ShowPlayerDialog(playerid, DIALOG_REPORTSUSPECT, DIALOG_STYLE_INPUT, "Report-System", "Schreibe bitte den Namen in die Zeile.\n Beschreibe genau was die Person getan hat.\nWICHTIG: Report ist nicht für Fragen Gedacht dafür gibt es /support. ", "","");
    return 1;
    }


    if(dialogid == DIALOG_REPORTSUSPECT)
    {
    format(key, 50, "%s", inputtext);
    SetPVarString(playerid, "ReportSus", key);
    ShowPlayerDialog(playerid, DIALOG_REPORTREASON, DIALOG_STYLE_INPUT, "Report-System", "Schreibe nun den Grund auf wofür du die Person Melden willst.","","");
    }
    if(dialogid == DIALOG_REPORTREASON)
    {
    format(key, 50, "%s", inputtext);
    SetPVarString(playerid, "ReportReason", key);
    ShowPlayerDialog(playerid, DIALOG_REPORTSEND, DIALOG_STYLE_MSGBOX, "Report-System", "Bist du sicher das du den Report absenden willst?\n Dein Report wird nicht gelöscht sondern in unserer Datenbank gespeichert.\n Admins können ihn jeder Zeit sehen und überprüfen.","Ja, senden","Nein, Abbrechen");
    }
    if(dialogid == DIALOG_REPORTSEND)
    {
    if(!response)
    {
    return SendClientMessage(playerid, -1, "Report nicht abgesendet");
    }
    new ReportSuspect[50], ReportReason[50];
    format(ReportSuspect, 50, "%s", GetPVarString(playerid, "ReportSus", key,sizeof(key)));
    format(ReportReason, 50, "%s", GetPVarString(playerid, "ReportReason", key,sizeof(key)));
    format(query,sizeof(query), "INSERT INTO Reports(`Name`,`Grund`) VALUES ('%e', '%e')", ReportSuspect, ReportReason);

    mysql_tquery(mysqlHandle, query);
    }


    Keine Fehler ?

  • Der Log sagt das:

    Code
    [15:39:24] [DEBUG] mysql_tquery - connection: 1, query: "INSERT INTO Reports(`Name`,`Grund`) VALUES ('e', 'e')", callback: "(null)", format: "(null)"
    [15:39:24] [DEBUG] CMySQLQuery::Execute[] - starting query execution
    [15:39:24] [DEBUG] CMySQLQuery::Execute[] - query was successfully executed within 122.951 milliseconds
    [15:39:24] [DEBUG] CMySQLQuery::Execute[] - no callback specified, skipping result saving
  • format(query,sizeof(query), "INSERT INTO Reports(`Name`,`Grund`) VALUES ('%e', '%e')", ReportSuspect, ReportReason);
    zu:
    mysql_format(mysqlHandle, query,sizeof(query), "INSERT INTO Reports(`Name`,`Grund`) VALUES ('%e', '%e')", ReportSuspect, ReportReason);

  • Das löst es auch nicht.
    Ich hab das mal Geprintet und das kommt bei raus:


    Hab Name und Grund eingegeben...

    Code
    [15:56:11] und
    [15:56:11] und
    [15:56:11] INSERT INTO Reports(`Name`,`Grund`) VALUES ('und', 'und')


    er zeigt mir das ...

  • Ouhh, ich seh's. Du hast das auslesen der PVars im format stehen gehabt.
    So:
    if(dialogid == DIALOG_REPORTSEND)
    {
    if(!response) return SendClientMessage(playerid, -1, "Report nicht abgesendet");
    new ReportSuspect[50], ReportReason[50];
    GetPVarString(playerid, "ReportSus", ReportSuspect,sizeof(ReportSuspect));
    GetPVarString(playerid, "ReportReason", ReportReason,sizeof(ReportReason));
    mysql_format(mysqlHandle, query,sizeof(query), "INSERT INTO Reports(`Name`,`Grund`) VALUES ('%e', '%e')", ReportSuspect, ReportReason);
    mysql_tquery(mysqlHandle, query);
    return 1;
    }

  • Die Reportliste:
    ocmd:reportliste(playerid)
    {
    new query[256];
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,-1,"Du hast kein Admin Level 2");
    format(query, sizeof(query), "SELECT id, name, Bangrund FROM accounts WHERE Status = '0'");
    mysql_tquery(mysqlHandle, query, "OnReportCheck", "d", playerid);
    return 1;
    }


    public OnReportCheck(playerid)
    {
    new rows = cache_get_row_count(), string[512], tmp[32];
    for(new i=0; i < rows; i++)
    {
    cache_get_row(i, 0, tmp);
    format(string, sizeof(string), "%s Name: %s /", string, tmp);
    cache_get_row(i, 1, tmp);
    format(string, sizeof(string), "%s Grund %s /", string, tmp);
    }
    ShowPlayerDialog(playerid, DIALOG_REPORTLISTE, DIALOG_STYLE_MSGBOX, "Reports", string, "Ok","");
    return 1;
    }