25.03.2013, 16:42
Ok I'll show you what I got!
My CheckBan stock:
And my BAN command:
pawn Код:
public OnPlayerConnect(playerid)
{
new query[250];
if(CheckBan(playerid) == 0)
{
new
pname[24];
GetPlayerName(playerid, pname, 24);
format(query, sizeof(query), "SELECT IP FROM `playerdata` WHERE user = '%s' LIMIT 1", pname);
mysql_query(query);
mysql_store_result();
new rows = mysql_num_rows();
if(!rows)
{
ShowPlayerDialog(playerid, 15000, DIALOG_STYLE_PASSWORD, "{F81414}Register","{FFFFFF}Your account is not registered! \nPlease register your account by typing in a password below!","Register","Cancel");
}
if(rows == 1)
{
new IP[2][16];
mysql_fetch_field_row(IP[0],"IP");
GetPlayerIp(playerid, IP[1], 16);
if(strlen(IP[0]) != 0 && !strcmp(IP[0], IP[1], true))
{
MySQL_Login(playerid);
}
else if(!strlen(IP[0]) || strcmp(IP[0], IP[1], true))
{
ShowPlayerDialog(playerid, 15500, DIALOG_STYLE_PASSWORD, "{00FF22}Login","{FFFFFF}Your account is registered! \nPlease login to your account by typing in your password below","Login","Cancel");
IsRegistered[playerid] = 1;
}
}
mysql_free_result();
}
return 1;
}
pawn Код:
stock CheckBan(playerid)
{
new query[126], IP[16];
GetPlayerIp(playerid, IP, sizeof(IP));
format(query,sizeof(query),"SELECT * FROM 'bans' WHERE (`Name` = '%s' OR `IP` = '%s') AND `Status` = 1", GetName(playerid), IP );
mysql_query(query);
mysql_store_result();
if(mysql_num_rows() >= 1)
{
new bReason[128], bannedBy[MAX_PLAYER_NAME], Dialog[128];
while(mysql_fetch_row_format(query,"|")) // what's this? checks if there is a row
{
mysql_fetch_field_row(bReason, "Reason");
mysql_fetch_field_row(bannedBy, "BannedBy");
format(Dialog, sizeof(Dialog), "{FF0000}You are banned from this server! \n{FF0000}Name:{FFFFFF} %s \n{FF0000}Reason:{FFFFFF} %s \n{FF0000}Banned By:{FFFFFF} %s", GetName(playerid), bReason, bannedBy);
ShowPlayerDialog(playerid, DIALOG_BAN, DIALOG_STYLE_MSGBOX, "{FF0000}Banned", Dialog, "Close", "");
}
return 1;
}
mysql_free_result();
return 0;
}
pawn Код:
CMD:ban(playerid, params[])
{
if(pInfo[playerid][pAdmin] < 4 )
return PlayerIsNotAdmin( playerid );
new id,
reason[128];
if( sscanf(params, "us", id, reason))
return SendUsageError( playerid, "/ban [Name/ID] [Reason]" );
if( id == INVALID_PLAYER_ID)
return InvalidPlayerError( playerid );
new
name1[MAX_PLAYER_NAME],
name[MAX_PLAYER_NAME],
str[128];
GetPlayerName(playerid,name1,MAX_PLAYER_NAME);
GetPlayerName(id,name,MAX_PLAYER_NAME);
format(str, sizeof (str), "[BAN] Administrator %s has banned %s. Reason: %s", name1, name, reason);
SendClientMessageToAll(RED, str);
new
query[200], IP[16];
GetPlayerIp(id, IP, sizeof(IP));
format(query,sizeof(query), "INSERT INTO bans (Name, IP, Reason, BannedBy, Date, Status) VALUES('%s', '%s', '%s', '%s', NOW(), '1')", GetName(id), IP, reason, GetName(playerid), gettime());
mysql_query(query);
SetTimerEx( "KickPlayer",100, false, "i", id);
return 1;
}