01.12.2016, 05:14
PHP код:
BanCheck(playerid)
{
new
retrieveName[MAX_PLAYER_NAME],
retrieveBannedBy[MAX_PLAYER_NAME],
retrieveReason[50],
retrieveBanDate,
retrieveDuration,
retrieveGCPI[60],
retrieveIP[16 + 1],
Query[380]
;
GetPlayerIp(playerid, retrieveIP, sizeof(retrieveIP));
gpci(playerid, retrieveGCPI, sizeof(retrieveGCPI));
format(Query, sizeof(Query), "SELECT * FROM `Bans` WHERE `Name` = '%q' COLLATE NOCASE OR `GPCI` = '%q' OR `IP` = '%q' LIMIT 1", GetPlayerName(playerid), retrieveGCPI, retrieveIP);
queryresult = db_query(Database, Query);
if(db_num_rows(queryresult))
{
db_get_field_assoc(queryresult, "Name", retrieveName, sizeof(retrieveName));
db_get_field_assoc(queryresult, "BannerName", retrieveBannedBy, sizeof(retrieveBannedBy));
db_get_field_assoc(queryresult, "Reason", retrieveReason, sizeof(retrieveReason));
retrieveBanDate = db_get_field_assoc_int(queryresult, "BANDATE");
retrieveDuration = db_get_field_assoc_int(queryresult, "UNBANDATE");
if(gettime() - retrieveDuration > (retrieveDuration - retrieveBanDate))
{
format(Query, sizeof(Query), "Your ban expired on %s \nWelcome back %s!", TimestampToDateTime(retrieveDuration), GetPlayerName(playerid));
SendClientMessage(playerid, COLOR_SERVER, Query);
//Remove ban fuction heree working bla bla
}
else
{
format(Query, sizeof(Query), "\
"COL_RED"Username: "COL_WHITE"%s\n\
"COL_RED"Banned IP: "COL_WHITE"%s\n\
"COL_RED"Admin banned you: "COL_WHITE"%s\n\
"COL_RED"Reason of Ban: "COL_WHITE"%s\n\
"COL_RED"Date of Ban: "COL_WHITE"%s\n\
"COL_RED"Date of Unban: "COL_WHITE"%s", retrieveName, retrieveIP, retrieveBannedBy,
retrieveReason, TimestampToDateTime(retrieveBanDate), TimestampToDateTime(retrieveDuration));
ShowPlayerDialog(playerid, 500, DIALOG_STYLE_MSGBOX, "Account Banned!", Query, "Exit", "");
defer KickEx(playerid);
return 1;
}
}
return 1;
}
public OnPlayerConnect(playerid)
{
SendDeathMessage(INVALID_PLAYER_ID, playerid, 200);
for( new i; i < _: PlayerInfo; ++i ) pInfo[ playerid ][ PlayerInfo: i ] = 0;
//------------------[ANTI-BOTS]------------------
new ConnIP[16];
GetPlayerIp(playerid,ConnIP,16);
new compare_IP[16];
new number_IP = 0;
for(new i=GetPlayerPoolSize(); i != -1; i--) {
if(IsPlayerConnected(i)) {
GetPlayerIp(i,compare_IP,16);
if(!strcmp(compare_IP,ConnIP)) number_IP++;
}
}
if((GetTickCount() - Join_Stamp) < Time_Limit)
exceed=1;
else
exceed=0;
if(strcmp(ban_s, ConnIP, false) == 0 && exceed == 1 )
{
Same_IP++;
if(Same_IP > SAME_IP_CONNECT)
{
BanEx(playerid, "BOTS");
Same_IP=0;
}
}
else
{
Same_IP=0;
}
if(number_IP > IP_LIMIT)
Kick(playerid);
GetStampIP(playerid);
if(IsPlayerNPC(playerid))
{
new server_IP[16];
format(server_IP, 16, "127.0.0.1");
if(strcmp(ConnIP,server_IP,true) != 0)
{
BanEx(playerid, "BOTS"); // Ban is the safest thing here, as if you kick, they can still flood you with endless connections
return 0;
}
}
//----------------------------------------------
//-------------[CHECK BAN]--------------
BanCheck(playerid);
//----------------------------------------------
//-------------[Login-Register]--------------
new
Query[ 256 ] // Create a Query
;
pInfo[playerid][USER_LOGGED_IN] = false;
format(Query, sizeof(Query), "SELECT `Username` FROM `users` WHERE `Username` = '%s' COLLATE NOCASE", DB_Escape(GetPlayerName(playerid)));
queryresult = db_query(Database, Query);
if(db_num_rows(queryresult))
{
format(Query, sizeof(Query), ""COL_WHITE"Welcome, this account ("COL_BLUE"%s)"COL_WHITE" is registered\nPlease enter the password to login\n\n"COL_GRIS"If you are not the owner of this account, leave and rejoin with a different nickname", GetPlayerName(playerid), playerid);
ShowPlayerDialog(playerid, dlogin, DIALOG_STYLE_PASSWORD, ""COL_BLUE"Login Panel", Query, "Login", "Leave");
}
else
{
format(Query, sizeof(Query), ""COL_WHITE"Welcome, this account ("COL_RED"%s)"COL_WHITE" is not registered\nPlease enter your desired password for this account\n\n"COL_GRIS"Once you are registered, do not share your password with anyone besides yourself!", GetPlayerName(playerid), playerid);
ShowPlayerDialog(playerid, dregister, DIALOG_STYLE_PASSWORD, ""COL_BLUE"Register Panel", Query, "Register", "Leave");
}
db_free_result(queryresult);
return 1;
}