Oh god, it's like explaining algebra to a 2 year old...
This is a quick one that I have made up. Surely you can understand what I'm trying to say now...
pawn Code:
#include <a_samp>
#include <zcmd>
#include <sscanf2>
public OnPlayerConnect(playerid)
{
new file[40], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(file, sizeof(file), "Bans/%s.txt", name);
if(fexist(file))
{
new ip[16];
GetPlayerIp(playerid, ip, sizeof(ip));
new File:banfile = fopen(file, io_append);
format(file, sizeof(file), "%s\r\n", ip);
fwrite(banfile, file);
fclose(banfile);
return Kick(playerid);
}
return 1;
}
CMD:ban(playerid, params[]) //When you ban a player:
{
if(!IsPlayerAdmin(playerid) /*&& PlayerInfo[playerid][AdminLevel] < 1*/) return SendClientMessage(playerid, 0xFF0000FF, "You must be an admin to use this command.");
new id, reason[50];
if(sscanf(params, "uS(No Reason)[50]", id, reason)) return SendClientMessage(playerid, 0xFF0000FF, "USAGE: /ban [id/name] [Optional: reason]");
if(id == INVALID_PLAYER_ID || !IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "Player is not connected.");
if(!fexist("Bans/")) return SendClientMessage(playerid, 0xFF0000FF, "You must create a folder called 'Bans' in your scriptfiles before banning a player.");
new name[MAX_PLAYER_NAME], file[35], str[100], ip[16];
GetPlayerName(id, name, sizeof(name));
format(file, sizeof(file), "Bans/%s.txt", name);
new File:banfile = fopen(file, io_append);
GetPlayerIp(id, ip, sizeof(ip));
format(file, sizeof(file), "%s\r\n", ip);
printf("Written: %s", file);
fwrite(banfile, file);
fclose(banfile);
format(str, sizeof(str), "%s(%d) has been banned | Reason: %s", name, id, reason);
SendClientMessageToAll(0xFF0000FF, str);
format(str, sizeof(str), "You have been banned | Reason: %s", reason);
SendClientMessage(id, 0xFF0000FF, str);
SetTimerEx("BanPlayer", 200, false, "i", id);
return 1;
}
forward BanPlayer(playerid);
public BanPlayer(playerid) return Ban(playerid);
CMD:unban(playerid, params[])
{
if(!IsPlayerAdmin(playerid) /*&& PlayerInfo[playerid][AdminLevel] < 1*/) return SendClientMessage(playerid, 0xFF0000FF, "You must be an admin to use this command.");
new unbanname[MAX_PLAYER_NAME];
if(sscanf(params, "s[24]", unbanname)) return SendClientMessage(playerid, 0xFF0000FF, "USAGE: /unban [name]");
new file[40];
format(file, sizeof(file), "Bans/%s.txt", unbanname);
if(!fexist(file)) return SendClientMessage(playerid, 0xFF0000FF, "That player is not banned.");
new File:banfile = fopen(file, io_read);
new string[16], rcon[25];
while(fread(banfile, string))
{
format(rcon, sizeof(rcon), "unbanip %s", string);
SendRconCommand(rcon);
}
fclose(banfile);
fremove(file);
format(file, sizeof(file), "%s is unbanned.", unbanname);
SendClientMessageToAll(0xFFFF00FF, file);
return 1;
}