Befehl funktioniert nicht

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
  • Guten Tag.
    wiedermal will ein CMD nicht.


    Hier der Befehl:
    COMMAND:kick(playerid,params[])
    {
    new pID,kGrund;
    if(sscanf(params,"us",pID,kGrund)) return SendClientMessage(playerid,GRAU,"Verwendung: /kick [playerid] [Grund]");
    if(SpielerInfo[playerid][Adminlevel]>=1)
    if(aLogin[playerid]==1)
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID Online");
    else
    {
    new name[20],playername[20],string[1024];
    GetPlayerName(pID,name,sizeof(name));
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"%s (ID: %i) wurde von %s gekickt. (Grund:%s)",name,pID,playername,kGrund);
    SendClientMessageToAll(GRAU,string);
    Kick(pID);
    }
    else return SendClientMessage(playerid,GRAU,"Sie sind nicht als Admin eingeloggt");
    else return SendClientMessage(playerid,GRAU,"Du hast nicht das benötigte Adminlevel.");
    return 1;
    }


    Das Problem:
    Wenn ich ingame nun /kick mache kommt "Kein Spieler mit angegebener ID Online".
    Die id ist richtig eingeben usw.
    Bitte um Hilfe.


    mfg.
    Opa

  • Bin ja noch ziemlich neu(kenne mich noch nicht so gut aus) aber evtl ist einfach nur der Text falsch eingegeben(Zeile 7).Denn wenn der Spieler connected ist muss er ja da sein.Du hast da aber geschrieben bei Zeile 7: if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID Online");
    Ich als neuling würde einfach den Text ändern weil der glaube ich nicht zum cmd passt.Esseiden der Spieler wird auch nicht gekickt.
    Wie gesagt ich bin noch neu,also nich gleich verärgert sein wenn meine Antwort vollkommen daneben ist.


    Mfg Trash

    Trash=Müll^^

  • Hab mal was aus meinem Admin FS rauskopiert(So Englisch-Deutsch):
    if(strcmp(cmd, "/kick", true) == 0) {
    if(PlayerInfo[playerid][Level] >= 1) {
    new tmp[256];
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) {
    SendClientMessage(playerid, red, "USAGE: /kick [playerid] [grund]");
    return 1; }
    new player1;
    player1 = strval(tmp);
    if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (PlayerInfo[player1][Level] == ServerInfo[MaxAdminLevel]) ) {
    SendClientMessage(playerid,red,"Fehler:Spieler ist nicht connectet");
    return 1; }
    tmp = strtok(cmdtext, idx);


    GetPlayerName(player1, playername, sizeof(playername)); GetPlayerName(playerid, adminname, sizeof(adminname));
    format(string,256,"%swurden von Administrator %s [Grund: %s] ",playername,adminname,cmdtext[7]); SendClientMessageToAll(grey,string);
    SaveToFile("KickLog",string); Kick(player1);
    } else {
    SendClientMessage(playerid,red,"Fehler: Dein Level ist nicht hoch genug"); }
    return 1; }
    Probiers mal so aus.vllt. gehts.

    Trash=Müll^^

  • Versuchs mal so:
    COMMAND:kick(playerid,params[])
    {
    new pID,kGrund,name[20],playername[20],string[128];
    if(sscanf(params,"us",pID,kGrund)) return SendClientMessage(playerid,GRAU,"Verwendung: /kick [playerid] [Grund]");
    if(SpielerInfo[playerid][Adminlevel]<1) return SendClientMessage(playerid,GRAU,"Du hast nicht das benötigte Adminlevel.");
    if(aLogin[playerid]!=1) return SendClientMessage(playerid,GRAU,"Sie sind nicht als Admin eingeloggt");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID Online");
    GetPlayerName(pID,name,sizeof(name));
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"%s (ID: %i) wurde von %s gekickt. (Grund:%s)",name,pID,playername,kGrund);
    SendClientMessageToAll(GRAU,string);
    Kick(pID);
    return 1;
    }


    PS: 1024 ist definitiv zu größ für den string, da es maximal 128 Zeichen sein können bei dem Befehl.

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

  • funkt auch nicht....
    Ich habe nun einen Befehl der funktioniert und nochmal den kick Command der wieder nicht funktioniert.
    Hier mal mein neuer Code:
    COMMAND:kick(playerid,params[])
    {
    new pID,kGrund;
    if(SpielerInfo[playerid][Adminlevel]!=3)return SendClientMessage(playerid,GRAU,"Du hast nicht das benötigte Adminlevel.");
    if(aLogin[playerid]==0) return SendClientMessage(playerid,GRAU,"Sie sind nicht als Admin eingeloggt");
    if(sscanf(params,"us",pID,kGrund)) return SendClientMessage(playerid,GRAU,"Verwendung: /kick [playerid] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,GRAU,"Kein Spieler mit angegebener ID Online");
    {
    SendClientMessage(playerid,GRAU,"Hier kommt noch was!");
    }
    return 1;
    }
    hier der Code, der funktioniert.

    COMMAND:setlevel(playerid,params[])
    {
    new pID,newLevel;
    if(SpielerInfo[playerid][Adminlevel] == 3)
    {
    if(aLogin[playerid]==1)
    {
    if(sscanf(params, "ui",pID,newLevel))return SendClientMessage(playerid,GRAU,"Verwendung: /makeadmin [playerid] [Adminlevel]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID Online");
    else
    {
    new name[20],string[100],playername[20];
    GetPlayerName(pID,name,sizeof(name));
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"%s hat das Level von %s (ID: %i) auf %i geändert",playername,name,pID,newLevel);
    for(new i;i<MAX_PLAYERS;i++)
    {
    if(SpielerInfo[i][Adminlevel]>1)
    {
    SendClientMessage(i,GRAU,string);
    }
    }
    SpielerInfo[pID][Level]=newLevel;
    }
    }
    else return SendClientMessage(playerid,GRAU,"Sie sind nicht als Admin eingeloggt");
    }
    else return SendClientMessage(playerid, GRAU, "Du hast nicht das benötigte Adminlevel.");
    return 1;
    }


    ich versuche es jetzt noch einmal mit solcher Reihenfolge.. Wäre aber trotzdem Dankbar über meine Fehler :pinch:


    mfg.
    Opa


    EDIT// so habe nun einiges getestet und ich kam darauf, das der "Grund" falsch war.
    naja mal schnell nachgelesen und gefunden.
    Einen String in sscanf muss man eine Größe geben.
    Nun klappt alles super.


    ihr wart mir zwar icht die beste Hilfe aber vill. das nächste mal :thumbup:


    //Closed