Files
2025-04-15 22:27:20 -04:00

72 lines
2.1 KiB
SourcePawn

#pragma semicolon 1
#include <sourcemod>
#if defined INFO_INCLUDES
#include "../info/constants.sp"
#include "../info/enums.sp"
#include "../info/variables.sp"
#endif
stock void CreateConVars() {
CreateConVar("td_version", PLUGIN_VERSION, "Tower Defense Version", FCVAR_SPONLY | FCVAR_REPLICATED | FCVAR_NOTIFY | FCVAR_DONTRECORD);
g_hEnabled = CreateConVar("td_enabled", "1", "Enables/disables Tower Defense", FCVAR_DONTRECORD, true, 0.0, true, 1.0);
g_hMaxBotsOnField = CreateConVar("td_max_bots_on_field", "8", "Max bots simultaneously on field. Might be actually lower than set due to maxplayer limit");
}
stock void LoadConVars() {
g_hEnabled.AddChangeHook(OnConVarChanged);
g_hTfBotQuota = FindConVar("tf_bot_quota");
g_hTfBotQuota.AddChangeHook(OnConVarChanged);
}
stock void SetConVars() {
g_hTfBotQuota.IntValue = 0;
}
stock void SetPregameConVars() {
FindConVar("sv_cheats").SetInt(1, true, false);
}
/**
* Called when a console variable's value is changed.
*
* @param hConVar Handle to the convar that was changed.
* @param sOldValue String containing the value of the convar before it was changed.
* @param sNewValue String containing the new value of the convar.
* @noreturn
*/
public void OnConVarChanged(ConVar hConVar, const char[] sOldValue, const char[] sNewValue) {
if (hConVar == g_hEnabled) {
if (!g_bMapRunning) {
return;
}
if (g_hEnabled.BoolValue) {
if (!g_bEnabled) {
bool bEnabled = IsTowerDefenseMap();
if (bEnabled) {
// Basically do the same as in OnConfigsExecuted().
g_bEnabled = true;
UpdateGameDescription();
}
}
} else {
if (g_bEnabled) {
// Basically do the same as in OnMapEnd().
g_bEnabled = false;
UpdateGameDescription();
}
}
} else if (hConVar == g_hTfBotQuota) {
if (StringToInt(sNewValue) > 0) {
LogType(TDLogLevel_Error, TDLogType_FileAndConsole, "ConVar 'tf_bot_quota' can't be above 0 - Current Value: %d - New Value: %d", StringToInt(sOldValue), StringToInt(sNewValue));
LogType(TDLogLevel_Error, TDLogType_FileAndConsole, "Setting ConVar 'tf_bot_quota' to default");
ResetConVar(g_hTfBotQuota, true, false);
}
}
}