/kick 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
  • Hi,
    Ich hab eine Problem mit dem /kick Befehl^^......okay er ist zum teil ausm GF genommen xD aber ging halt schneller...
    Also nun zu meinem Problem....wenn ich jemanden kicke verreckt der server also sampserver hat ein Problem festgestellt usw.
    Hier mal der /kick Befehl ich hoffe der hilft:
     if(strcmp(cmd, "/kick", true) == 0)
     {
     new reason[255];
     if (AccountInfo[playerid][Level] >= 1 || IsPlayerAdmin(playerid))
      {
      tmp = strtok(cmdtext, idx);
      if(!strlen(tmp))
      {
      SendClientMessage(playerid, COLOR_ORANGE, "BENUTZE: /kick [playerid] [reason]");
      SendClientMessage(playerid, COLOR_ORANGE, "FUNCTION: Wird den Spieler kicken xD.");
      return 1;
      }


      giveplayerid = ReturnUser(tmp);
      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;
      while ((idx < length) && ((idx - offset) < (sizeof(reason) - 1)))
      {
      reason[idx - offset] = cmdtext[idx];
      idx++;
      }
      reason[idx - offset] = EOS;
      if(!strlen(reason))
      {
      SendClientMessage(playerid,COLOR_ORANGE, "BENUTZE: /kick [playerid] [reason]");
      return 1;
      }
      else
      {
      printf("[ADMIN NEWS]: Admin %s kicked %s. Reason: %s", sendername, giveplayer, reason);
      format(string, sizeof(string), "-| Administrator %s kickte %s. [Reason: %s ]|-", sendername,giveplayer,reason);
      SendClientMessageToAll(COLOR_RED, string);
      Kick(giveplayerid);
      KickLog(string);
      format(string, sizeof(string), "** [%i]%s hat den Server verlassen. ( Kicked ) **",playerid,player);
      SendClientMessageToAll(COLOR_GRAY, string);
      }
      }


      else if(giveplayerid == INVALID_PLAYER_ID)
      {
      format(string, sizeof(string), "%d ist kein aktiver Spieler!", giveplayerid);
      SendClientMessage(playerid,COLOR_RED, string);
      }
      }
      else
      {
      SendClientMessage(playerid,COLOR_RED, "Du hast nicht das benötigte Admin Level für das Cmd!");
      }
     return 1;
     }

  • Du hast ja getstrspc
    /* kick CMD */
    if(!strcmp(cmdtext, "/kick", false, 5))
    {
    new kickid = strval(getstrspc(cmdtext, 1));
    if(IsPlayerConnected(kickid))
    {
    if(AccountInfo[playerid][Level] >= 1 || IsPlayerAdmin(playerid))
    {
    SendClientMessage(playerid, red, "Spieler gekickt");
    Kick(kickid);
    }
    else
    SendClientMessage(playerid, red, "ADMIN FUNCTION!");
    else
    SendClientMessage(playerid, red, "Spieler nicht connected");
    }

  • sry doppelpost^^
    habs zwar nicht getestet aber beim /ban wirds wohl gleich sein^^
     if(strcmp(cmd, "/ban", true) == 0)
     {
      if(IsPlayerConnected(playerid))
      {
      tmp = strtok(cmdtext, idx);
      if(!strlen(tmp))
      {
      SendClientMessage(playerid, COLOR_RED, "BENUTZE: /ban [playerid/PartOfName] [reason]");
      return 1;
      }
      giveplayerid = ReturnUser(tmp);
      if (AccountInfo[playerid][Level] >= 2)
      {
      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_RED, "BENUTZE: /ban [playerid/PartOfName] [reason]");
      return 1;
      }
      new year, month,day;
      getdate(year, month, day);
      format(string, sizeof(string), "AdmCmd: %s wurde von %s gebannt, reason: %s (%d-%d-%d)", giveplayer, sendername, (result),month,day,year);
      BanLog(string);
      format(string, sizeof(string), "AdmCmd: %s wurde von %s gebannt, reason: %s", giveplayer, sendername, (result));
      SendClientMessageToAll(COLOR_LIGHTRED, string);
      AccountInfo[giveplayerid][Level] = AccountInfo[giveplayerid][Level];
      AccountInfo[giveplayerid][Level] = -999;
      Ban(giveplayerid);
      return 1;
      }
      }//not connected
      }
      else
      {
      format(string, sizeof(string), " %d ist kein aktiver Spieler.", giveplayerid);
      SendClientMessage(playerid, COLOR_GRAY, string);
      }
      }
      return 1;
     }


    wenn jemand den befehl besser kann bzw. bugfrei usw. würde ich mich sehr darum freuen^^

  • /* kick CMD */
    if(!strcmp(cmdtext, "/ban", false, 4))
    {
    new banid = strval(getstrspc(cmdtext, 1));
    if(IsPlayerConnected(banid))
    {
    if(AccountInfo[playerid][Level] >= 1 || IsPlayerAdmin(playerid))
    {
    SendClientMessage(playerid, red, "Spieler gekickt");
    Ban(banid);
    }
    else
    SendClientMessage(playerid, red, "ADMIN FUNCTION!");
    else
    SendClientMessage(playerid, red, "Spieler nicht connected");
    }


    Halt auch ohne Reason aber das wird Meldariel schon soelber hinbekommen.
    (Eigendlich muss man schon verdammt schlecht sein wenn man kein Ban CMD schreiben kann)