Fix names (issue)
This commit is contained in:
@ -8,6 +8,8 @@ namespace Components
|
||||
Colors();
|
||||
const char* GetName() { return "Colors"; };
|
||||
|
||||
static void Strip(const char* in, char* out, int max);
|
||||
|
||||
private:
|
||||
static Dvar::Var NewColors;
|
||||
|
||||
@ -15,7 +17,5 @@ namespace Components
|
||||
static char* GetClientName(int localClientNum, int index, char *buf, size_t size);
|
||||
|
||||
static void UpdateColorTable();
|
||||
|
||||
static void Strip(const char* in, char* out, int max);
|
||||
};
|
||||
}
|
||||
|
@ -129,6 +129,29 @@ namespace Components
|
||||
{
|
||||
// TODO: Register string dvars here
|
||||
|
||||
// Name watcher
|
||||
Renderer::OnFrame([] ()
|
||||
{
|
||||
static std::string lastValidName = "Unknown Soldier";
|
||||
std::string name = Dvar::Var("name").Get<char*>();
|
||||
|
||||
// Don't perform any checks if name didn't change
|
||||
if (name == lastValidName) return;
|
||||
|
||||
char saneName[64] = { 0 };
|
||||
Colors::Strip(Utils::Trim(name).data(), saneName, sizeof(saneName));
|
||||
|
||||
if (strlen(saneName) < 3 || (saneName[0] == '[' && saneName[1] == '{'))
|
||||
{
|
||||
Logger::Print("Username '%s' is invalid. It must at least be 3 characters long and not appear empty!\n", name.data());
|
||||
Dvar::Var("name").Set(lastValidName);
|
||||
}
|
||||
else
|
||||
{
|
||||
lastValidName = name;
|
||||
}
|
||||
});
|
||||
|
||||
return Dvar::Register<const char*>(name, "Unknown Soldier", Dvar::Flag(flag | Game::dvar_flag::DVAR_FLAG_SAVED).val, description).Get<Game::dvar_t*>();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user