rendered paste body// Kick & Ban Commands (Dcmd + chrfind)
// Dcmd define
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
// OnPlayerCommandText
dcmd(ban,3,cmdtext);
dcmd(kick,4,cmdtext);
// Anywhere Kick & Ban
dcmd_kick(playerid, params[])
{
if (IsPlayerAdmin(playerid))
{
new
pos;
if (!params[0] || !(pos = chrfind(' ', params) + 1) || !params[pos])
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /kick [ID] [reason]");
}
else
{
new
kickid = strval(params),
str[64], str1[64];
if (IsPlayerConnected(kickid))
{
Kick(kickid);
GetPlayerName(kickid, str, sizeof (str));
GetPlayerName(playerid, str1, sizeof (str));
format(str, sizeof (str), "%s [ID: %d] Has Kicked %s. Reason: %s", str1, playerid, str, params[pos]);
SendClientMessageToAll(COLOR_RED, str);
printf(str);
}
}
}
return 1;
}
dcmd_ban(playerid, params[])
{
if (IsPlayerAdmin(playerid))
{
new
pos;
if (!params[0] || !(pos = chrfind(' ', params) + 1) || !params[pos])
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /ban [ID] [reason]");
}
else
{
new
banid = strval(params),
str[65], str1[65];
if (IsPlayerConnected(banid))
{
Ban(banid);
GetPlayerName(playerid, str1, sizeof (str));
GetPlayerName(banid, str, sizeof (str));
format(str, sizeof (str), "%s [ID: %d] Has Banned %s. Reason: %s", str1, playerid, str, params[pos]);
SendClientMessageToAll(COLOR_RED, str);
printf(str);
}
}
}
return 1;
}
// chrfind
stock chrfind(needle, haystack[], start = 0)
{
new
len = strlen(haystack);
while (start < len)
{
if (haystack[start] == needle) return start;
start++;
}
return -1;
}