Raised This Month: $ Target: $400
 0% 

Plugin not doing what it supposed to be doing.


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
XenomX
Junior Member
Join Date: Jan 2006
Old 03-05-2006 , 12:09   Plugin not doing what it supposed to be doing.
Reply With Quote #1

Hello,

I've got the Ban Management from Kaksi (originally for AMX Mod) but this one is ported to AMXX Mod.
(The plugin stores bans in an mysql database, when a player connects, the plugin will check if the player exists in the database, if? then disconnect him.)
The plugin compiles fine, no errors.

But, i ban a player, the plugin stores everything in the mysql database, works fine.
But when the player re-connects, the plugin removes the ban from the mysql database and lets the player join.

Now i have commented the DELETE query, so the player wont be deleted.
But the user can still join, i looked at the query etc. and everything looks fine to me.
The query will select the information from the database where the steamid or ip is equal to the player ip/steamid.
The information in the database is correct, but there is no match :s or the plugins skips this step or something.

Plugin is below.
Hope you can figure this out, i really need this plugin.

(if there is something wrong it has to be in the function check_delayed i think.)

Thanks in advance.

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" rel="nofollow noopener">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 ----------------------------------------//
XenomX is offline
 


Thread Tools
Display Modes

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 20:27.


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