DCMD Kick -
McCarthy - 03.11.2011
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;
}
Re: DCMD Kick -
SmiT - 03.11.2011
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;
}
Re: DCMD Kick -
Kostas' - 03.11.2011
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.
Re: DCMD Kick -
[MG]Dimi - 03.11.2011
PHP код:
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],tname[24],reason[64], string[128];
GetPlayerName(playerid, pname, sizeof(pname));
if (sscanf(params, "ds[64]", id, reason)) 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(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",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