Skip to content

Commit

Permalink
Merge remote-tracking branch 'avarianknight/fix/server_convars'
Browse files Browse the repository at this point in the history
  • Loading branch information
blattersturm committed Jun 26, 2023
2 parents cfadd8d + 1e40ff0 commit 06a1b42
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 4 deletions.
24 changes: 22 additions & 2 deletions code/client/citicore/console/Console.Variables.h
Expand Up @@ -70,6 +70,9 @@ enum ConsoleVariableFlags

// can't be 'setr'd from server->client
ConVar_UserPref = 0x20,

// blocks any modifications to the convar via set(s|a|r) commands
ConVar_Internal = 0x40,
};

inline std::string ConsoleFlagsToString(ConsoleVariableFlags flags)
Expand All @@ -87,6 +90,8 @@ inline std::string ConsoleFlagsToString(ConsoleVariableFlags flags)
value += "Replicated ";
if (flags & ConVar_ReadOnly)
value += "ReadOnly ";
if (flags & ConVar_Internal)
value += "Internal ";

return value;
}
Expand Down Expand Up @@ -216,7 +221,14 @@ class ConsoleVariableEntry : public ConsoleVariableEntryBase

m_setCommand = std::make_unique<ConsoleCommand>(manager->GetParentContext(), name, [=] (const T& newValue)
{
if (m_manager->GetEntryFlags(m_name) & ConVar_ReadOnly)
auto convarFlags = m_manager->GetEntryFlags(m_name);
if (convarFlags & ConVar_Internal)
{
console::PrintWarning("cmd", "'%s' is an internal ConVar and cannot be changed.\n", m_name);
return;
}

if (convarFlags & ConVar_ReadOnly)
{
if (!m_manager->ShouldSuppressReadOnlyWarning() || !(typename ConsoleArgumentTraits<T>::Equal()(GetRawValue(), m_curValue)))
{
Expand Down Expand Up @@ -269,7 +281,15 @@ class ConsoleVariableEntry : public ConsoleVariableEntryBase

virtual bool SetValue(const std::string& value) override
{
if (m_manager->GetEntryFlags(m_name) & ConVar_ReadOnly)
auto convarFlags = m_manager->GetEntryFlags(m_name);
if (convarFlags & ConVar_Internal)
{
console::PrintWarning("cmd", "'%s' is an internal ConVar and cannot be changed.\n", m_name);

return false;
}

if (convarFlags & ConVar_ReadOnly)
{
if (!m_manager->ShouldSuppressReadOnlyWarning())
{
Expand Down
4 changes: 2 additions & 2 deletions code/components/citizen-server-impl/src/InfoHttpHandler.cpp
Expand Up @@ -158,8 +158,8 @@ void InfoHttpHandlerComponentLocals::AttachToObject(fx::ServerInstanceBase* inst
m_instance = instance;
ivVar = instance->AddVariable<int>("sv_infoVersion", ConVar_ServerInfo, 0);
maxClientsVar = instance->AddVariable<int>("sv_maxClients", ConVar_ServerInfo, 30);
iconVar = instance->AddVariable<std::string>("sv_icon", ConVar_None, "");
versionVar = instance->AddVariable<std::string>("version", ConVar_None, "FXServer-" GIT_DESCRIPTION);
iconVar = instance->AddVariable<std::string>("sv_icon", ConVar_Internal, "");
versionVar = instance->AddVariable<std::string>("version", ConVar_Internal, "FXServer-" GIT_DESCRIPTION);
crashCmd = instance->AddCommand("_crash", []()
{
*(volatile int*)0 = 0;
Expand Down

0 comments on commit 06a1b42

Please sign in to comment.