DCMD Kick
#1

I'm quite new to dcmd and sscanf so I need some help with kick, the problem is I dont know the proper operators (or whatever the official name) to use in string to show player names and id's

pawn Код:
dcmd_kick(playerid, params[])
{
  if(PlayerInfo[playerid][pAdmin] >= 1) return SendClientMessage(playerid,COLOR_RED, "You must be administrator level 1 to use that command!");
  new id, pname[MAX_PLAYER_NAME], reason[64], string[128];
  GetPlayerName(playerid, pname, sizeof(pname));
  if (sscanf(params, "pname", id, reason)) return SendClientMessage(playerid,COLOR_RED, "Usage: /kick [playerid/partofname] [reason]");
  if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_GREY, "Player not connected!");
  format(string, sizeof(string), "You have been kicked! Reason: %s", reason);
  SendClientMessage(id,COLOR_LIGHTBLUE, string);
  format(string, sizeof(string), "%s(%d) has been kicked by %s(%d) for: %s",pname,id,reason); // <--These
  SendClientMessageToAll(COLOR_RED,string);
  Kick(id);
  return 0;
}
Reply
#2

Instead of "pname" just enlist two specifiers, "r/u" which stands for player name/id and "s" which stands for a string. Make also sure you write the size of the array "reason" after enlisting the specifier "s" - see https://sampforum.blast.hk/showthread.php?tid=120356 for a list of all specifiers. For your second problem, just get the "id" name, declare a new array and store the "id" name in it - here is an example:

pawn Код:
dcmd_kick(playerid, params[])
{
  if(PlayerInfo[playerid][pAdmin] >= 1) return SendClientMessage(playerid,COLOR_RED, "You must be administrator level 1 to use that command!");
  new id, pname[MAX_PLAYER_NAME], reason[64], string[128];
  new pname2[ MAX_PLAYER_NAME ]; /* new variable */
  GetPlayerName(playerid, pname, sizeof(pname));
  if (sscanf(params, "rs[64]", id, reason)) return SendClientMessage(playerid,COLOR_RED, "Usage: /kick [playerid/partofname] [reason]");
  if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_GREY, "Player not connected!");
  format(string, sizeof(string), "You have been kicked! Reason: %s", reason);
  SendClientMessage(id,COLOR_LIGHTBLUE, string);
  GetPlayerName( id, pname2, sizeof ( pname2 ) ); /* get the id name */
  format(string, sizeof(string), "%s(%d) has been kicked by %s(%d) for: %s", pname2, id, pname, playerid, reason); /* check it out playerid is the player who executes the command */
  SendClientMessageToAll(COLOR_RED,string);
  Kick(id);
  return true;
}
Reply
#3

pawn Код:
dcmd_kick(playerid, params[])
{
  if(PlayerInfo[playerid][pAdmin] >= 1) return SendClientMessage(playerid,COLOR_RED, "You must be administrator level 1 to use that command!");
  new id, pname[MAX_PLAYER_NAME], name2[MAX_PLAYER_NAME], reason[64], string[128];
  GetPlayerName(id, name2, sizeof(name2));
  GetPlayerName(playerid, pname, sizeof(pname));
  if (sscanf(params, "pname", id, reason)) return SendClientMessage(playerid,COLOR_RED, "Usage: /kick [playerid/partofname] [reason]");
  if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_GREY, "Player not connected!");
  format(string, sizeof(string), "You have been kicked! Reason: %s", reason);
  SendClientMessage(id,COLOR_LIGHTBLUE, string);
  format(string, sizeof(string), "%s(%d) has been kicked by %s(%d) for: %s",name2, id, pname, playerid, reason); // <--These
  SendClientMessageToAll(COLOR_RED,string);
  Kick(id);
  return 0;
}
But I didn't test it.
Reply
#4

PHP код:
dcmd_kick(playeridparams[])
{
  if(
PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid,COLOR_RED"You must be administrator level 1 to use that command!");
  new 
idpname[MAX_PLAYER_NAME],tname[24],reason[64], string[128];
  
GetPlayerName(playeridpnamesizeof(pname));
  if (
sscanf(params"ds[64]"idreason)) return SendClientMessage(playerid,COLOR_RED"Usage: /kick [playerid] [reason]");
  if(!
IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_GREY"Player not connected!");
  
GetPlayerName(id,tname,24):
  
format(stringsizeof(string), "You have been kicked! Reason: %s"reason);
  
SendClientMessage(id,COLOR_LIGHTBLUEstring);
  
format(stringsizeof(string), "%s(%d) has been kicked by %s(%d) for: %s",tname,id,pname,playerid,reason); // <--These
  
SendClientMessageToAll(COLOR_RED,string);
  
Kick(id);
  return 
1;

Edited. You need to get target's name and also you made mistake in sscanf

EDIT: 2 Users above,

if(PlayerInfo[playerid][pAdmin] >= 1) return SendClientMessage(playerid,COLOR_RED, "You must be administrator level 1 to use that command!");
if(PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid,COLOR_RED, "You must be administrator level 1 to use that command!");

Edit xD. I also hardly noticed it
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)