Kick befehle

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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 Liebe USER also ich habe ein kick befehle rein gemacht hier nochmall der kick befehle und also wenn ich ingame bin werde ich nicht gekickt hier ein sreccen



    ocmd:kick(playerid,params[])
    {
    new pID,Grund[128],string[128];
    if(sscanf(params,"us",pID,Grund)) return SendClientMessage(playerid,ROT,"Benutzung: /kick [playerid] [grund]");
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gekickt, Grund: %s",SpielerName(pID),SpielerName(playerid),Grund);
    SendClientMessageToAll(ROT,string);
    Kick(pID);
    return 1;
    }

  • Warum haste da überhaupt ein Return drinne wenn ich mal fragen darf? :O
    Probier mal so:


    ocmd:kick(playerid,params[])
    {
    new pID,Grund[64],string[250]; //String muss logischer weise größer als der Grund sein, da der Grund den kompletten String belegt!
    if(sscanf(params,"us",pID,Grund)) return SendClientMessage(playerid,ROT,"Benutzung: /kick [playerid] [grund]");
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gekickt, Grund: %s",SpielerName(pID),SpielerName(playerid),Grund);
    SendClientMessageToAll(ROT,string);
    Kick(pID);
    }

  • also



    ocmd:kick(playerid,params[])
    {
    new pID,Grund[64],string[250];
    SendClientMessage(playerid,ROT,"Benutzung: /kick [playerid] [grund]");
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gekickt, Grund: %s",SpielerName(pID),SpielerName(playerid),Grund);
    SendClientMessageToAll(ROT,string);
    Kick(pID);
    return 1;
    }


    ich habs jetzt so wie du es gesagt hast gemacht!


    hier noch ein screen

  • okay habe das return 1; weg gemacht? UND jetzt?



    ocmd:stats(playerid,params[])
    {
    new string[128];
    format(string,sizeof(string),"Name:%s\nLevel:%d",sName(playerid),GetPlayerScore(playerid));
    ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"STATS",string,"OK","");
    return 1;
    }



  • Brauchste sscanf zu :D



    ocmd:kick(playerid, params[])
    {
    new pID,Grund[64],string[250];
    if(sscanf(params, "us", pID,Grund))return SendClientMessage(playerid,FARBE,"/kick [ID/Name] [GRUND]");
    new pID,Grund[64],string[250];
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gekickt, Grund: %s",SpielerName(pID),SpielerName(playerid),Grund);
    SendClientMessageToAll(ROT,string);
    Kick(pID);
    }

  • Genau so funktioniert er bei mir:

    ocmd:kick(playerid,params[])
    {
    new pID, reason[128],str[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,blau,"/kick [id] [grund]");
    if(pID==playerid)return SendClientMessage(playerid,blau,"Du kannst dich nicht selber kicken");
    format(str,sizeof(str),"AdmCmd: %s wurde von %s gekickt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(rot,str);
    Kick(pID);
    return 1;
    }


    Falls du kein sscanf hast hier der stock:

    Spoiler anzeigen

    stock sscanf(string[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(string))
    #else
    if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    stringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (string[stringPos] && string[stringPos] <= ' ')
    {
    stringPos++;
    }
    while (paramPos < paramCount && string[stringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = string[stringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = string[++stringPos];
    }
    do
    {
    stringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = string[stringPos];
    do
    {
    stringPos++;
    switch (ch)
    {
    case 'x', 'X':
    {
    num = 0;
    continue;
    }
    case '0' .. '9':
    {
    num = (num << 4) | (ch - '0');
    }
    case 'a' .. 'f':
    {
    num = (num << 4) | (ch - ('a' - 10));
    }
    case 'A' .. 'F':
    {
    num = (num << 4) | (ch - ('A' - 10));
    }
    default:
    {
    return -1;
    }
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, string[stringPos++]);
    }
    case 'f':
    {

    new changestr[16], changepos = 0, strpos = stringPos;
    while(changepos < 16 && string[strpos] && string[strpos] != delim)
    {
    changestr[changepos++] = string[strpos++];
    }
    changestr[changepos] = '\0';
    setarg(paramPos,0,_:floatstr(changestr));
    }
    case 'p':
    {
    delim = format[formatPos++];
    continue;
    }
    case '\'':
    {
    new
    end = formatPos - 1,
    ch;
    while ((ch = format[++end]) && ch != '\'') {}
    if (!ch)
    {
    return -1;
    }
    format[end] = '\0';
    if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    stringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = stringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = string[++end]) && ch != delim)
    {
    if (num)
    {
    if ('0' <= ch <= '9')
    {
    id = (id * 10) + (ch - '0');
    }
    else
    {
    num = false;
    }
    }
    }
    if (num && IsPlayerConnected(id))
    {
    setarg(paramPos, 0, id);
    }
    else
    {
    #if !defined foreach
    #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
    #define __SSCANF_FOREACH__
    #endif
    string[end] = '\0';
    num = false;
    new
    name[MAX_PLAYER_NAME];
    id = end - stringPos;
    foreach (Player, playerid)
    {
    GetPlayerName(playerid, name, sizeof (name));
    if (!strcmp(name, string[stringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    string[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    stringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = string[stringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = string[stringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    stringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
    {
    stringPos++;
    }
    while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
    {
    stringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;
    }

    einfach unten in den Gamemode einfügen