// 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; }