Raised This Month: $ Target: $400
 0% 

MySQL Banning NICK


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
Viera
Senior Member
Join Date: Sep 2008
Location: Poland
Old 08-07-2009 , 11:55   MySQL Banning NICK
Reply With Quote #1

Hi all, can you help mi to find some plugin who banning on nick and save/read all to/frome MySQL, or write something add to AMXBans who ban for nick.


I find that code but a dont know how to edit this to ban for nick.
Code:
/* 
* 
* Mysql Ban Management for STEAM 
* 
* Author: kaksi 
* Email: <a href="mailto:[email protected]">[email protected]</a> 
* Web: <a href="http://www.gbgonline.net/" target="_blank">http://www.gbgonline.net/</a> 
* 
* Thanks to: 
* JustinHoMi - A lot of code comes from his MySQL Ban Management plugin 
* n1ghtmr - I got a lot of inspiration from his MYSQL Ban control - By Wonid/ip and Rcon plugin 
* Neurosis - Beta testing and debugging 
* 
* INSTALLATION 
* 
* ->Create the database by using the schema below 
* ->Add the following line to amx.cfg with you database info: 
* 
* amx_sqlban_host "127.0.0.1" - Adress to the SQL server 
* amx_sqlban_user "root" - SQL Server username 
* amx_sqlban_pass "" - SQL server password 
* amx_sqlban_db "amx" - The database where you created the table 
* 
* -> Compile the plugin and put in amx plugin folder 
* -> Add the plugin to plugins.ini 
* -> Restart you server and you are good to go 
* 
* 
* INSTRUCTIONS 
* 
* You can only ban players that are on the server 
* 
* Ban EITHER SteamID or IP adress by typing: 
* amx_ban1 <time> <name, userid, or ip> <reason> 
* If ban is entered by name or userid the player is banned by steamid 
* If ban is entered by IP adress the player is banned by ipaddres 
* 
* Ban BOTH SteamID AND IP Adress by typing: 
* xban <time> <name, userid or ip> <reason> 
* If ban is enterd by name, userid or IP BOTH SteamID AND IP adress will be banned 
* 
*/ 

/* SQL Schema 

CREATE TABLE `AMXX` ( 
`player_steamid` varchar(100) NOT NULL default '', 
`player_name` varchar(100) NOT NULL default '', 
`player_ip` varchar(100) NOT NULL default '', 
`reason` varchar(128) NOT NULL default '', 
`bantype` varchar(50) NOT NULL default '', 
`admin_steamid` varchar(100) NOT NULL default '', 
`admin_name` varchar(100) NOT NULL default '', 
`admin_ip` varchar(100) NOT NULL default '', 
`length` int(10) unsigned NOT NULL default '0', 
`time_created` timestamp(14) NOT NULL, 
`server` varchar(25) NOT NULL default '', 
PRIMARY KEY (`player_steamid`) 
) TYPE=MyISAM; 

*/ 

#include <amxmodx> 
#include <amxmisc> 
#include <dbi> 

new Sql:mysql 
new Result:ret 
new merror[128] 

new mhost[64] 
new muser[32] 
new mpass[32] 
new mdb[32] 
new server[128] 
new time_msg[32] 

//------------------------------------------------- START Plugin initilize ----------------------------------------// 
public plugin_init() 
{ 
register_plugin("SQLBan Mgr","0.1","kaksi") 
register_concmd("AMXX","sql_ban",ADMIN_BAN,"<mins> <nick|userid|> [reason]") 
register_cvar("amx_sql_host","127.0.0.1") 
register_cvar("amx_sql_user","user") 
register_cvar("amx_sql_pass","pass") 
register_cvar("amx_sql_db","amx") 
register_cvar("amx_sql_prefix","") 
return PLUGIN_CONTINUE 
} 
//------------------------------------------------- END Plugin initilize ----------------------------------------// 
//------------------------------------------------- START CONNECT TO DATABASAE ----------------------------------------// 
public sql_init() 
{ 
//Get server and database info... 
get_cvar_string("hostname",server,127) 
get_cvar_string("amx_sql_host",mhost,64) 
get_cvar_string("amx_sql_user",muser,32) 
get_cvar_string("amx_sql_pass",mpass,32) 
get_cvar_string("amx_sql_db",mdb,32) 

mysql = dbi_connect(mhost,muser,mpass,mdb,merror,128) 

if(mysql <= SQL_FAILED) 
server_print("[AMXX] MySQL error: could not connect : '%s'",merror) 
else 
server_print("[AMXX] Successfully connected to the database.") 
return PLUGIN_CONTINUE 
} 
//------------------------------------------------- END CONNECT TO DATABASAE ----------------------------------------// 
//------------------------------------------------- START Player Connects Player ----------------------------------------// 
public client_connect(id) 
{ 
new parm[1] 
parm[0] = id 
//Delay check, wait for steamid to be set 
set_task(5.0,"check_delayed",0,parm,1) 
return PLUGIN_HANDLED 
} 
//------------------------------------------------- End Player connects Player ----------------------------------------// 
//------------------------------------------------- START Delayed check connecting player ----------------------------------------// 

