#include #include #include // ^ tf2_stocks.inc itself includes sdktools.inc and tf2.inc #pragma semicolon 1 #pragma newdecls required #define PLUGIN_VERSION "0.1" public Plugin myinfo = { name = "Config Reminder", author = "Rhizome", description = "Hassles users until they exec", version = PLUGIN_VERSION, url = "https://rhizome.tf" }; public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) { // No need for the old GetGameFolderName setup. EngineVersion g_engineversion = GetEngineVersion(); if (g_engineversion != Engine_TF2) { SetFailState("This plugin was made for use with Team Fortress 2 only."); } } public void OnPluginStart() { /** * @note For the love of god, please stop using FCVAR_PLUGIN. * Console.inc even explains this above the entry for the FCVAR_PLUGIN define. * "No logic using this flag ever existed in a released game. It only ever appeared in the first hl2sdk." */ CreateConVar("sm_pluginnamehere_version", PLUGIN_VERSION, "Standard plugin version ConVar. Please don't change me!", FCVAR_REPLICATED|FCVAR_NOTIFY|FCVAR_DONTRECORD); } public void OnMapStart() { /** * @note Precache your models, sounds, etc. here! * Not in OnConfigsExecuted! Doing so leads to issues. */ CreateTimer(15.0, PostReminder, 0, TIMER_REPEAT); HookEvent("teamplay_restart_round", BlockStart, EventHookMode_Pre); char config_name[64]; LoadConfig(config_name, sizeof(config_name)); } Action PostReminder(Handle timer, any data) { CPrintToChatAll("{red}No config is applied! Ensure config is applied before starting."); return Plugin_Handled; } Action BlockStart(Event event, const char[] name, bool dontBroadcast) { ServerCommand("mp_tournament_restart"); CPrintToChatAll("{red}Bad rollout! {default}(Did you forget to exec?)"); return Plugin_Handled; } bool LoadConfig(char[] config_name, int maxlength) { char current_map[64]; GetCurrentMap(current_map, sizeof(current_map)); char map_type[8]; if (SplitString(current_map, "_", map_type, sizeof(map_type)) == -1) { PrintToServer("[AUTOCONFIG] Couldn't find map prefix'"); return false; } KeyValues map_configs = CreateKeyValues("Map_Configs"); char config_file[256]; BuildPath(Path_SM, config_file, sizeof(config_file), "configs/config_loader.cfg"); map_configs.ImportFromFile(config_file); if (!map_configs.JumpToKey(map_type)) { PrintToServer("[AUTOCONFIG] Couldn't find table for '%s' maps'", map_type); return false; } if (!map_configs.GotoFirstSubKey(false)) { PrintToServer("[AUTOCONFIG] No maps listed for '%s' maps'", map_type); return false; } while (true) { char current_key[64]; map_configs.GetSectionName(current_key, sizeof(current_key)); PrintToServer(current_key); if (StrContains(current_map, current_key, false) != -1) { map_configs.GetString(current_key, config_name, maxlength); PrintToServer("[AUTOCONFIG] Found applicable config: %s", config_name); return true; } if (!map_configs.GotoNextKey(false)) { PrintToServer("[AUTOCONFIG] No match found for %s", current_map); return false; } } }