[Suche]Ban + Unban

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 leute, ich suche einen Ban befehl, dort sollte folgendes sein.


    BanP = Admin der den Spieler gebannt hat.
    BanG = Der bann Grund


    Dies sollte auf ocmd basieren.


    Ich habe schon geschaut ob es ein Tutorial dazu gibt, leider ohne erfolg. Ich hoffe
    das mir hier jemand Helfen kann.


    MfG: Eddy


    [E]Fehler
    Rechtschreibung

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Willst du denn Ban speichern?


    Wenn ja, wie willst du ihn speichern? (MYSQL, Dini, SQLITE)


    Wie sehen deine Variablen dafür aus?

  • /ban Befehl


    if(strcmp(cmd, "/ban", true) == 0)
    {
    new string[128];
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "FEHLER: /ban [playerid] [grund].");
    return true;
    }
    new giveplayerid;
    new sendername[MAX_PLAYER_NAME];
    new giveplayer[MAX_PLAYER_NAME];
    new stringus[128];
    new stringtext[128];
    giveplayerid = ReturnUser(tmp);
    if(SpielerInfo[playerid][Adminlevel] >= 1)
    {
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "FEHLER: /ban [playerid] [grund].");
    return true;
    }
    if(SpielerInfo[giveplayerid][Adminlevel] > SpielerInfo[playerid][Adminlevel])
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du kannst diesen Spieler nicht bannen, da er ein höheres Adminlevel hat als du!");
    return true;
    }
    //format(string, sizeof(string), "AdmCmd: %s wurde von %s gebannt, Grund: %s (%d-%d-%d).", giveplayer, sendername, (result),month,day,year);
    format(string, sizeof(string), "AdmCmd: %s wurde von %s gebannt, Grund: %s.", giveplayer, sendername, (result));
    SendClientMessageToAll(COLOR_LIGHTRED, string);
    SpielerInfo[giveplayerid][Banned] = 1;
    }
    }//not connected
    }
    else
    {
    format(string, sizeof(string), " %d ist kein aktiver Spieler.", giveplayerid);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    }
    }
    return true;
    }


    /unban


    ocmd:unban(playerid,params[])
    {
    new string[128], console[128], Spielerdatei[128], name[MAX_PLAYER_NAME];
    if(SpielerInfo[playerid][Adminlevel] < 3)
    {
    return SendClientMessage(playerid,COLOR_GRAD2,"Info: Du bist kein Admin!");
    }
    if(sscanf(params,"s[32]",name))
    {
    return SendClientMessage(playerid,COLOR_GRAD2,"FEHLER: /unban [Name]");
    }
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
    if(dini_Exists(Spielerdatei))
    {
    if(dini_Int(Spielerdatei,"Banned") == 0)
    {
    SendClientMessage(playerid,COLOR_GRAD2,"Dieser Spieler ist nicht gebannt.");
    }
    else
    {
    format(string,sizeof(string),"Info: Spieler %s wurde von Admin %s entbannt.",name,SpielerName(playerid));
    format(console,sizeof(console),"Info: Spieler %s wurde von Admin %s entbannt.\n",name,SpielerName(playerid));
    SendAdminMessage(COLOR_LIGHTBLUE,string);
    dini_IntSet(Spielerdatei,"Banned", 0);
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAD2,"Diesen Spieler gibt es nicht.");
    }
    return 1;
    }


    Müsstest du deinem System natürlich anpassen...

    05eb03de-9fda-461c-9dfc-834ae5b64e65.png << Server | Home >> 13462590508.png

  • Willst du denn Ban speichern?


    Wenn ja, wie willst du ihn speichern? (MYSQL, Dini, SQLITE)


    Wie sehen deine Variablen dafür aus?


    Ja ich möchte ihn Speichern, Dini oben steht doch PVar´s.


    @dester


    Danke werde ich Testen.

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Ungetestet sollte aber funktionieren:


    /ban
    ocmd:ban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Admin!");
    new pID, reason[128],string[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,WEISS,"/ban [ID] [Grund]");
    format(string,sizeof(string)," * AdmCmd: %s wurde von %s gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(ROT,string);
    SetPVarInt(pID,"Baned",1);
    Kick(pID);
    FreezePlayer(pID);
    return 1;
    }


    /unban

    ocmd:unban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Admin!");
    new pID,string[128],string2[128];
    if(sscanf(params,"s",pID)) return SendClientMessage(playerid,WEISS,"/unban [Name]");
    format(string,sizeof(string),"/benutzer/%s.ini",pID);
    dini_IntSet(string,"Banned",0);
    dini_Set(string,"BanG","");
    format(string2,128," * AdmCmd: %s wurde von %s erfolgreich entbannt.",SpielerName(pID),SpielerName(playerid));
    SendClientMessage(playerid,ROT,string2);
    return 1;
    }


  • /ban mit OCMD

  • Irgentwie wird der Spieler nicht Gebannt, egal welchen Ban befehl ich von hier nehmen. In der Spielerdatei steht nur Gebannt=0 und ich kann auf den Server Joinen. 8|

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Mein BAN CMD:



    if(strcmp(cmd, "/ban", true) == 0)
    {
    new reason[128];
    if (AccountInfo[playerid][AdminLevel] >= 2 || IsPlayerAdmin(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendLanguageMessage(playerid, ORANGE, "BENUTZE: /ban [Name/ID] [Grund]","USAGE: /ban [name/id] [reason]");
    return true;
    }


    new giveplayerid = ReturnUser(tmp);
    new giveplayername[MAX_PLAYER_NAME];
    new playername[MAX_PLAYER_NAME];
    if (AccountInfo[giveplayerid][AdminLevel] > AccountInfo[playerid][AdminLevel])
    {
    format(string, sizeof(string), "INFO: [%i]%s hat versucht dich zu bannen.",playerid,playername);
    format(string2, sizeof(string2), "INFO: [%i]%s has tried to ban you.",playerid,playername);
    SendLanguageMessage(giveplayerid, ABLAU,string,string2);
    SendLanguageMessage(playerid, ABLAU, "ADMIN: FEHLER: Du bist nicht berechtigt einen Admin mit höherem Level zu bannen!","ADMIN: ERROR: You aren't authorized to ban an admin with a higher level than yours!");
    }


    else if (giveplayerid != INVALID_PLAYER_ID)
    {
    GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
    GetPlayerName(playerid, playername, sizeof(playername));
    reason = bigstrtok(cmdtext, idx);
    if(!strlen(reason)) return SendLanguageMessage(playerid, ORANGE, "BENUTZE: /ban [Name/ID] [Grund]","USAGE: /ban [name/id] [reason]");
    new ip[20];
    printf("ADMIN: Admin %s bannte %s. Grund: %s", playername, giveplayername, reason);
    format(string, sizeof(string), "ADMIN: Admin %s hat %s gebannt. [Grund: %s ]", playername, giveplayername, reason);
    format(string2, sizeof(string2), "ADMIN: Admin %s has banned %s. [reason: %s ]", playername, giveplayername, reason);
    SendLanguageMessageToAll(ABLAU, string,string2);
    #if defined IRC
    format(string,sizeof(string), "5ADMIN: Admin %s has banned %s. [reason: %s ]", playername, giveplayername, reason);
    IrcSay(string);
    #endif
    GetPlayerIp(giveplayerid, ip, sizeof(ip));
    format(string, sizeof(string), "Gebannnte IP: %s", ip);
    format(string2, sizeof(string2), "Banned IP: %s", ip);
    SendLanguageMessageToAdmins(ABLAU, string,string2, 1);
    AccountInfo[giveplayerid][AdminLevel] = 0;
    format(reason, sizeof reason, "[%s]%s", playername, reason);
    BanEx(giveplayerid, reason);
    KickLog(string);
    }
    else if(giveplayerid == INVALID_PLAYER_ID)
    {
    format(string, sizeof(string), "FEHLER: %i ist kein aktiver Spieler.", giveplayerid);
    format(string2, sizeof(string2), "ERROR: %i isn't an active player.", giveplayerid);
    SendLanguageMessage(playerid, ROT, string,string2);
    }
    }
    else SendLanguageMessage(playerid, ROT, "FEHLER: Du bist nicht berechtigt diesen Befehl zu benutzen!","ERROR: You aren't authorized to use this command!");
    return true;
    }




    Wie kann ich machen, wenn der User gebannt wird das der Grund & Der Admin der den User gebannt hat beim Nächsten Server aufruf / Login angezeigt & gespeichert wird?
    Z.b Du wurdest am DATUM um Uhrzeit vom Admin NAME Gebannt, Grund: GRUND

  • @ZarneXxX.


    Das möchte ich auch wissen, ich habe es leider noch nicht geschafft. Ich hoffe das mir jemand Helfen kann. Ich habe die Befehle von



    TheT0asTy
    wie kann ich jetzt denn Admin der den Spieler Gebannt hat und den Grund in der User.ini abspeichern und auslesen?

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward