Kaip galima padaryti, kad nuėjus i amxmodmenu->Užbaninti žaidėja pasirenki nicka, laika ir t.t ir kad užbanintu iškart ir padarytu screenus:
Kodas:amxbans_main.sma
Code: Select all
/* AMXBans, managing bans for Half-Life modifications Copyright (C) 2003, 2004 Ronald Renes / Jeroen de Rover Copyright (C) 2009, 2010 Thomas Kurz Amxbans Main Plugin*/ new const AUTHOR[] = "GmStaff, xPaw, ~Val~"new const PLUGIN_NAME[] = "AMXBans Main"new const VERSION[] = "Gm 1.5" // This is used in the plugins namenew const DATE[] = "13:06 18.12.2010" new const amxbans_version[] = "1.5" // This is for the DB//#define UNBAN_GAME_DEL #include <amxmodx>#include <amxmisc>#include <sqlx>#include <time> // Amxbans Core natives#include "include/amxbans_core.inc" // Amxbans .inl files#include "include/amxbans/global_vars.inl"#include "include/amxbans/color_chat.inl"#include "include/amxbans/init_functions.inl"#include "include/amxbans/check_player.inl"#include "include/amxbans/check_flag.inl"#include "include/amxbans/menu_stocks.inl"#include "include/amxbans/menu_ban.inl"#include "include/amxbans/menu_disconnected.inl"#include "include/amxbans/menu_history.inl"#include "include/amxbans/menu_flag.inl"#include "include/amxbans/cmdBan.inl"#include "include/amxbans/cmdUnban.inl"#include "include/amxbans/web_handshake.inl" // 16k * 4 = 64k stack size#pragma dynamic 16384 // Give the plugin some extra memory to use public plugin_init() { register_plugin(PLUGIN_NAME, VERSION, AUTHOR) register_cvar("amxbans_version", VERSION, FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_UNLOGGED|FCVAR_SPONLY) register_dictionary("amxbans.txt") register_dictionary("common.txt") register_dictionary("time.txt") new szGame[20]; get_modname(szGame, charsmax(szGame)); register_clcmd("amx_banmenu", "cmdBanMenu", ADMIN_BAN, "- displays ban menu") register_clcmd("amxbans_custombanreason", "setCustomBanReason", ADMIN_BAN, "- configures custom ban message") register_clcmd("amx_banhistorymenu", "cmdBanhistoryMenu", ADMIN_BAN, "- displays banhistorymenu") register_clcmd("amx_bandisconnectedmenu", "cmdBanDisconnectedMenu", ADMIN_BAN, "- displays bandisconnectedmenu") register_clcmd("amx_flaggingmenu","cmdFlaggingMenu",ADMIN_BAN,"- displays flagging menu") register_srvcmd("amx_sethighbantimes", "setHighBantimes") register_srvcmd("amx_setlowbantimes", "setLowBantimes") register_srvcmd("amx_setflagtimes","setFlagTimes") register_concmd("amx_reloadreasons", "cmdFetchReasons", ADMIN_CFG) pcvar_serverip = register_cvar("amxbans_server_address","") pcvar_server_nick = register_cvar("amxbans_servernick", "") pcvar_discon_in_banlist = register_cvar("amxbans_discon_players_saved","10") pcvar_complainurl = register_cvar("amxbans_complain_url", "www.yoursite.com") // Dont use http:// then the url will not show pcvar_debug = register_cvar("amxbans_debug", "0") // Set this to 1 to enable debug pcvar_add_mapname = register_cvar("amxbans_add_mapname_in_servername", "0") pcvar_flagged_all = register_cvar("amxbans_flagged_all_server","1") pcvar_show_in_hlsw = register_cvar("amxbans_show_in_hlsw", "1") pcvar_show_hud_messages = register_cvar("amxbans_show_hud_messages", "1") pcvar_higher_ban_time_admin = register_cvar("amxbans_higher_ban_time_admin", "n") pcvar_admin_mole_access = register_cvar("amxbans_admin_mole_access", "r") pcvar_show_name_evenif_mole = register_cvar("amxbans_show_name_evenif_mole", "1") pcvar_custom_statictime = register_cvar("amxbans_custom_statictime","1440") pcvar_show_prebanned = register_cvar("amxbans_show_prebanned","1") pcvar_show_prebanned_num = register_cvar("amxbans_show_prebanned_num","2") pcvar_default_banreason = register_cvar("amxbans_default_ban_reason","unknown") pcvar_extendedbanmenu = register_cvar("amxbans_extendedbanmenu","0") register_concmd("amx_ban", "cmdBan", ADMIN_BAN, "<steamID or nickname or #authid or IP> <time in mins> <reason>") register_concmd("amx_banip", "cmdBan", ADMIN_BAN, "<steamID or nickname or #authid or IP> <time in mins> <reason>") register_concmd("amx_unban", "cmdUnBan", ADMIN_BAN, "<steamID or IP>") register_srvcmd("amx_list", "cmdLst", ADMIN_RCON, "sends playerinfos to web") g_coloredMenus = colored_menus() g_MyMsgSync = CreateHudSyncObj() g_banReasons = ArrayCreate(128,7) g_banReasons_Bantime = ArrayCreate(1,7) g_disconPLname = ArrayCreate(32,1) g_disconPLauthid = ArrayCreate(35,1) g_disconPLip = ArrayCreate(22,1) plnum = get_maxplayers() new configsDir[64] get_configsdir(configsDir, 63) server_cmd("exec %s/amxbans.cfg", configsDir) color_chat_init()}create_forwards() { MFHandle[Ban_MotdOpen]=CreateMultiForward("amxbans_ban_motdopen",ET_IGNORE,FP_CELL) MFHandle[Player_Flagged]=CreateMultiForward("amxbans_player_flagged",ET_IGNORE,FP_CELL,FP_CELL,FP_STRING) MFHandle[Player_UnFlagged]=CreateMultiForward("amxbans_player_unflagged",ET_IGNORE,FP_CELL)}public addMenus() { new szKey[64] format(szKey,charsmax(szKey),"%L",LANG_SERVER,"ADMMENU_FLAGGING") AddMenuItem(szKey,"amx_flaggingmenu",ADMIN_BAN,PLUGIN_NAME) format(szKey,charsmax(szKey),"%L",LANG_SERVER,"ADMMENU_DISCONNECTED") AddMenuItem(szKey,"amx_bandisconnectedmenu",ADMIN_BAN,PLUGIN_NAME) format(szKey,charsmax(szKey),"%L",LANG_SERVER,"ADMMENU_HISTORY") AddMenuItem(szKey,"amx_banhistorymenu",ADMIN_BAN,PLUGIN_NAME) AddMenuItem ( "AMXBans: Screens", "amx_ssbanmenu", ADMIN_BAN, "AMXBans: Screens" );}//forward from amxbans_corepublic amxbans_sql_initialized(Handle:sqlTuple,dbPrefix[]) { copy(g_dbPrefix,charsmax(g_dbPrefix),dbPrefix) //db was already initialized, second init can be caused by a second forward from main plugin //this should never happen!! if(g_SqlX != Empty_Handle) { log_amx("[AMXBans Error] DB Info Tuple from amxbans_core initialized twice!!") return PLUGIN_HANDLED } g_SqlX=sqlTuple if ( get_pcvar_num(pcvar_debug) >= 1 ) log_amx("[AMXBans] Received DB Info Tuple from amxbans_core: %d | %s", sqlTuple,g_dbPrefix) if(g_SqlX==Empty_Handle) { log_amx("[AMXBans Error] DB Info Tuple from amxbans_main is empty! Trying to get a valid one") new host[64], user[64], pass[64], db[64] get_cvar_string("amx_sql_host", host, 63) get_cvar_string("amx_sql_user", user, 63) get_cvar_string("amx_sql_pass", pass, 63) get_cvar_string("amx_sql_db", db, 63) g_SqlX = SQL_MakeDbTuple(host, user, pass, db) get_cvar_string("amx_sql_prefix",g_dbPrefix,charsmax(g_dbPrefix)) } create_forwards() set_task(0.1, "banmod_online") set_task(0.2, "fetchReasons") set_task(2.0, "addMenus") return PLUGIN_HANDLED} //////////////////////////////////////////////////////////////////public get_higher_ban_time_admin_flag() { new flags[24] get_pcvar_string(pcvar_higher_ban_time_admin, flags, 23) return(read_flags(flags))}public get_admin_mole_access_flag() { new flags[24] get_pcvar_string(pcvar_admin_mole_access, flags, 23) return(read_flags(flags))}public delayed_kick(player_id) { player_id-=200 new userid = get_user_userid(player_id) new kick_message[128] format(kick_message,127,"%L", player_id,"KICK_MESSAGE") if ( get_pcvar_num(pcvar_debug) >= 1 ) log_amx("[AMXBANS DEBUG] Delayed Kick ID: <%d>", player_id) server_cmd("kick #%d %s",userid, kick_message) g_kicked_by_amxbans[player_id]=true g_being_banned[player_id] = false return PLUGIN_CONTINUE} /********* Error handler ***************/MySqlX_ThreadError(szQuery[], error[], errnum, failstate, id) { if (failstate == TQUERY_CONNECT_FAILED) { log_amx("%L", LANG_SERVER, "TCONNECTION_FAILED") } else if (failstate == TQUERY_QUERY_FAILED) { log_amx("%L", LANG_SERVER, "TQUERY_FAILED") } log_amx("%L", LANG_SERVER, "TQUERY_ERROR", id) log_amx("%L", LANG_SERVER, "TQUERY_MSG", error, errnum) log_amx("%L", LANG_SERVER, "TQUERY_STATEMENT", szQuery)}/********* client functions ************/public client_authorized(id) { //fix for the invalid tuple error at mapchange, only a fast fix now if(g_SqlX==Empty_Handle) { set_task(2.0,"client_authorized",id) return PLUGIN_HANDLED } //check if an activ ban exists check_player(id) return PLUGIN_CONTINUE}public client_putinserver(id) { //fix for the invalid tuple error at mapchange, only a fast fix now if(g_SqlX==Empty_Handle) { set_task(5.0,"client_putinserver",id) return PLUGIN_HANDLED } //check if the player was banned before prebanned_check(id) //remove the player from the disconnect player list because he is already connected ;-) disconnect_remove_player(id) return PLUGIN_CONTINUE}public client_disconnect(id) { g_being_banned[id]=false if(!g_kicked_by_amxbans[id]) { //only add players to disconnect list if not kicked by amxbans disconnected_add_player(id) } else if(g_being_flagged[id]) { // if kicked by amxbans maybe remove the flagged, not added yet /*****///remove_flagged_by_steam(0,id,0) } //reset some vars g_kicked_by_amxbans[id]=false g_being_flagged[id]=false g_nextround_kick[id]=false}/********* timecmd functions ************/public setHighBantimes() { new arg[32] new argc = read_argc() - 1 g_highbantimesnum = argc if(argc < 1 || argc > 14) { log_amx("[AMXBANS] You have more than 14 or less than 1 bantimes set in amx_sethighbantimes") log_amx("[AMXBANS] Loading default bantimes") loadDefaultBantimes(1) return PLUGIN_HANDLED } new i = 0 new num[32], flag[32] while (i < argc) { read_argv(i + 1, arg, 31) parse(arg, num, 31, flag, 31) if(equali(flag, "m")) { g_HighBanMenuValues[i] = str_to_num(num) } else if(equali(flag, "h")) { g_HighBanMenuValues[i] = (str_to_num(num) * 60) } else if(equali(flag, "d")) { g_HighBanMenuValues[i] = (str_to_num(num) * 1440) } else if(equali(flag, "w")) { g_HighBanMenuValues[i] = (str_to_num(num) * 10080) } i++ } return PLUGIN_HANDLED}public setLowBantimes() { new arg[32] new argc = read_argc() - 1 g_lowbantimesnum = argc if(argc < 1 || argc > 14) { log_amx("[AMXBANS] You have more than 14 or less than 1 bantimes set in amx_setlowbantimes") log_amx("[AMXBANS] Loading default bantimes") loadDefaultBantimes(2) return PLUGIN_HANDLED } new i = 0 new num[32], flag[32] while (i < argc) { read_argv(i + 1, arg, 31) parse(arg, num, 31, flag, 31) if(equali(flag, "m")) { g_LowBanMenuValues[i] = str_to_num(num) } else if(equali(flag, "h")) { g_LowBanMenuValues[i] = (str_to_num(num) * 60) } else if(equali(flag, "d")) { g_LowBanMenuValues[i] = (str_to_num(num) * 1440) } else if(equali(flag, "w")) { g_LowBanMenuValues[i] = (str_to_num(num) * 10080) } i++ } return PLUGIN_HANDLED}public setFlagTimes() { new arg[32] new argc = read_argc() - 1 g_flagtimesnum = argc if(argc < 1 || argc > 14) { log_amx("[AMXBANS] You have more than 14 or less than 1 flagtimes set in amx_setflagtimes") log_amx("[AMXBANS] Loading default flagtimes") loadDefaultBantimes(3) return PLUGIN_HANDLED } new i = 0 new num[32], flag[32] while (i < argc) { read_argv(i + 1, arg, 31) parse(arg, num, 31, flag, 31) if(equali(flag, "m")) { g_FlagMenuValues[i] = str_to_num(num) } else if(equali(flag, "h")) { g_FlagMenuValues[i] = (str_to_num(num) * 60) } else if(equali(flag, "d")) { g_FlagMenuValues[i] = (str_to_num(num) * 1440) } else if(equali(flag, "w")) { g_FlagMenuValues[i] = (str_to_num(num) * 10080) } i++ } return PLUGIN_HANDLED}loadDefaultBantimes(num) { if(num == 1 || num == 0) server_cmd("amx_sethighbantimes 5 60 240 600 6000 0") if(num == 2 || num == 0) server_cmd("amx_setlowbantimes 5 30 60 480 600 1440") if(num == 3 || num == 0) server_cmd("amx_setflagtimes 60 240 600 1440 10080 40320 90720 0")}/********* mysql escape functions ************/mysql_escape_string(const source[],dest[],len){ copy(dest, len, source); replace_all(dest,len,"\\","\\\\"); replace_all(dest,len,"\0","\\0"); replace_all(dest,len,"\n","\\n"); replace_all(dest,len,"\r","\\r"); replace_all(dest,len,"\x1a","\Z"); replace_all(dest,len,"'","\'"); replace_all(dest,len,"^"","\^"");}mysql_get_username_safe(id,dest[],len) { new name[128] get_user_name(id,name,127) mysql_escape_string(name,dest,len)}mysql_get_servername_safe(dest[],len) { new server_name[256] get_cvar_string("hostname", server_name, charsmax(server_name)) mysql_escape_string(server_name,dest,len)}
Code: Select all
#include < amxmodx >#include < amxmisc >#include < fakemeta >#include < colorchat > #define PLUGIN "AMXBans: Screens"#define VERSION "0.3"#define AUTHOR "GmStaff" new victimnew CvarMaxss, CvarInterval, CvarTimestamptype, CvarHUDText;new CvarBanTime, CvarBanReason; new CountMenunew CvarCountScreensnew g_max_playersnew g_user_ids[33]new g_player[33] public plugin_init ( ) { register_plugin ( PLUGIN, VERSION, AUTHOR ); register_clcmd ( "amx_ssban", "cmdScreen", ADMIN_BAN, "<authid, nick or #userid> <count of screens>" ); register_clcmd ( "amx_ssbanmenu", "cmdScreenMenu", ADMIN_BAN, " - display screens menu" ); CvarMaxss = register_cvar ( "amx_maxscreens", "10" ); CvarInterval = register_cvar ( "amx_interval", "1.0" ); CvarTimestamptype = register_cvar ( "amx_stamptype", "3" ); CvarHUDText = register_cvar ( "amx_hudtext", "Cheese! :)" ); CvarCountScreens = register_cvar ( "amx_screenscount", "1 2 3 4 5 6 7 8 9"); CvarBanTime = register_cvar ( "amx_ssbantime", "0" ); CvarBanReason = register_cvar ( "amx_ssbanreason", "Screens, go gm-community.net" ); register_cvar ( "amxbans_ssversion", VERSION, FCVAR_SERVER | FCVAR_SPONLY ); g_max_players = get_maxplayers();} public plugin_cfg ( ) { new line[ 128 ], token[ 10 ], szKey[ 16 ]; get_pcvar_string ( CvarCountScreens, line, 127 ); CountMenu = menu_create ( "\rCount of screens\w", "CountScreensMenu" ); while ( contain ( line, " " ) != -1 ) { strbreak ( line, token, 9, line, 127 ); format( szKey, charsmax ( szKey ), "Make %s screen(s)", token ) menu_additem ( CountMenu, szKey, token ); }} public cmdScreenMenu ( id, level, cid ) { if ( !cmd_access ( id, level, cid, 1 ) ) return PLUGIN_HANDLED; new menu = menu_create ( "\rChoose player", "PlayersMenu" ); new i, name[ 32 ], tempid[ 10 ]; for ( i = 1; i <= g_max_players; i++ ) { if ( is_user_connected ( i ) ) { get_user_name ( i, name, 31 ); num_to_str ( i, tempid, 9 ); g_user_ids[ i ] = get_user_userid ( i ); menu_additem ( menu, name, tempid, 0 ); } } menu_display ( id, menu, 0 ); return PLUGIN_HANDLED;} public PlayersMenu ( id, menu, item ) { if ( item == MENU_EXIT ) { return PLUGIN_HANDLED; } new data[ 6 ], iName[ 64 ]; new access, callback; menu_item_getinfo ( menu, item, access, data, 5, iName, 63, callback ); g_player[ id ] = str_to_num ( data ); menu_display ( id, CountMenu, 0 ); return PLUGIN_HANDLED;} public CountScreensMenu ( id, menu, item ) { if ( item == MENU_EXIT ) { return PLUGIN_HANDLED; } new data[ 6 ], iName[ 64 ]; new access, callback; new player = g_player[id]; menu_item_getinfo ( menu, item, access, data,5, iName, 63, callback ); if ( g_user_ids[ player ] == get_user_userid ( player ) ) { client_cmd ( id, "amx_ssban #%d %s", g_user_ids[ player ], data ); } return PLUGIN_HANDLED;} public cmdScreen ( id, level, cid ) { if ( !cmd_access ( id, level, cid, 3 ) ) { return PLUGIN_HANDLED; } new arg1[ 24 ], arg2[ 4 ]; read_argv ( 1, arg1, 23 ); read_argv ( 2, arg2, 3 ); new screens = str_to_num ( arg2 ); victim = cmd_target ( id, arg1, 1 ); if ( screens > get_pcvar_num ( CvarMaxss ) ) { console_print ( id, "Gm# You cannot take that many screenshots!" ); return PLUGIN_HANDLED; } if ( !victim ) { return PLUGIN_HANDLED; } new Float: interval = get_pcvar_float ( CvarInterval ); new array[ 2 ]; array[ 0 ] = id; array[ 1 ] = victim; set_task ( interval, "takeScreen", 0, array, 2, "a", screens ); set_task ( interval * screens + 1.0, "victimBan" ); return PLUGIN_HANDLED;} public takeScreen ( array[ 2 ] ) { new victim = array[ 1 ]; new id = array[ 0 ]; new timestamp[ 32 ], HUDText[ 32 ], name[ 32 ], adminname[ 32 ]; get_time ( "%m/%d/%Y - %H:%M:%S", timestamp, 31 ); get_user_name ( victim, name, 31 ); get_user_name ( id, adminname, 31 ); get_pcvar_string ( CvarHUDText, HUDText, 31 ); switch( get_pcvar_num ( CvarTimestamptype ) ) { case 0: { ColorChat( id, RED, "Gm#^x01 Screenshot taken on player ^x03%s^x01 by admin ^x04%s^x01", name, adminname ); client_cmd ( victim, "snapshot" ); } case 1: { ColorChat( id, RED, "Gm#^x01 Screenshot taken on player ^x03%s^x01 by admin ^x04%s^x01 (Date: %s)", name, adminname, timestamp ); client_cmd(victim, "snapshot"); } case 2: { set_hudmessage( 225, 225, 225, 0.02, 0.90, 0, 1.0, 2.0 ); show_hudmessage ( victim, "%s", HUDText ); client_cmd ( victim, "snapshot" ); } case 3: { set_hudmessage( 225, 225, 225, 0.02, 0.90, 0, 1.0, 2.0 ); show_hudmessage ( victim, "%s", HUDText ); ColorChat ( id, RED, "Gm#^x01 Screenshot taken on player ^x03%s^x01 by admin ^x04%s^x01 (Date: %s)", name, adminname, timestamp ); client_cmd ( victim, "snapshot" ); } } return PLUGIN_CONTINUE;} public victimBan ( id ) { new array[ 2 ], Reason[ 50 ]; array[ 0 ] = id; array[ 1 ] = victim; new victimId = get_user_userid ( victim ); get_pcvar_string ( CvarBanReason, Reason, 31 ); client_cmd ( id, "amx_ban %i #%i ^"%s^"", get_pcvar_num ( CvarBanTime ), victimId, Reason);}
Code: Select all
register_concmd("[b]amx_ban[/b]", "cmdBan", ADMIN_BAN, "<steamID or nickname or #authid or IP> <time in mins> <reason>")
Code: Select all
register_clcmd ( "[b]amx_ssban[/b]", "cmdScreen", ADMIN_BAN, "<authid, nick or #userid> <count of screens>" );