#include #define _ban_module #define _message_module #define _mute_module #define _killfeed_module #define _chat_cleaner_module //#define _steam_backend #if defined _ban_module #include "modules/bans.sp" #endif #if defined _mute_module #include "modules/mutes.sp" #endif #if defined _message_module #include "modules/messages.sp" #endif #if defined _killfeed_module #include "modules/killfeed.sp" #endif #if defined _chat_cleaner_module #include "modules/chat_cleaner.sp" #endif #define PLUGIN_VERSION "3.1" public Plugin:myinfo = { name = "Facti13 System Browser", author = "gsd", description = "Threaded mysql control plugin", version = PLUGIN_VERSION, url = "https://vk.me/re1ard" }; char g_Database_Name[32] = "sql_bans"; char g_MainChatPrefix[32] = "[FSB]"; Handle g_server_id_convar = INVALID_HANDLE; //MAIN public OnPluginStart() { g_server_id_convar = CreateConVar("sm_fsb_server_id", "", "fsb server id"); LoadConfig(); SetupDB(); #if defined _mute_module MuteSetup(); #endif #if defined _chat_cleaner_module //setupChatEvents(); #endif #if defined _message_module MessageSetup(); #endif #if defined _killfeed_module KillfeedSetup(); #endif RegAdminCmd("sm_fsb_reload", COMMAND_ReloadCfg, ADMFLAG_ROOT); HookConVarChange(g_server_id_convar, OnServerIdChanged); } public OnServerIdChanged(Handle:cvar, const String:oldVal[], const String:newVal[]) { #if defined _message_module messagesSetServerId(newVal, 32); #endif #if defined _killfeed_module killfeedSetServerId(newVal, 32); #endif } public OnMapStart() { char server_id[32]; GetConVarString(g_server_id_convar, server_id, sizeof(server_id)); #if defined _message_module messagesSetServerId(server_id, 32); #endif #if defined _killfeed_module killfeedSetServerId(server_id, 32); #endif if (strlen(server_id) == 0) LogError("sm_fsb_server_id is not setted"); } public OnPluginEnd() { #if defined _mute_module MuteDeSetup(); #endif #if defined _chat_cleaner_module //unSetupChatEvents(); #endif } public OnClientAuthorized(int client) { if(IsFakeClient(client)) { return; } #if defined _ban_module BanCheckPlayer(client); #endif #if defined _mute_module MuteCheckPlayer(client); #endif } public OnClientDisconnect(int client) { #if defined _mute_module MuteClearPlayer(client); #endif } //MYSQL CALLBACK public GotDatabase(Handle:owner, Handle:hndl, const String:error[], any:data) { if (hndl == INVALID_HANDLE) { LogError("%s Database Connection Error: %s", g_MainChatPrefix, error); } else { LogError("%s Database Connected", g_MainChatPrefix); /////////////////////////////// #if defined _ban_module g_hBansDatabase = hndl; #endif /////////////////////////////// #if defined _mute_module g_hMuteDatabase = hndl; #endif /////////////////////////////// #if defined _message_module g_hMessageDatabase = hndl; #endif /////////////////////////////// #if defined _killfeed_module g_hKillfeedDatabase = hndl; #endif } } //FUNCTIONS stock void SetupDB(){ SQL_TConnect(GotDatabase, g_Database_Name); } stock void LoadConfig(){ char confPath[256]; BuildPath(Path_SM, confPath, sizeof(confPath), "configs/fsb.cfg"); PrintToServer("%s Loading config from file: %s", g_MainChatPrefix, confPath); char main_kv[32] = "fsb"; KeyValues FSB_config = new KeyValues(main_kv); ///////////////////////////////////////////////////////////////////////////////////////////// if(FSB_config.ImportFromFile(confPath)){ FSB_config.JumpToKey("responds"); #if defined _ban_module FSB_config.GetString("ban", g_Responde_ClientInBan, sizeof(g_Responde_ClientInBan)); FSB_config.GetString("perma_ban", g_Responde_ClientInPermaBan, sizeof(g_Responde_ClientInPermaBan)); FSB_config.GetString("detect_new_client", g_Responde_DetectNewClient, sizeof(g_Responde_DetectNewClient)); #endif FSB_config.Rewind(); ///////////////////////// FSB_config.JumpToKey("settings"); #if defined _ban_module FSB_config.GetString("bans_tablename", g_BansTableName, sizeof(g_BansTableName)); FSB_config.GetString("ban_prefix", g_BansChatPrefix, sizeof(g_BansChatPrefix)); FSB_config.GetString("localhost", g_LocalhostIP, sizeof(g_LocalhostIP)); #endif FSB_config.Rewind(); ///////////////////////// #if defined _steam_backend char address[64]; int port; FSB_config.JumpToKey("steam_backend"); FSB_config.GetString("address", address, sizeof(address)); port = FSB_config.GetNum("port") SetupBackend(address, port); #endif //FSB_config.GetString("mute_tablename", g_MuteTableName, sizeof(g_MuteTableName)); PrintToServer("%s Success load config!", g_MainChatPrefix); } } //ACTIONS public Action:COMMAND_ReloadCfg(int cid, int args){ LoadConfig(); if (cid == 0){ PrintToServer("%s Конфигурация была перезагружена.", g_MainChatPrefix); } else { PrintToChat(cid, "%s Конфигурация была перезагружена.", g_MainChatPrefix); } return Plugin_Handled; }