/unban - Spieler muss ingame sein wieso?

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,
    da ich in meinem letzten Post keine Hilfe mehr bekommen habe will ich nochmals fragen:
    Warum zeigt er mir ingame "Server: Unknown Command" an?


    Habe den Command jetzt so stehen und hoffe ihr könnt mir vielleicht helfen :D
    ocmd:unban(playerid,params[])
    {
    ocmd:unban(playerid,params[])
    {
    new pname, string[256], path[128], console[256], Spielerdatei[256];
    if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,ROT,"Du hast nich den benötigten Adminrang!");
    if(sscanf(params,"u",pname))return SendClientMessage(playerid,ROT,"Benutzung: /unban [Playername]");
    format(path,sizeof(path),"/accounts/%s.acc",SpielerName(pname));
    if(dini_Exists(path))
    {
    if(dini_Int(Spielerdatei,"Ban")==0)
    {
    SendClientMessage(playerid,ROT,"Dieser Spieler ist nicht gebannt.");
    }
    else
    {
    format(string,sizeof(string),"AdmCmd: %s wurde von %s entbannt.",SpielerName(pname),SpielerName(playerid));
    format(console,sizeof(console),"AdmCmd: %s wurde von %s entbannt.\n",SpielerName(pname),SpielerName(playerid));
    SendClientMessageToAll(ROT,string);
    dini_IntSet(Spielerdatei,"Ban",0);
    new File:AdmLog=fopen("AdmLog.txt", io_append);
    fwrite(AdmLog, console);
    fclose(AdmLog);
    }
    }
    else
    {
    SendClientMessage(playerid,ROT,"Diesen Spieler gibt es nicht.");
    }
    return 1;
    }


    EDIT: Nun funktioniert es aber nur wenn der Spieler ingame ist, aber es soll ja funktionieren auchw enn er nicht eingeloggt ist.

    4 Mal editiert, zuletzt von Rey ()

  • if(sscanf(params,"u",pname))return SendClientMessage(playerid,ROT,"Benutzung: /unban [Playername]");


    Weil der Spieler für diesen Parameter online sein muss..
    Du kommst um einen string dabei nicht rum.


    Grüße,
    tony

  • if(sscanf(params,"u",pname))return SendClientMessage(playerid,ROT,"Benutzung: /unban [Playername]");


    Weil der Spieler für diesen Parameter online sein muss..
    Du kommst um einen string dabei nicht rum.


    Grüße,
    tony

    ja aber beim string zeigt er mir ingame immer an ... Server: Unknown Command das ist komisch :O

  • Wenn du "u" benutzt verwandelt sscanf die Eingabe in eine ID um. Benutz etwas anderes wie s ;)


    Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don’t need.
    – Tyler Durden


    Sobald Werbung im Spiel ist, bist du, die Nutzerin, der Nutzer, das Produkt.


  • ja dann ist es ein string aber dann zeigt er mir immer unknown command an :/


    EDIT: u ist eine zahl man kann aber auchd en namen eingeben :D

    Einmal editiert, zuletzt von Rey ()

  • EDIT: u ist eine zahl man kann aber auchd en namen eingeben :D

    ändert nix dadran das sscanf den namen in eine zahl umwandelt... weil er mit dem namen nach der ID sucht <.<


    benutz einen string, dort muss der name genau so sein wie die datei heißt und wieso hast du oben zwei mal ocmd:unban(playerid, params[]) ??



    EDIT: Hier der Code der funktionieren sollte
    ocmd:unban(playerid,params[])
    {
    new pname, string[256], path[128], console[256], Spielerdatei[256];
    if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,ROT,"Du hast nich den benötigten Adminrang!");
    if(sscanf(params,"s[24]",pname))return SendClientMessage(playerid,ROT,"Benutzung: /unban [Playername]");
    format(path,sizeof(path),"/accounts/%s.acc",pname);
    if(dini_Exists(path))
    {
    if(dini_Int(Spielerdatei,"Ban")==0)
    {
    SendClientMessage(playerid,ROT,"Dieser Spieler ist nicht gebannt.");
    }
    else
    {
    format(string,sizeof(string),"AdmCmd: %s wurde von %s entbannt.",SpielerName(pname),SpielerName(playerid));
    format(console,sizeof(console),"AdmCmd: %s wurde von %s entbannt.\n",SpielerName(pname),SpielerName(playerid));
    SendClientMessageToAll(ROT,string);
    dini_IntSet(Spielerdatei,"Ban",0);
    new File:AdmLog=fopen("AdmLog.txt", io_append);
    fwrite(AdmLog, console);
    fclose(AdmLog);
    }
    }
    else
    {
    SendClientMessage(playerid,ROT,"Diesen Spieler gibt es nicht.");
    }
    return 1;
    }