MYSQL Ban System

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
  • Ich wollte fragen wie ich das Ban system weiterführen kann,sprich das es beim connect ausgelesen wird ob baned 0 ist oder 1 ist.
    Und wie speicher ich das in meinem System ein allgemein?
    Der Befehl:
    ocmd:ban(playerid,params[])
    {
    new reason[128],string[128];
    new pID;
    if(SpielerInfo[playerid][pAdminlevel] < 2)return SendClientMessage(playerid,Rot,""Turkis"[Info:]"COLW"Möglich ab: Adminrank: 2");
    {
    if(sscanf(params,"us[128]",pID, reason))return SendClientMessage(playerid,Rot,""Turkis"[Info:]"COLW"/ban [playerid] [Grund]");
    {
    new query[100];
    format(query, sizeof(query), "UPDATE `Spieler` SET `baned` = 1 WHERE `Name` = '%s';", pID);
    format(string,sizeof(string), ""Turkis"[ServerMeldung:]"COLW" %s wurde von %s vom Server gebannt. Grund: %s",GetName(pID),GetName(playerid),reason);
    SendClientMessageToAll(0xAF0000FF,string);
    new result = mysql_query(query);
    print(query);
    if(result == 0)
    {
    SendClientMessage(playerid,Rot,"Es ist ein Fehler aufgetreten!!");
    }
    SendClientMessage(playerid,Weiß,""Turkis"Du hast jemanden gebannt");
    }
    }
    return 1;


    }


    Allgemein das Script:
    http://pastebin.com/b3MjJnKP


    Danke für die Hilfe :)

  • format(query, sizeof(query), "UPDATE Spieler SET baned = 1 WHERE Name = '%s';", GetName(pID));
    So erstmal.


    Und dann:
    stock IstSpielerGebannt(playerid)
    {
    new query[128];
    format(query, sizeof(query), "SELECT baned FROM Spieler WHERE Name = '%s';", GetName(playerid)); //Heißt die Spalte wirklich "baned"?
    mysql_query(query);
    mysql_store_result();
    new rows = mysql_num_rows();
    mysql_free_result();
    if(rows > 0) return 1;
    else return 0;
    }


    OnPlayerConnect:
    if(IstSpielerGebannt(playerid))
    {
    //Spieler ist gebannt...
    //Hier was machen.
    }


  • Jetzt wird der Spieler gekickt,obwohl der Wert auf 0 steht

  • Schalte den MySQL Debug Modus ein und poste was im server_log steht. Dann können wir nachvollziehen was da schief geht.


    SA-MP Dedicated Server
    ----------------------
    v0.3z-R2, (C)2005-2014 SA-MP Team


    [20:56:49] filterscripts = "" (string)
    [20:56:49]
    [20:56:49] Server Plugins
    [20:56:49] --------------
    [20:56:49] Loading plugin: sscanf
    [20:56:49]


    [20:56:49] ===============================


    [20:56:49] sscanf plugin loaded.


    [20:56:49] Version: 2.8.1


    [20:56:49] (c) 2012 Alex "Y_Less" Cole


    [20:56:49] ===============================


    [20:56:49] Loaded.
    [20:56:49] Loading plugin: mysql
    [20:56:49]


    > MySQL plugin R5 successfully loaded.


    [20:56:49] Loaded.
    [20:56:49] Loading plugin: nativechecker
    [20:56:49] Loaded.
    [20:56:49] Loaded 3 plugins.


    [20:56:49]
    [20:56:49] Filterscripts
    [20:56:49] ---------------
    [20:56:49] Loaded 0 filterscripts.


    [20:56:49] <-| [MYSQL] Verbindung zur Datenbank wurde erfolgreich hergestellt!
    [20:56:49] *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
    [20:56:49] {00FFFA}[pR]Planet Reallife <> wurde erfolgreich Geladen <>
    [20:56:49]
    [20:56:49] Skripter: xsL33p
    [20:56:49] Mapper : xsL33p
    [20:56:49] Version : 0.1
    [20:56:49]
    [20:56:49] Dieses Skript ist ein einzigartiges Selfmade!
    [20:56:49] Viel Spaß beim spielen!
    [20:56:49] *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
    [20:56:49] Number of vehicle models: 0


    MYSQL LOG:
    [20:56:49]


    [20:56:49] ---------------------------


    [20:56:49] MySQL Debugging activated (05/14/14)


    [20:56:49] ---------------------------


    [20:56:49]

  • [21:33:26] ---------------------------


    [21:33:26] MySQL Debugging activated (05/14/14)


    [21:33:26] ---------------------------


    [21:33:26]


    [21:33:45] >> mysql_query( Connection handle: 1 )


    [21:33:45] CMySQLHandler::Query(SELECT baned FROM Spieler WHERE Name = 'xsL33p';) - Successfully executed.


    [21:33:45] >> mysql_store_result( Connection handle: 1 )


    [21:33:45] CMySQLHandler::StoreResult() - Result was stored.


    [21:33:45] >> mysql_num_rows( Connection handle: 1 )


    [21:33:45] CMySQLHandler::NumRows() - Returned 1 row(s)


    [21:33:45] >> mysql_free_result( Connection handle: 1 )


    [21:33:45] CMySQLHandler::FreeResult() - Result was successfully free'd.


    [21:33:46] >> mysql_real_escape_string( Connection handle: 1 )


    [21:33:46] CMySQLHandler::EscapeString(); - Escaped 0 characters to .


    [21:33:46] >> mysql_query( Connection handle: 1 )


    [21:33:46] CMySQLHandler::Query(SELECT * FROM Spieler WHERE Name = '') - Successfully executed.


    [21:33:46] >> mysql_store_result( Connection handle: 1 )


    [21:33:46] CMySQLHandler::StoreResult() - Result was stored.


    [21:33:46] >> mysql_num_rows( Connection handle: 1 )


    [21:33:46] CMySQLHandler::NumRows() - Returned 0 row(s)


    [21:33:46] >> mysql_free_result( Connection handle: 1 )


    [21:33:46] CMySQLHandler::FreeResult() - Result was successfully free'd.

  • Ahh, ich entschuldige mich. Das war mein Fehler, ich habe eine Abfrage vergessen.


    stock IstSpielerGebannt(playerid)
    {
    new query[128];
    format(query, sizeof(query), "SELECT baned FROM Spieler WHERE Name = '%s' AND baned = '1';", GetName(playerid)); //Heißt die Spalte wirklich "baned"?
    mysql_query(query);
    mysql_store_result();
    new rows = mysql_num_rows();
    mysql_free_result();
    if(rows > 0) return 1;
    else return 0;
    }
    So sollte es passen.

  • stock IstSpielerGebannt(playerid)
    {
    new query[128],ergebnis;
    format(query, sizeof(query), "SELECT baned FROM Spieler WHERE Name = '%s';", GetName(playerid));
    mysql_query(query);
    mysql_store_result();
    ergebnis = mysql_fetch_int();
    mysql_free_result();
    return ergebnis;
    }

  • stock IstSpielerGebannt(playerid)
    {
    new Query[128],Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    mysql_real_escape_string(Name, Name);
    format(Query, sizeof(Query), "SELECT Baned FROM Spieler WHERE Name = '%s'", Name);
    mysql_query(Query);
    mysql_store_result();
    return mysql_num_rows();
    }


    Und mann muss wenn man einen wert eintragen möchte immer, ein '' dabei haben
    ;)


    z.b


    format(query, sizeof(query), "UPDATE Spieler SET baned = 1 WHERE Name = '%s';", GetName(pID));


    Muss zu:


    format(query, sizeof(query), "UPDATE Spieler SET `baned` = '1' WHERE Name = '%s';", GetName(pID));


    Ich hoffe ich konnte helfen :love:

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