Ban command is bugged -
Fantje - 03.08.2016
When I ban someone, he can still join the server and login.
Where is the problem?
PHP код:
CMD:ban(playerid, params[])
{
LevelCheck(playerid, 1);
new target, reason[35], days;
if(sscanf(params, "is[35]I(0)", target, reason, days)) return Usage(playerid, "ban [playerid] [reason] [days(0 for permanent ban)]");
if(!IsPlayerConnected(target)) return Error(playerid, "The specified player is not connected, use /oban instead.");
if(target == playerid) return Error(playerid, "You cannot ban yourself.");
if(GetLevel(playerid) < GetLevel(target)) return Error(playerid, "You cannot use this command on higher level admin.");
if(days < 0) return Error(playerid, "Invalid days, must be greater than 0 for temp ban, or 0 for permanent ban.");
if(strlen(reason) < 3 || strlen(reason) > 35) return Error(playerid, "Invalid reason length, must be b/w 0-35 characters.");
new bandate[18], date[3], time;
getdate(date[0], date[1], date[2]);
format(bandate, sizeof(bandate), "%02i/%02i/%i", date[2], date[1], date[0]);
if(days == 0) time = 0;
else time = ((days * 24 * 60 * 60) + gettime());
new handle = SQL::Open(SQL::INSERT, ""BANS_TABLE"");
SQL::ToggleAutoIncrement(handle, true);
SQL::WriteString(handle, "ban_username", GetName(target));
SQL::WriteString(handle, "ban_ip", GetIP(target));
SQL::WriteString(handle, "ban_by", GetName(playerid));
SQL::WriteString(handle, "ban_on", bandate);
SQL::WriteString(handle, "ban_reason", reason);
SQL::WriteInt(handle, "ban_expire", time);
SQL::Close(handle);
if(days == 0)
{
new string[144];
format(string, sizeof(string), "* %s(%i) has been banned by Admin %s(%d) "orange"[Reason: %s]", GetName(target), target, GetName(playerid), playerid, reason);
SendClientMessage(target, COLOR_RED, string);
#if defined SAVE_LOGS
SaveLog("bans.txt", string);
#endif
}
else
{
new string[258];
format(string, sizeof(string), "* %s(%i) has been temp banned by Admin %s(%d) "orange"[Reason: %s] [Days: %i]", GetName(target), target, GetName(playerid), playerid, reason, days);
SendClientMessage(target, COLOR_RED, string);
#if defined SAVE_LOGS
SaveLog("bans.txt", string);
#endif
format(string, sizeof(string), "* Temp banned for %i days "orange"[Unban on %s]", days, ConvertTime(time));
SendClientMessage(target, COLOR_RED, string);
}
PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
DelayKick(target);
return 1;
}
Re: Ban command is bugged -
oMa37 - 03.08.2016
I bet it's the ban system by SecretBoss. right?
Well, You have to check if the player banned OnPlayerConnect.
Either with his username, or IP:
PHP код:
//Check username
if(SQL::RowExistsEx(""BANS_TABLE"", "ban_username", GetName(playerid)))
//Check IP
if(SQL::RowExistsEx(""BANS_TABLE"", "ban_ip", GetIP(playerid)))
take a look on the script you took this from and you will find what I mean under OnPlayerConnect.
Re: Ban command is bugged -
Fantje - 03.08.2016
Here:
PHP код:
// Ban Checking system
new
string[6][24],
string2[156],
expire,
DIALOG[676]
;
if(SQL::RowExistsEx(""BANS_TABLE"", "ban_username", GetName(playerid)))
{
new handle = SQL::OpenEx(SQL::READ, ""BANS_TABLE"", "ban_username", GetName(playerid));
SQL::ReadString(handle, "ban_username", string[1], 24);
SQL::ReadString(handle, "ban_ip", string[2], 24);
SQL::ReadString(handle, "ban_by", string[3], 24);
SQL::ReadString(handle, "ban_on", string[4], 24);
SQL::ReadString(handle, "ban_reason", string[5], 24);
SQL::ReadInt(handle, "ban_expire", expire);
SQL::Close(handle);
if(expire > gettime() || expire == 0)
{
strcat(DIALOG, ""white"Your account is banned from this server,\n\n");
format(string2, sizeof(string2), ""white"Username: "red"%s\n", string[1]);
strcat(DIALOG, string2);
format(string2, sizeof(string2), ""white"IP: "red"%s\n", string[2]);
strcat(DIALOG, string2);
format(string2, sizeof(string2), ""white"Banned by: "red"%s\n", string[3]);
strcat(DIALOG, string2);
format(string2, sizeof(string2), ""white"Reason: "red"%s\n", string[5]);
strcat(DIALOG, string2);
format(string2, sizeof(string2), ""white"Ban date: "red"%s\n", string[4]);
strcat(DIALOG, string2);
new expire2[68];
if(expire == 0) expire2 = "PERMANENT";
else expire2 = ConvertTime(expire);
format(string2, sizeof(string2), ""white"Timeleft: "red"%s\n\n", expire2);
strcat(DIALOG, string2);
strcat(DIALOG, ""white"If you think that you got banned wrongfully, please make an appeal on our forums. Visit svt-reloaded.com\n");
strcat(DIALOG, "Make sure you saved this box by pressing F8.");
Dialog_Show(playerid, dialogUnused, DIALOG_STYLE_MSGBOX, "Notice", DIALOG, "Close", "");
DelayKick(playerid);
return true;
}
else
{
SQL::DeleteRowEx(""BANS_TABLE"", "ban_username", GetName(playerid));
Server(playerid, "Your account's ban has expired.");
}
}
else if(SQL::RowExistsEx(""BANS_TABLE"", "ban_ip", GetIP(playerid)))
{
new handle = SQL::OpenEx(SQL::READ, ""BANS_TABLE"", "ban_ip", GetIP(playerid));
SQL::ReadString(handle, "ban_username", string[1], 24);
SQL::ReadString(handle, "ban_ip", string[2], 24);
SQL::ReadString(handle, "ban_by", string[3], 24);
SQL::ReadString(handle, "ban_on", string[4], 24);
SQL::ReadString(handle, "ban_reason", string[5], 24);
SQL::ReadInt(handle, "ban_expire", expire);
SQL::Close(handle);
if(expire > gettime() || expire == 0)
{
strcat(DIALOG, ""white"Your IP is banned from this server,\n\n");
format(string2, sizeof(string2), ""white"Username: "red"%s\n", string[1]);
strcat(DIALOG, string2);
format(string2, sizeof(string2), ""white"IP: "red"%s\n", string[2]);
strcat(DIALOG, string2);
format(string2, sizeof(string2), ""white"Banned by: "red"%s\n", string[3]);
strcat(DIALOG, string2);
format(string2, sizeof(string2), ""white"Reason: "red"%s\n", string[5]);
strcat(DIALOG, string2);
format(string2, sizeof(string2), ""white"Ban date: "red"%s\n", string[4]);
strcat(DIALOG, string2);
new expire2[68];
if(expire == 0) expire2 = "PERMANENT";
else expire2 = ConvertTime(expire);
format(string2, sizeof(string2), ""white"Timeleft: "red"%s\n\n", expire2);
strcat(DIALOG, string2);
strcat(DIALOG, ""white"If you think that you got banned wrongfully, please make an appeal on our forums. Visit svt-reloaded.\n");
strcat(DIALOG, "Make sure you saved this box by pressing F8.");
Dialog_Show(playerid, dialogUnused, DIALOG_STYLE_MSGBOX, "Notice", DIALOG, "Close", "");
DelayKick(playerid);
return true;
}
else
{
SQL::DeleteRowEx(""BANS_TABLE"", "ban_username", GetName(playerid));
Server(playerid, "Your IP's ban has expired.");
}
}
Re: Ban command is bugged -
oMa37 - 03.08.2016
Yup, Just put it under OnPlayerConnect. it should work.
Re: Ban command is bugged -
Fantje - 03.08.2016
It is under OnPlayerConnect
Re: Ban command is bugged -
oMa37 - 03.08.2016
Nothing seems to be wrong, Does it print something in mysql_log.txt ?
Re: Ban command is bugged -
Sew_Sumi - 03.08.2016
If this is part of a downloaded gamemode, you should be chasing up support there... Unless you messed around with it and broke it...
Re: Ban command is bugged -
Fantje - 03.08.2016
The problem is: The ban updates into the database. But when I join I get the ban screen. When I press ok it will let me spawn but my stats will not load. So maybe make on response kick?
Re: Ban command is bugged -
Fantje - 03.08.2016
Here is the problem:
PHP код:
Dialog_Show(playerid, dialogUnused, DIALOG_STYLE_MSGBOX, "Notice", DIALOG, "Close", "");
DelayKick(playerid);
It doesn't kick the player
Re: Ban command is bugged -
BoBiTza - 03.08.2016
Go to function DelayKick and Kick(playerid); in some circumstation