All pastes #569814 Raw Edit

Something

public text v1 · immutable
·published 2007-06-16 12:37 UTC
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;
}