Add different values for cv_esp

0 - Off
1 - 3D Box
2 - Name
3 - 3D Box + Name
This commit is contained in:
8dcc 2023-07-24 18:02:05 +02:00
parent e5d2e58e85
commit 9fe986306d
2 changed files with 20 additions and 3 deletions

View File

@ -11,7 +11,7 @@ DECL_CVAR(chams);
bool cvars_init(void) { bool cvars_init(void) {
cv_bhop = REGISTER_CVAR("bhop", "1"); cv_bhop = REGISTER_CVAR("bhop", "1");
cv_autostrafe = REGISTER_CVAR("autostrafe", "0"); cv_autostrafe = REGISTER_CVAR("autostrafe", "0");
cv_esp = REGISTER_CVAR("esp", "1"); cv_esp = REGISTER_CVAR("esp", "3");
cv_chams = REGISTER_CVAR("chams", "1"); cv_chams = REGISTER_CVAR("chams", "1");
return true; return true;

View File

@ -5,6 +5,14 @@
#include "../include/cvars.h" #include "../include/cvars.h"
#include "../include/util.h" #include "../include/util.h"
/* For cv_esp */
enum esp_values {
ESP_OFF = 0,
ESP_BOX = 1,
ESP_NAME = 2,
/* ESP_ALL should be 3 but we can just OR box and name */
};
static bool gl_draw3dbox(vec3_t o, int bh, int bw, int lw) { static bool gl_draw3dbox(vec3_t o, int bh, int bw, int lw) {
/* /*
* Parameters: * Parameters:
@ -61,7 +69,8 @@ static bool gl_draw3dbox(vec3_t o, int bh, int bw, int lw) {
} }
void esp(void) { void esp(void) {
if (!CVAR_ON(esp)) const int setting = (int)cv_esp->value;
if (setting == ESP_OFF)
return; return;
/* Iterate all clients */ /* Iterate all clients */
@ -74,15 +83,23 @@ void esp(void) {
const int bh = 70; const int bh = 70;
const int bw = 25; const int bw = 25;
if (!gl_draw3dbox(ent->origin, bh, bw, 1)) /* If ESP_BOX is enabled, draw it. If it returns false, continue */
if (setting & ESP_BOX && !gl_draw3dbox(ent->origin, bh, bw, 1))
continue; continue;
/* Rest of the loop is for name esp, if var is not enabled, continue */
if (!(setting & ESP_NAME))
continue;
/* Draw name on top of the player. */
vec3_t top = vec3(ent->origin[0], ent->origin[1], ent->origin[2] + bh); vec3_t top = vec3(ent->origin[0], ent->origin[1], ent->origin[2] + bh);
vec2_t s_top; vec2_t s_top;
if (!world_to_screen(top, s_top)) if (!world_to_screen(top, s_top))
continue; continue;
/* TODO: Instead of -5px, center the player name to the player origin.
* I don't know how to get the text size before rendering. */
i_engine->pfnDrawSetTextColor(1, 1, 1); i_engine->pfnDrawSetTextColor(1, 1, 1);
i_engine->pfnDrawConsoleString(s_top[0] - 5, s_top[1] - 2, i_engine->pfnDrawConsoleString(s_top[0] - 5, s_top[1] - 2,
get_name(ent->index)); get_name(ent->index));