public check_delayed(parm[]) 
{ 
//Load database connection function 
sql_init() 

//Get connecting clients steamid and ipadress 
new client_steamid[40] 
get_user_authid(parm[0],client_steamid,50) 
new client_ip[16] 
get_user_ip(parm[0],client_ip,15,1) 
new client_name[40] 
get_user_name(parm[0],client_name,40) 

//Send a message to the server that a check is starting 
server_print("[AMXX] Checking of %s gebanned is...",client_name) 
client_print(0, print_chat, "[AMXX] Checking of %s gebanned is...",client_name) 

//Format the database querry 
new query[256] 
format(query,255,"SELECT player_steamid,player_ip,reason,bantype,length,now()-time_created FROM AMXX WHERE player_steamid='%s' OR player_ip='%s'",client_steamid,client_ip) 

//Execute querry 
dbi_query(mysql,query) 
new merror[64] 
dbi_error(mysql,merror,63) 

//If an error occured 
if (merror[0]) 
{ 
server_print("[AMXX] MYSQL error: %s",merror) 
return PLUGIN_CONTINUE 
} 

//If a player was found in the database, fetch data and define 
if(dbi_nextrow(ret)>0) 
{ 
new player_steamid[40],player_ip[20],reason[128],bantype[50],ban_length_s[10],ban_time_s[32] 
dbi_field(ret,1,player_steamid,39) 
dbi_field(ret,2,player_ip,19) 
dbi_field(ret,3,reason,127) 
dbi_field(ret,4,bantype,49) 
dbi_field(ret,5,ban_length_s,9) 
dbi_field(ret,6,ban_time_s,31) 

//Get the new ban_lengt and bantime 
new ban_length = str_to_num(ban_length_s) 
new ban_time = str_to_num(ban_time_s) 

//If the players bantime isn't up... 
if ((ban_time < ban_length) || (ban_length == 0)) 
{ 

//If the ban_length is permanent, format the time message 
if (ban_length == 0) 
{ 
time_msg = "Permanent" 
} 
//If the time is not permanent, format the time message 
else 
{ 
new ban_left = (ban_length - ban_time) / 60 
format(time_msg,31,"%i minutes",ban_left) 
} 

//If the player is banned by steamid, send a message and disconnect the player 
if(equal(bantype,"steamid")) 
{ 
//Check if the players SteamID is the same as in the dataase 
if(equal(client_steamid,player_steamid)) 
{ 
client_cmd(parm[0],"echo ^"[AMXX] Your SteamID has been banned from this server.^"") 
client_cmd(parm[0],"echo ^"[AMXX] Reason: %s.^"",reason) 
client_cmd(parm[0],"echo ^"[AMXX] Time left: %s.^"",time_msg) 
client_cmd(parm[0],"disconnect") 
client_print(0, print_chat, "[AMXX] %s banned.",client_name)
return PLUGIN_CONTINUE 
} 
} 
} 
//If the player is banned by IP, send a message and disconnect the player 
if(equal(bantype,"ip")) 
{ 
//Check if the players ip adress is the same as in the database 
if(equal(client_ip,player_ip)) 
{ 
client_cmd(parm[0],"echo ^"[AMXX] Your IP adress has been banned from this server.^"") 
client_cmd(parm[0],"echo ^"[AMXX] Reason: %s.^"",reason) 
client_cmd(parm[0],"echo ^"[AMXX] Time left: %s.^"",time_msg) 
client_cmd(parm[0],"disconnect")
client_print(0, print_chat, "[AMXX] %s banned.",client_name)
return PLUGIN_CONTINUE 
} 
} 
//If the player is banned by BOTH SteamID and IP Adress, send a message and disconnect the player 
if(equal(bantype,"all")) 
{ 
//Check if The players steamid is the same as in the database 
if(equal(client_steamid,player_steamid)) 
{ 
client_cmd(parm[0],"echo ^"[AMXX] Your SteamID and IP Adress has been banned from this server.^"") 
client_cmd(parm[0],"echo ^"[AMXX] Reason: %s.^"",reason) 
client_cmd(parm[0],"echo ^"[AMXX] Time left: %s.^"",time_msg) 
client_cmd(parm[0],"disconnect") 
client_print(0, print_chat, "[AMXX] %s banned.",client_name)
return PLUGIN_CONTINUE 
} 
//If the steamid doesnt math then check if the ip adress match 
else if(equal(client_ip,player_ip)) 
{ 
client_cmd(parm[0],"echo ^"[AMXX] Your SteamID and IP Adress has been banned from this server.^"") 
client_cmd(parm[0],"echo ^"[AMXX] Reason: %s.^"",reason) 
client_cmd(parm[0],"echo ^"[AMXX] Time left: %s.^"",time_msg) 
client_cmd(parm[0],"disconnect") 
client_print(0, print_chat, "[AMXX] %s banned.",client_name)
return PLUGIN_CONTINUE 
} 
} 
} 

//If the bantime has expired 
else 
{ 
//Remove the expired ban from the database 
//Format the querry 

format(query,255,"DELETE from AMXX where player_steamid='%s'",client_steamid) 

//Execute the querry 

dbi_query(mysql,query) 
dbi_error(mysql,merror,63) 

//If an error uccures 
if (merror[0]) 
{ 
server_print("[AMXX] MYSQL error: %s",merror) 
return PLUGIN_HANDLED 
} 

//If the expired ban is removed completely 

else 
{ 
console_print(parm[0],"[AMXX] Ban on steamid %s removed.",client_steamid) 
} 
} 

//If player wasn't in the database... 
server_print("[AMXX] %s wasn't in the database. Let him in...",client_name)
client_print(0, print_chat, "[AMXX] %s is niet gebanned. Veel plezier.",client_name)
return PLUGIN_CONTINUE 
} 
//------------------------------------------------- END Delayed check connecting player ----------------------------------------// 

