From 109a9565f18f0881fef27a5b7fedf3ae14207581 Mon Sep 17 00:00:00 2001 From: Vaqtincha Date: Sat, 25 Jan 2025 23:38:45 +0500 Subject: [PATCH] Add new CVars playerid_showhealth & mp_playerid_field --- regamedll/dlls/game.cpp | 6 +++++ regamedll/dlls/game.h | 2 ++ regamedll/dlls/player.cpp | 50 +++++++++++++++++++++++++++++++++++++-- 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/regamedll/dlls/game.cpp b/regamedll/dlls/game.cpp index 5680db82a..ec2f68011 100644 --- a/regamedll/dlls/game.cpp +++ b/regamedll/dlls/game.cpp @@ -188,6 +188,9 @@ cvar_t ammo_respawn_time = { "mp_ammo_respawn_time", "20", FCVAR_SERVER, 2 cvar_t vote_flags = { "mp_vote_flags", "km", 0, 0.0f, nullptr }; cvar_t votemap_min_time = { "mp_votemap_min_time", "180", 0, 180.0f, nullptr }; +cvar_t playerid_showhealth = { "mp_playerid_showhealth", "1", FCVAR_SERVER, 1.0f, nullptr }; +cvar_t playerid_field = { "mp_playerid_field", "3", FCVAR_SERVER, 3.0f, nullptr }; + void GameDLL_Version_f() { if (Q_stricmp(CMD_ARGV(1), "version") != 0) @@ -463,6 +466,9 @@ void EXT_FUNC GameDLLInit() CVAR_REGISTER(&cv_bot_enable); CVAR_REGISTER(&cv_hostage_ai_enable); + CVAR_REGISTER(&playerid_showhealth); + CVAR_REGISTER(&playerid_field); + // print version CONSOLE_ECHO("ReGameDLL version: " APP_VERSION "\n"); diff --git a/regamedll/dlls/game.h b/regamedll/dlls/game.h index 09da5305a..2ace4cb64 100644 --- a/regamedll/dlls/game.h +++ b/regamedll/dlls/game.h @@ -208,6 +208,8 @@ extern cvar_t weapon_respawn_time; extern cvar_t ammo_respawn_time; extern cvar_t vote_flags; extern cvar_t votemap_min_time; +extern cvar_t playerid_showhealth; +extern cvar_t playerid_field; #endif diff --git a/regamedll/dlls/player.cpp b/regamedll/dlls/player.cpp index 3f23a6293..58b3c4f6a 100644 --- a/regamedll/dlls/player.cpp +++ b/regamedll/dlls/player.cpp @@ -115,6 +115,38 @@ void CBasePlayer::SendItemStatus() MESSAGE_END(); } +inline const char *GetPlayerIdString(bool sameTeam) +{ + switch (static_cast(playerid_showhealth.value)) + { + case 1: // show health teammate only (cs default) + { + switch (static_cast(playerid_field.value)) + { + case 1: return sameTeam ? "1 %c1: %p2\n2 : %i3%%" : "1 %c1: %p2"; // show team text only + case 2: return sameTeam ? "1 %p2\n2 %h: %i3%%" : "1 %p2"; // show health text only + case 3: return sameTeam ? "1 %c1: %p2\n2 %h: %i3%%" : "1 %c1: %p2"; // show team text & health text (cs default) + default: return sameTeam ? "1 %p2\n2 : %i3%%" : "1 %p2"; // don't show text + } + } + case 2: // show health all + { + switch (static_cast(playerid_field.value)) + { + case 1: return "1 %c1: %p2\n2 : %i3%%"; // show team text only + case 2: return "1 %p2\n2 %h: %i3%%"; // show health text only + case 3: return "1 %c1: %p2\n2 %h: %i3%%"; // show team text & health text + default: return "1 %p2\n2 : %i3%%"; // don't show text + } + } + default: // don't show health + { + return (static_cast(playerid_field.value) == 0) ? "1 %p2" : "1 %c1: %p2"; + } + } +} + + const char *GetCSModelName(int item_id) { const char *modelName = nullptr; @@ -8073,11 +8105,17 @@ void CBasePlayer::UpdateStatusBar() if (sameTeam || GetObserverMode() != OBS_NONE) { if (playerid.value != PLAYERID_MODE_OFF || GetObserverMode() != OBS_NONE) +#ifndef REGAMEDLL_ADD Q_strlcpy(sbuf0, "1 %c1: %p2\n2 %h: %i3%%"); +#else + Q_strlcpy(sbuf0, GetPlayerIdString(sameTeam)); +#endif else Q_strlcpy(sbuf0, " "); - - newSBarState[SBAR_ID_TARGETHEALTH] = int((pEntity->pev->health / pEntity->pev->max_health) * 100); +#ifdef REGAMEDLL_ADD + if (static_cast(playerid_showhealth.value) != 0) + newSBarState[SBAR_ID_TARGETHEALTH] = int((pEntity->pev->health / pEntity->pev->max_health) * 100); +#endif if (!(m_flDisplayHistory & DHF_FRIEND_SEEN) && !(pev->flags & FL_SPECTATOR)) { @@ -8088,10 +8126,18 @@ void CBasePlayer::UpdateStatusBar() else if (GetObserverMode() == OBS_NONE) { if (playerid.value != PLAYERID_MODE_TEAMONLY && playerid.value != PLAYERID_MODE_OFF) +#ifndef REGAMEDLL_ADD Q_strlcpy(sbuf0, "1 %c1: %p2"); +#else + Q_strlcpy(sbuf0, GetPlayerIdString(sameTeam)); +#endif else Q_strlcpy(sbuf0, " "); +#ifdef REGAMEDLL_ADD + if (static_cast(playerid_showhealth.value) == 2) + newSBarState[SBAR_ID_TARGETHEALTH] = int((pEntity->pev->health / pEntity->pev->max_health) * 100); +#endif if (!(m_flDisplayHistory & DHF_ENEMY_SEEN)) { m_flDisplayHistory |= DHF_ENEMY_SEEN;