Unban Problem und MySQL Disconnecten

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


    Ich habe ein problem bei meinem UnBan-System, undzwar wird, wenn ich den Befehl für einen User alle Angaben auf 0 gesetzt, sprich Passwort, Fraktion, etc. und der Server schmiert ab.


    Befehl:


    dcmd_unban(playerid, params[])
    {
    new string[256];
    new baname;
    if(sscanf(params, "s", baname))return SendClientMessage(playerid, COLOR_GREY, "Info: /unban [SpielerName] ( Muss GENAU übereinstimmen )");
    else
    {
    if(PlayerInfo[playerid][pAdmin] >= 6)
    {
    new acc[64], year, month, day;
    new string3[32];
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, sizeof(pname));
    format(acc,sizeof(acc),"/User/%s.cer",baname);
    if(!fexist(acc))
    {
    format(string,sizeof(string),"Der Account von %s existiert nicht!",baname);
    SendClientMessage(playerid,COLOR_GRAD2,string);
    return 1;
    }
    if(fexist(acc))
    {
    new var[32];
    new File: hFile = fopen(string3, io_append);
    format(var, 32, "Gebannt=0\n",PlayerInfo[baname][pBan]); fwrite(hFile, var);
    fclose(hFile);
    getdate(year, month, day);
    format(string, sizeof(string), "[WARNUNG]: %s's Account wurde von %s entbannt! (%d-%d-%d)",baname,pname,month,day,year);
    BanLog(string);
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist kein Admin");
    }
    }
    return 1;
    }


    Dann noch eine 2.Frage.
    Unzwar, wie disconnecte ich von einem MySQL Server ?
    Ich connecte unter OnGameModeInit mit


    new MySQL:connection = mysql_init(LOG_ONLY_ERRORS, 1);
    mysql_connect("localhost", "***", "***", "****", connection, 1);


    Und disconnecte unter OngameModeExit mit


    new MySQL:connection = mysql_init(LOG_ONLY_ERRORS, 1);
    mysql_close(connection);
    Dennoch wird die verbindung nicht getrennt.


    MfG

    [align=center]


  • Zu 2.:
    new MySQL:connection;
    Als globale Variable erstellen.
    Dann unter OnGameModeInit
    connection = mysql_init(LOG_ONLY_ERRORS, 1);
    mysql_connect("localhost", "***", "***", "****", connection, 1);
    Und unter OnGameModeExit
    mysql_close(connection);

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Klar.



    if(sscanf(params, "s", baname))return SendClientMessage(playerid, COLOR_GREY, "Info: /unban [SpielerName] ( Muss GENAU übereinstimmen )");
    else


    Das darfst du nicht.
    Das 1. ist ein Single-If Statement.
    Dann versuchst du mit else anzuknüpfen.


    Der Compiler meckert nicht, weil es ja für ihn kein Syntax Fehler ist.
    Beim ASM-Parsing wirds dann natürlich durch den Crash spürbar.
    Einfach das Else-Statement weglassen - Eine Function wird nach einem Return nicht mehr weiter ausgefürt.


    Ach und Tipp: Verwende bei scanf statt "s" ein "u" - Dann lässt du beim Input auch die PlayerID zu.

  • Ich habe nun
    dcmd_unban(playerid, params[])
    {
    new string[256];
    new baname;
    if(sscanf(params, "s", baname))return SendClientMessage(playerid, COLOR_GREY, "Info: /unban [SpielerName] ( Muss GENAU übereinstimmen )");
    {
    if(PlayerInfo[playerid][pAdmin] >= 6)
    {
    new acc[64], year, month, day;
    new string3[32];
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, sizeof(pname));
    format(acc,sizeof(acc),"/User/%s.cer",baname);
    if(!fexist(acc))
    {
    format(string,sizeof(string),"Der Account von %s existiert nicht!",baname);
    SendClientMessage(playerid,COLOR_GRAD2,string);
    return 1;
    }
    if(fexist(acc))
    {
    new var[32];
    new File: hFile = fopen(string3, io_append);
    format(var, 32, "Gebannt=0\n",PlayerInfo[baname][pBan]); fwrite(hFile, var);
    fclose(hFile);
    getdate(year, month, day);
    format(string, sizeof(string), "[WARNUNG]: %s's Account wurde von %s entbannt! (%d-%d-%d)",baname,pname,month,day,year);
    BanLog(string);
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist kein Admin");
    }
    }
    return 1;
    }


    MfG

    [align=center]