From d9bd7ad830c3a38ddea584427da6c61c682acdcc Mon Sep 17 00:00:00 2001 From: Rain Date: Thu, 27 Nov 2025 21:31:53 +0200 Subject: [PATCH] Strip name, neo_name, and neo_clantag --- src/game/server/neo/neo_player.cpp | 10 ++++++---- src/game/server/neo/neo_player.h | 4 ++-- src/game/shared/neo/neo_gamerules.cpp | 28 ++++++++++++++++++++------- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/game/server/neo/neo_player.cpp b/src/game/server/neo/neo_player.cpp index 9f68ad2f66..c4cb27f208 100644 --- a/src/game/server/neo/neo_player.cpp +++ b/src/game/server/neo/neo_player.cpp @@ -457,7 +457,7 @@ CNEO_Player::CNEO_Player() m_iNeoStar = NEO_DEFAULT_STAR; m_iXP.GetForModify() = 0; V_memset(m_szNeoName.GetForModify(), 0, sizeof(m_szNeoName)); - m_szNeoNameHasSet = false; + m_bNeoNameHasSet = false; V_memset(m_szNeoClantag.GetForModify(), 0, sizeof(m_szNeoClantag)); V_memset(m_szNeoCrosshair.GetForModify(), 0, sizeof(m_szNeoCrosshair)); @@ -1662,17 +1662,19 @@ const char *CNEO_Player::GetNeoPlayerName(const CNEO_Player *viewFrom) const const char *CNEO_Player::GetNeoPlayerNameDirect() const { - return m_szNeoNameHasSet ? m_szNeoName.Get() : NULL; + return m_bNeoNameHasSet ? m_szNeoName.Get() : NULL; } -void CNEO_Player::SetNeoPlayerName(const char *newNeoName) +bool CNEO_Player::SetNeoPlayerName(const char *newNeoName) { // NEO NOTE (nullsystem): Generally it's never NULL but just incase if (newNeoName) { V_memcpy(m_szNeoName.GetForModify(), newNeoName, sizeof(m_szNeoName)-1); - m_szNeoNameHasSet = true; + m_bNeoNameHasSet = (m_szNeoName.Get()[0] != 0); + return m_bNeoNameHasSet; } + return false; } void CNEO_Player::SetClientWantNeoName(const bool b) diff --git a/src/game/server/neo/neo_player.h b/src/game/server/neo/neo_player.h index 7c14f8e2ad..55cc6d2a3a 100644 --- a/src/game/server/neo/neo_player.h +++ b/src/game/server/neo/neo_player.h @@ -147,7 +147,7 @@ class CNEO_Player : public CHL2MP_Player const char *GetNeoPlayerName(const CNEO_Player *viewFrom = nullptr) const; // "neo_name" even if it's nothing const char *GetNeoPlayerNameDirect() const; - void SetNeoPlayerName(const char *newNeoName); + [[nodiscard]] bool SetNeoPlayerName(const char *newNeoName); void SetClientWantNeoName(const bool b); const char *GetNeoClantag() const; @@ -313,7 +313,7 @@ class CNEO_Player : public CHL2MP_Player bool m_bFirstDeathTick; bool m_bCorpseSet; bool m_bPreviouslyReloading; - bool m_szNeoNameHasSet; + bool m_bNeoNameHasSet; float m_flLastAirborneJumpOkTime; float m_flLastSuperJumpTime; diff --git a/src/game/shared/neo/neo_gamerules.cpp b/src/game/shared/neo/neo_gamerules.cpp index 5f12801291..e659ed88d3 100644 --- a/src/game/shared/neo/neo_gamerules.cpp +++ b/src/game/shared/neo/neo_gamerules.cpp @@ -3232,10 +3232,20 @@ void CNEORules::ClientSettingsChanged(CBasePlayer *pPlayer) pNEOPlayer->Weapon_SetZoom(pNEOPlayer->m_bInAim); } - const char *pszSteamName = engine->GetClientConVarValue(pPlayer->entindex(), "name"); - const bool clientAllowsNeoName = (0 == StrToInt(engine->GetClientConVarValue(engine->IndexOfEdict(pNEOPlayer->edict()), "cl_onlysteamnick"))); - const char *pszNeoName = engine->GetClientConVarValue(pNEOPlayer->entindex(), "neo_name"); + + char szSteamName[MAX_PLACE_NAME_LENGTH] = ""; + const char* pszSteamName = &szSteamName[0]; + V_strcpy_safe(szSteamName, engine->GetClientConVarValue(pPlayer->entindex(), "name")); + V_StripTrailingWhitespace(&szSteamName[0]); + V_StripLeadingWhitespace(&szSteamName[0]); + + char szNeoName[MAX_PLAYER_NAME_LENGTH] = ""; + const char* pszNeoName = &szNeoName[0]; + V_strcpy_safe(szNeoName, engine->GetClientConVarValue(pNEOPlayer->entindex(), "neo_name")); + V_StripTrailingWhitespace(&szNeoName[0]); + V_StripLeadingWhitespace(&szNeoName[0]); + const char *pszOldNeoName = pNEOPlayer->GetNeoPlayerNameDirect(); bool updateDupeCheck = false; @@ -3251,19 +3261,23 @@ void CNEORules::ClientSettingsChanged(CBasePlayer *pPlayer) { event->SetInt("userid", pNEOPlayer->GetUserID()); event->SetString("oldname", (pszOldNeoName[0] == '\0') ? pszSteamName : pszOldNeoName); - event->SetString("newname", (pszNeoName[0] == '\0') ? pszSteamName : pszNeoName); + event->SetString("newname", (szNeoName[0] == '\0') ? pszSteamName : pszNeoName); gameeventmanager->FireEvent(event); } } - pNEOPlayer->SetNeoPlayerName(pszNeoName); - updateDupeCheck = true; + if (pNEOPlayer->SetNeoPlayerName(pszNeoName)) + updateDupeCheck = true; } pNEOPlayer->SetClientWantNeoName(clientAllowsNeoName); const auto optClStreamerMode = StrToInt(engine->GetClientConVarValue(engine->IndexOfEdict(pNEOPlayer->edict()), "cl_neo_streamermode")); pNEOPlayer->m_bClientStreamermode = (optClStreamerMode && *optClStreamerMode); - const char *pszNeoClantag = engine->GetClientConVarValue(pNEOPlayer->entindex(), "neo_clantag"); + char szNeoClanTag[NEO_MAX_CLANTAG_LENGTH] = ""; + const char* pszNeoClantag = &szNeoClanTag[0]; + V_strcpy_safe(szNeoClanTag, engine->GetClientConVarValue(pNEOPlayer->entindex(), "neo_clantag")); + V_StripTrailingWhitespace(&szNeoClanTag[0]); + V_StripLeadingWhitespace(&szNeoClanTag[0]); const char *pszOldNeoClantag = pNEOPlayer->GetNeoClantag(); if (V_strcmp(pszOldNeoClantag, pszNeoClantag) != 0) {