MySQL Ban System Problem

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
  • Letztendlich würde ich aber trotzdem gerne wissen wieso er es erst speichert und in der Speicherung wieder überschreibt.

    Code
    [21:46:18] CMySQLHandler::Query(UPDATE `accounts` SET `Ausfuehrender`='Excuse',`Grund` = 'Healhacker' WHERE `Name`='Excuse') - Successfully executed.
    [21:46:18] >> mysql_query( Connection handle: 1 )
    [21:46:18] CMySQLHandler::Query(UPDATE `accounts` SET `Gebannt` = '1',`Ausfuehrender` = '',`Grund` = '' WHERE Name='Excuse') - Successfully executed.
    [21:46:18] >> mysql_query( Connection handle: 1 )
    [21:46:18] CMySQLHandler::Query(UPDATE `accounts` SET `Gebannt` = '1',`Ausfuehrender` = '',`Grund` = '' WHERE Name='Excuse') - Successfully executed.
    [21:46:18] >> mysql_query( Connection handle: 1 )
    [21:46:18] CMySQLHandler::Query(UPDATE `accounts` SET `Online`='0',`Datum` = '14.03.2014' WHERE `Name`='Excuse') - Successfully executed.
  • Hier im Ban Befehl, da geht das ja auch.
    new query[128];
    format(query,128,"UPDATE `accounts` SET `Ausfuehrender`='%s',`Grund` = '%s' WHERE `Name`='%s'",SpielerInfo[pID][pName],reason,SpielerInfo[pID][pName]);
    mysql_query(query);


    Dann kommt letztendlich nur noch die normale SavePlayer Funktion.
    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new query[800];
    format(query, sizeof(query), "UPDATE `accounts` SET `Level` = '%d',`Adminlevel` = '%d',`Online` = '%d',`Datum` = '%s',`Geschlecht` = '%i',`Alter` = '%i',`Skin` = '%i',`Fraktion` = '%i',`Fraktionsrang` = '%i',`Leader` = '%i',`MuteZeit` = '%i',`Gemutet` = '%i' WHERE Name='%s'",
    SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pAdminlevel],SpielerInfo[playerid][pOnline],SpielerInfo[playerid][pDatum],SpielerInfo[playerid][pGeschlecht],SpielerInfo[playerid][pAlter],GetPlayerSkin(playerid),SpielerInfo[playerid][pFraktion],SpielerInfo[playerid][pFraktionsrang],SpielerInfo[playerid][pLeader],SpielerInfo[playerid][pMuteZeit],SpielerInfo[playerid][pGemutet],SpielerInfo[playerid][pName]);
    format(query, sizeof(query), "UPDATE `accounts` SET `Gebannt` = '%i',`Ausfuehrender` = '%s',`Grund` = '%s' WHERE Name='%s'",
    SpielerInfo[playerid][pGebannt],SpielerInfo[playerid][pAusfuehrender],SpielerInfo[playerid][pGrund],SpielerInfo[playerid][pName]);
    mysql_query(query);
    printf(query);
    }
    }
    return 1;
    }

  • stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new query[800];
    format(query, sizeof(query), "UPDATE `accounts` SET `Level` = '%d',`Adminlevel` = '%d',`Online` = '%d',`Datum` = '%s',`Geschlecht` = '%i',`Alter` = '%i',`Skin` = '%i',`Fraktion` = '%i',`Fraktionsrang` = '%i',`Leader` = '%i',`MuteZeit` = '%i',`Gemutet` = '%i' WHERE Name='%s'",
    SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pAdminlevel],SpielerInfo[playerid][pOnline],SpielerInfo[playerid][pDatum],SpielerInfo[playerid][pGeschlecht],SpielerInfo[playerid][pAlter],GetPlayerSkin(playerid),SpielerInfo[playerid][pFraktion],SpielerInfo[playerid][pFraktionsrang],SpielerInfo[playerid][pLeader],SpielerInfo[playerid][pMuteZeit],SpielerInfo[playerid][pGemutet],SpielerInfo[playerid][pName]);
    format(query, sizeof(query), "UPDATE `accounts` SET `Gebannt` = '%i',`Ausfuehrender` = '%s',`Grund` = '%s' WHERE Name='%s'",
    SpielerInfo[playerid][pGebannt],SpielerInfo[playerid][pAusfuehrender],SpielerInfo[playerid][pGrund],SpielerInfo[playerid][pName]);
    mysql_query(query);
    printf(query);
    }
    }
    return 1;
    }


    zu


    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new query[800];
    format(query, sizeof(query), "UPDATE `accounts` SET `Level` = '%d',`Adminlevel` = '%d',`Online` = '%d',`Datum` = '%s',`Geschlecht` = '%i',`Alter` = '%i',`Skin` = '%i',`Fraktion` = '%i',`Fraktionsrang` = '%i',`Leader` = '%i',`MuteZeit` = '%i',`Gemutet` = '%i' WHERE Name='%s'",
    SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pAdminlevel],SpielerInfo[playerid][pOnline],SpielerInfo[playerid][pDatum],SpielerInfo[playerid][pGeschlecht],SpielerInfo[playerid][pAlter],GetPlayerSkin(playerid),SpielerInfo[playerid][pFraktion],SpielerInfo[playerid][pFraktionsrang],SpielerInfo[playerid][pLeader],SpielerInfo[playerid][pMuteZeit],SpielerInfo[playerid][pGemutet],SpielerInfo[playerid][pName]);
    mysql_query(query);
    format(query, sizeof(query), "UPDATE `accounts` SET `Gebannt` = '%i',`Ausfuehrender` = '%s',`Grund` = '%s' WHERE Name='%s'",
    SpielerInfo[playerid][pGebannt],SpielerInfo[playerid][pAusfuehrender],SpielerInfo[playerid][pGrund],SpielerInfo[playerid][pName]);
    mysql_query(query);
    printf(query);
    }
    }
    return 1;
    }

  • Zeigt trotzdem kein Mucks.
    [23:22:43] CMySQLHandler::Query(UPDATE `accounts` SET `Level` = '1',`Adminlevel` = '4',`Online` = '0',`Datum` = '',`Geschlecht` = '1',`Alter` = '16',`Skin` = '2',`Fraktion` = '0',`Fraktionsrang` = '0',`Leader` = '0',`MuteZeit` = '0',`Gemutet` = '0' WHERE Name='Excuse') - Successfully executed.
    [23:22:43] >> mysql_query( Connection handle: 1 )
    [23:22:43] CMySQLHandler::Query(UPDATE `accounts` SET `Gebannt` = '1',`Ausfuehrender` = '',`Grund` = '' WHERE Name='Excuse') - Successfully executed.
    [23:22:43] >> mysql_query( Connection handle: 1 )

  • stock mysql_GetString(Table[], Field[], Where[], Is[])
    {
    new query[128], Get[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    mysql_free_result();
    return Get;
    }

  • new string[128];
    format(string,sizeof(string),"Dieser Account ist gesperrt, mit ihm kann nicht mehr gespielt werden.\n\nAusführendes Team-Mitglied: %s\nGrund: %s\nDauer: Permanent",SpielerInfo[playerid][pAusfuehrender],SpielerInfo[playerid][pGrund]);
    ShowPlayerDialog(playerid,DIALOG_GEBANNT,DIALOG_STYLE_MSGBOX,"{00AFFF}"#SERVERNAME"{FFFFFF}: Information",string,"Verlassen","");

    Da ist schon mal ein Fehler und zwar die Größe des Strings das sind 152 Zeichen oder so und du hast nur 128 angegeben. Dieses Problem hatte ich heute auch schon 2x. :thumbup:

    Mit freundlichen Grüßen,
    Derakar

  • Zeigt trotzdem kein Mucks.
    [23:22:43] CMySQLHandler::Query(UPDATE `accounts` SET `Level` = '1',`Adminlevel` = '4',`Online` = '0',`Datum` = '',`Geschlecht` = '1',`Alter` = '16',`Skin` = '2',`Fraktion` = '0',`Fraktionsrang` = '0',`Leader` = '0',`MuteZeit` = '0',`Gemutet` = '0' WHERE Name='Excuse') - Successfully executed.
    [23:22:43] >> mysql_query( Connection handle: 1 )
    [23:22:43] CMySQLHandler::Query(UPDATE `accounts` SET `Gebannt` = '1',`Ausfuehrender` = '',`Grund` = '' WHERE Name='Excuse') - Successfully executed.
    [23:22:43] >> mysql_query( Connection handle: 1 )


    Wieso wir das hier den immer wieder überschrieben, obwohl es richtig gesetzt ist? :thumbdown:

  • Gut danke funktioniert, jetzt habe ich nur noch ein Problem mit der Abfrage.
    new string[128];
    format(string,sizeof(string),"Dieser Account ist gesperrt, mit ihm kann nicht mehr gespielt werden.\n\nAusführendes Team-Mitglied: %s\nGrund: %s\nDauer: Permanent",SpielerInfo[playerid][pAusfuehrender],SpielerInfo[playerid][pGrund]);
    ShowPlayerDialog(playerid,DIALOG_GEBANNT,DIALOG_STYLE_MSGBOX,"{00AFFF}"#SERVERNAME"{FFFFFF}: Information",string,"Verlassen","");
    SetTimerEx("KickDelayed",100,0,"i",playerid);


    Die beiden Zeilen die einen Wert wiedergeben sollen, bleiben leer.

  • Letztendlich hier nur in der Funktion, woanders wird das nicht geladen.
    SpielerInfo[playerid][pAusfuehrender],SpielerInfo[playerid][pGrund]


    Hier noch die 2 Variablen von Enum
    pAusfuehrender[30],
    pGrund[40]


    sowie die LoadPlayer Funktion
    mysql_fetch_field_row(data,"Ausfuehrender");
    SpielerInfo[playerid][pAusfuehrender]=strval(data);
    mysql_fetch_field_row(data,"Grund");
    SpielerInfo[playerid][pGrund]=strval(data);

  • strval = string(Text) zum Integer(Zahl) konvertieren
    Dann ist wohl klar das dass nicht Hinhauen kann, dass musst du mit einem Format machen.

    mysql_fetch_field_row(data,"Ausfuehrender");
    format(SpielerInfo[playerid][pAusfuehrender],30,"%s",data):
    mysql_fetch_field_row(data,"Grund");
    format(SpielerInfo[playerid][pGrund],40,"%s",data);


    /e
    Kurzen fehler ausgebessert.

  • Jetzt kommt der Ban Dialog aber nicht, obwohl Gebannt auf 1 steht.
    public OnPlayerRequestClass(playerid, classid)
    {
    if(SpielerInfo[playerid][pGebannt] == 0)
    {
    if(mysql_CheckAccount(playerid) == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Registrierung","Willkommen auf "#SERVERNAME"\n\nEs wurde kein Account in der Datenbank gefunden, bitte gebe nun dein gewünschtes Passwort ein.\nSolltest du dein Passwort vergessen haben, melde dich bei einem Head Administrator.","Registrieren","Abbrechen");
    InterpolateCameraPos(playerid, 1327.365844, -1589.601684, 83.515167, 2475.331787, -1668.155273, 41.523700, 28000);
    InterpolateCameraLookAt(playerid, 1332.219238, -1589.629394, 82.313415, 2478.929199, -1668.136474, 38.051193, 3000);
    SetPlayerColor(playerid,COLOR_GRAU);
    }
    else if(mysql_CheckAccount(playerid) == 1)
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"{00AFFF}"#SERVERNAME" {FFFFFF}- Login","Willkommen auf "#SERVERNAME"\n\nDein Account wurde in der Datenbank gefunden, bitte gebe nun dein Passwort ein.\nSolltest du dein Passwort vergessen haben, melde dich bei einem Head Administrator.","Login","Abbrechen");
    InterpolateCameraPos(playerid, 1327.365844, -1589.601684, 83.515167, 2475.331787, -1668.155273, 41.523700, 28000);
    InterpolateCameraLookAt(playerid, 1332.219238, -1589.629394, 82.313415, 2478.929199, -1668.136474, 38.051193, 3000);
    SetPlayerColor(playerid,COLOR_GRAU);
    }
    }
    else
    {
    new string[128];
    format(string,sizeof(string),"Dieser Account ist gesperrt, mit ihm kann nicht mehr gespielt werden.\n\nAusführendes Team-Mitglied: %s\nGrund: %s\nDauer: Permanent",SpielerInfo[playerid][pAusfuehrender],SpielerInfo[playerid][pGrund]);
    ShowPlayerDialog(playerid,DIALOG_GEBANNT,DIALOG_STYLE_MSGBOX,"{00AFFF}"#SERVERNAME"{FFFFFF}: Information",string,"Verlassen","");
    SetTimerEx("KickDelayed",100,0,"i",playerid);
    }
    return 1;
    }