Hilfe bei Unban Befehl

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
  • Liebe Helfer,


    ich möchte nun gerne ein unban Befehl erstellen. Leider habe ich dabei noch einige Probleme.
    Sobald ich den Befehl eingebe heißt es unknown command. Was könnte mein Fehler sein ?




    ocmd:unban(playerid,params[])
    {
    if(PlayerInfo[playerid][adminlevel] < 1)return SendClientMessage(playerid,COLOR_RED,"Du darfst dieses Befehl nicht verwenden.");
    new pID,Name[MAX_PLAYER_NAME],kName[MAX_PLAYER_NAME],reason[100],string[150];
    GetPlayerName(playerid,Name, sizeof(Name));
    GetPlayerName(pID,kName, sizeof(kName));
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,COLOR_RED,"FEHLER: /kick [playerid] [Grund]");
    format(string, sizeof(string),"%s wurde von %s gekickt. Grund %s.",kName, Name,reason);
    SendClientMessage(0x00489184,handle,string);
    getdate(jahr,monat,tag);
    mysql_format(handle,string,sizeof(string),"UPDATE `users` SET `banned`=1 WHERE `name`='%s' LIMIT 1;",PlayerInfo[p_id][pName]);
    mysql_pquery(handle,string);
    PlayerInfo[pID][banned] = 1;
    return 1;
    }

  • Zuallererst


    SendClientMessage(0x00489184,handle,string);


    zu


    SendClientMessageToAll(0x00489184, string);


    Außedem gibst du string in deinem mysql_format an, welcher mit der Kick Meldung gefüllt ist.
    Nutz am besten query (new query[256];)

  • Außedem gibst du string in deinem mysql_format an, welcher mit der Kick Meldung gefüllt ist.
    Nutz am besten query (new query[256];)

    Wie meinst du das ?



    mysql_format(handle,string,sizeof(string),"UPDATE `users` SET `banned`=0 WHERE `name`='%s' LIMIT 1;",PlayerInfo[p_id][pName]);


    soll doch in users name die banned wieder auf 0 setzen

  • Beitrag von varrez ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: falsch ().
  • SendClientMessage(0x00489184,handle,string);



    Hier ist dein Fehler.
    Bitte schau dir nochmal den Syntax von SendClientMessage im Wiki an.
    Dann kommst du bestimmt selber auf deinen Fehler.

  • SendClientMessage(0x00489184,handle,string);


    Hier ist dein Fehler.
    Bitte schau dir nochmal den Syntax von SendClientMessage im Wiki an.
    Dann kommst du bestimmt selber auf deinen Fehler.

    Versteh ich nicht so ganz. varrez hat mir doch schon gesagt das SendClientMessage falsch ist und eine ergänzung mir genannt.
    Das ist aber nicht das problem

  • Er gibt ja leider nichts außer den Wert (null) aus vielleicht habe ich auch was im code falsch gemacht. Hier einmal der Code



    ocmd:unne(playerid,params[])
    {
    if(PlayerInfo[playerid][adminlevel] < 1)return SendClientMessage(playerid,COLOR_RED,"Du darfst dieses Befehl nicht verwenden.");
    new pID,Name[MAX_PLAYER_NAME],kName[MAX_PLAYER_NAME],reason[100],string1[150];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,COLOR_RED,"FEHLER: /kick [playerid] [Grund]");
    format(string1, sizeof(string1),"%s wurde von %s entbannt. Grund %s.",kName, Name,reason);
    print("");
    SendClientMessageToAll(0x00489184, string1);
    mysql_format(handle,string1,sizeof(string1),"UPDATE `users` SET `banned`=0 WHERE `name`='%s' LIMIT 1;",PlayerInfo[p_id][pName]);
    mysql_pquery(handle,string1);
    PlayerInfo[pID][banned] = 1;
    _Kick(pID);
    return 1;
    }

  • Achso.
    printf(string1);
    Und dann unter Zeile 10 einfügen.

    mysql_format sorgt dafür das der String nur noch für Mysql benutzbar ist, printen geht also erst wenn er nur format nutzt.
    Ich denke nicht das es am Query liegt, sondern eher an _Kick(pID), zeig uns mal den Code dieser Funktion oder nutze einfach Kick(pID);

  • [20:37:08] [ERROR] mysql_format - no value for specifier "%d" available

    Hat nichts mit dem Unban Befehl zutun, denn in dem Query wird kein Integer genutzt.



    Okay, hab den Fehler glaube ich:


    Code
    mysql_format(handle,string1,sizeof(string1),"UPDATE `users` SET `banned`=0 WHERE `name`='%s' LIMIT 1;",PlayerInfo[p_id][pName]);

    p_id ist vermutlich aus deinem PlayerInfo enum, du musst hier aber pID nutzen, wie bei _Kick(pID);


    Nochwas:
    Du hast ja in deinem enum pName, wieso nutzt du denn dann nochmal GetPlayerName?

  • mysql_format sorgt dafür das der String nur noch für Mysql benutzbar ist, printen geht also erst wenn er nur format nutzt.Ich denke nicht das es am Query liegt, sondern eher an _Kick(pID), zeig uns mal den Code dieser Funktion oder nutze einfach Kick(pID);


    Okay nun macht er zumind mehr aber nicht das was ich will. Ich sage ihn Jag_Simpsons soll entbannt werden. Ich selber nutze den Account Jay_Simpsons dafür. Er entbannt mir also in dem Fall leider nun Jay_Simpsons und nicht wie gewollt Jag_Simpsons

  • Ich poste dann mal meine ganze Banreihe. Ist für den einen oder anderen vielleicht auch besser da auch ein Offline Ban mit enthalten ist.



    ocmd:ban(playerid,params[])
    {
    if(PlayerInfo[playerid][adminlevel] < 1)return SendClientMessage(playerid,COLOR_RED,"Du darfst dieses Befehl nicht verwenden.");
    new pID,Name[MAX_PLAYER_NAME],kName[MAX_PLAYER_NAME],reason[100],string1[150];
    GetPlayerName(playerid,Name, sizeof(Name));
    GetPlayerName(pID,kName, sizeof(kName));
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,COLOR_RED,"FEHLER: /kick [playerid] [Grund]");
    format(string1, sizeof(string1),"%s wurde von %s gebannt. Grund %s.",kName, Name,reason);
    SendClientMessageToAll(Adminfarbe,string1);
    getdate(jahr,monat,tag);
    mysql_format(handle,string1,sizeof(string1),"UPDATE `users` SET `banned`=1 WHERE `name`='%s' LIMIT 1;",PlayerInfo[p_id][pName]);
    mysql_pquery(handle,string1);
    PlayerInfo[pID][banned] = 1;
    _Kick(pID);
    return 1;
    }


    ocmd:offban(playerid,params[])
    {
    if(PlayerInfo[playerid][adminlevel] < 1)return SendClientMessage(playerid,COLOR_RED,"Du darfst dieses Befehl nicht verwenden.");
    {
    new name[128],query[128],string[128],pID;
    if(sscanf(params,"s",name))return SendClientMessage(playerid,COLOR_RED,"Info: /offban[SpielerName] versuche es erneut.");
    {


    format(query,sizeof(query),"UPDATE `users` SET `banned` = '1' WHERE `name` = '%s' AND `banned` = 0 LIMIT 1 ",name);
    mysql_function_query(handle,query,false,"","");
    format(string,sizeof(string),"Der Spieler %s wurde von %s gebannt!",name,SpielerName(pID));
    SendClientMessageToAll(Adminfarbe,string);
    //hier alle namen abrufen die eingegeben wurden=1 name
    return 1;
    }
    }


    }


    ocmd:unban(playerid,params[])
    {
    if(PlayerInfo[playerid][adminlevel] < 1)return SendClientMessage(playerid,COLOR_RED,"Du darfst dieses Befehl nicht verwenden.");
    {
    new name[128],query[128],string[128],pID;
    if(sscanf(params,"s",name))return SendClientMessage(playerid,COLOR_RED,"Info: /unban [SpielerName] versuche es erneut.");
    {


    format(query,sizeof(query),"UPDATE `users` SET `banned` = '0' WHERE `name` = '%s' AND `banned` = 1 LIMIT 1 ",name);
    mysql_function_query(handle,query,false,"","");
    format(string,sizeof(string),"Der Spieler %s wurde von %s entbannt!",name,SpielerName(pID));
    SendClientMessageToAll(Adminfarbe,string);
    //hier alle namen abrufen die eingegeben wurden=1 name
    return 1;
    }
    }


    }