/kick - Befehl || Nachricht erscheint 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
  • Wenn man beim /kick-Befehl

    Code
    /kick [Spieler] [Grund]


    einen Grund angibt, welcher ziemlich lange ist, dann wird die

    Code
    SendClientMessageToAll(0xE3654DFF,string);


    nicht ausgesand. Nimmt man allerdings einen kurzen Grund, funktioniert es.


    Befehl:
    if(strcmp(strget(cmdtext,0),"/kick",true)==0)
    {
    if(strlost(cmdtext,2)) return SendClientMessage(playerid,0xE3654DFF,"Benutze: /kick [Spieler] [Grund]");
    new pID,grund[256];
    if(SpielerSuchen(strget(cmdtext,1),pID)==-1) return SendClientMessage(playerid,0xE3654DFF,"Spieler wurde nicht gefunden.");
    new string[512];
    format(grund,sizeof(grund),strgetrest(cmdtext,2));
    format(string,sizeof(string),"%s wurde von %s gekickt || Grund: %s",Spieler[pID][Name],Spieler[playerid][Name],grund);
    SendClientMessageToAll(0xE3654DFF,string);
    Kick(pID);
    return 1;
    }


    Die 3 Funktionen (strlost, SpielerSuchen, strgetrest) sind eigene Funktionen.
    Sie tragen nachweisbar keine Schuld an dem Versagen der SendClientMessage.



    Bitte um Hilfe.

  • if(strcmp(strget(cmdtext,0),"/kick",true)==0)
    {
    if(strlost(cmdtext,2)) return SendClientMessage(playerid,0xE3654DFF,"Benutze: /kick [Spieler] [Grund]");
    new pID,grund[256];
    if(SpielerSuchen(strget(cmdtext,1),pID)==-1) return SendClientMessage(playerid,0xE3654DFF,"Spieler wurde nicht gefunden.");
    new string[128];
    format(grund,sizeof(grund),strgetrest(cmdtext,2));
    format(string,sizeof(string),"%s wurde von %s gekickt || Grund: %s",Spieler[pID][Name],Spieler[playerid][Name],grund);
    SendClientMessageToAll(0xE3654DFF,string);
    Kick(pID);
    return 1;
    }


    Versuch mal so.

  • Warum nicht einfacher per OCMD?


    ocmd:kick(playerid,params[])
    {
    if(!IstSpielerAdmin(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Admin und darfst daher diesen Befehl nicht nutzen!");//IstSpielerAdmin, deinem System anpassen.
    new pID,reason[128],string[128];
    if(sscanf(params,"us",pID,reason)) return SendClientMessage(playerid,TÜRKIS,"ERROR: /kick [ID] [GRUND]");
    format(string,sizeof(string),"[AdmCmd]: %s wurde von Admin %s vom Server gekickt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(ROT,string);
    Kick(pID);
    return 1;

  • if(strcmp(cmd, "/kick", true) == 0)
    {
    if(PlayerInfo[playerid][pAdmin] >= 1)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "/kick [playerid] [Grund]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if (PlayerInfo[playerid][pAdmin] >= 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: /kick [playerid] [Grund]");
    return 1;
    }
    if(PlayerInfo[giveplayerid][pAdmin] > PlayerInfo[playerid][pAdmin])
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du kannst diesen Spieler nicht kicken, da er ein höheres Adminlevel hat als du!");
    return 1;
    }
    new year, month,day;
    getdate(year, month, day);
    format(string, sizeof(string), "AdmCmd: %s wurde von %s gekickt, Grund: %s (%d-%d-%d)", giveplayer, sendername, (result),month,day,year);
    KickLog(string);
    format(string, sizeof(string), "AdmCmd: %s wurde von %s gekickt, Grund: %s", giveplayer, sendername, (result));
    SendClientMessageToAll(COLOR_LIGHTRED, string);
    Kick(giveplayerid);
    return 1;
    }
    }
    }
    else
    {
    format(string, sizeof(string), " %d ist kein aktiver Spieler.", giveplayerid);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    }
    }
    return 1;
    }



    Bitteschön :)



  • Was will ich damit?
    Ich bitte um die Lösung eines Problems, und nicht ums Neuscripten meines Befehls.
    Der Befehl funktioniert, abgesehen von der Nachricht, wenn sie die Länge 128 überschreitet, problemlos.


    Trotzdem danke an Marv und KingKane.