//------------------------------------------------- START Ban Player by SteamID OR IP Adress ----------------------------------------// 
public sql_ban(id,level,cid) 
{ 
//Load database connection function 
sql_init() 

//If the player you are trying to ban has admin rights the stop 
if (!cmd_access(id,level,cid,4)) 
return PLUGIN_HANDLED 

//Define the player identifier and read it from the given command 
new player_ident[40] 
read_argv(2,player_ident,39) 

//Define the bantype variable 
new bantype[20] 

//See if you can find a matching player by nickname 
new player = find_player("bl",player_ident) 

//If a player was found, check to see if there are more than one match 
if (player) 
{ 
new player2 = find_player("blj",player_ident) 

//If more than one match, then stop 
if (player!=player2) 
{ 
console_print(id,"There are more than one players matching your argument.") 
return PLUGIN_CONTINUE 
} 

//If all went well and only one player was found, set bantype to steamid 
bantype = "steamid" 
} 

//If no player was found by nickname, check if there is a match with userid 
if (!player && player_ident[0]=='#' && player_ident[1]) 
player = find_player("k",str_to_num(player_ident[1])) 

//If there was a player match with userid set bantype to steamid 
bantype = "steamid" 

//If no matching player with userid either, then check if there is a match with IP adress 
if (!player) 
{ 
player = find_player("d",player_ident) 

//If there was a match with IP adress set bantype to IP 
bantype = "ip" 
} 

//If no match was found, abort... 
if (!player) 
{ 
console_print(id,"Client with that authid, nick, userid, or ip not found.") 
return PLUGIN_CONTINUE 
} 

//Make sure we don't ban bots 
if (is_user_bot(player)) 
{ 
new imname[32] 
get_user_name(player,imname,31) 

console_print(id,"You can not ban bots.") 

return PLUGIN_CONTINUE 
} 

//Get ban length and convert to seconds 
new ban_length_s[10],ban_length_s2[10] 
read_argv(1,ban_length_s,9) 
new multiplier = 60 
new carg 

if(contain(ban_length_s,"h") != -1) 
{ 
multiplier = 60 * 60 
carg = 'h' 
} 
else if(contain(ban_length_s,"d") != -1) 
{ 
multiplier = 60 * 60 * 24 
carg = 'd' 
} 
else if(contain(ban_length_s,"w") != -1) 
{ 
multiplier = 60 * 60 * 24 * 7 
carg = 'w' 
} 

copyc(ban_length_s2,9,ban_length_s,carg) 
new ban_length = str_to_num(ban_length_s2) * multiplier 

//Get reason and get ready to format it 
new text[64],temp[10],temp2[33] 
read_args(text,63) 
parse(text,temp,9,temp2,32) 
new length1 = strlen(temp) 
new length2 = strlen(temp2) 
new length = length1 + length2 
length+=2 

new reason[64] 
read_args(reason,63) 

//Get user and admin info to put in table 
new player_steamid[40],player_name[33],player_ip[20],admin_steamid[40],admin_name[33],admin_ip[20] 
get_user_authid(player,player_steamid,39) 
get_user_name(player,player_name,32) 
get_user_ip(player,player_ip,19,1) 

get_user_authid(id,admin_steamid,39) 
get_user_name(id,admin_name,32) 
get_user_ip(id,admin_ip,19,1) 

//Format the query 
new query[512] 
format(query,511,"INSERT into AMXX (player_steamid,player_name,player_ip,reason,bantype,admin_steamid,admin_name,admin_ip,length,server) values('%s','%s','%s','%s','%s','%s','%s','%s','%i','%s')",player_steamid,player_name,player_ip,reason[length],bantype,admin_steamid,admin_name,admin_ip,ban_length,server) 

// connect to database and insert data 
dbi_query(mysql,query) 
new merror[64] 
dbi_error(mysql,merror,63) 

//If an error uccures 
if (merror[0]) 
{ 
server_print("[AMXX] MYSQL error: %s",merror) 
return PLUGIN_HANDLED 
} 

// convert ban length back to minutes for display 
ban_length = ban_length / 60 

//Print ban to server 
console_print(id,"[AMXX] Banning %s for %i",player_name,ban_length) 
client_print(0, print_chat, "[AMXX] Player %s banned.",player_name)

//Format time message 
new time_msg[32] 
//If the ban length is 0 (permanent) 
if (ban_length == 0) 
time_msg = "Permanent" 
//Else, formate the time message 
else 
format(time_msg,31,"%i minutes",ban_length) 

//If the user is banned by steamid, print the message to the user 
if(equal(bantype,"steamid")) 
{ 
client_cmd(player,"echo ^"[AMXX] Your SetamID has been banned from this server.^"") 
client_cmd(player,"echo ^"[AMXX] Reason: %s.^"",reason) 
client_cmd(player,"echo ^"[AMXX] Time left: %s.^"",time_msg) 
client_cmd(player,"disconnect") 
return PLUGIN_CONTINUE 
} 

//If the user is banned by IP, print the message to the user 
if(equal(bantype,"ip")) 
{ 
client_cmd(player,"echo ^"[AMXX] Your IP adress has been banned from this server.^"") 
client_cmd(player,"echo ^"[AMXX] Reason: %s.^"",reason) 
client_cmd(player,"echo ^"[AMXX] Time left: %s.^"",time_msg) 
client_cmd(player,"disconnect") 
return PLUGIN_CONTINUE 
} 

//If there is a database connection, close it 
if (mysql == SQL_OK) 
{ 
dbi_close(mysql) 
return PLUGIN_HANDLED 
} return PLUGIN_HANDLED 
} 
//------------------------------------------------- END Ban Player by SteamID OR IP Adress ----------------------------------------//

Last edited by Viera; 08-07-2009 at 11:57.
Viera is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 18:22.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode