-#ifndef ENT_CS_H
-#define ENT_CS_H
+#pragma once
+
+#ifdef CSQC
+#include <client/defs.qh>
+#endif
REGISTER_NET_LINKED(ENT_CLIENT_ENTCS)
REGISTER_NET_TEMP(CLIENT_ENTCS)
/** True when private information such as origin is available */
.bool m_entcs_private;
+
/** True when origin is available */
+// FIXME: it seems sometimes this is false when observing even though observers should be able to know about all players
+// easily reproducible on heart_v2 or The_Yard with bots - might be because they lack waypoints and bots stand still
+// it has happened in matches with players and no bots but much more rarely
.bool has_origin;
+
/** True when a recent server sent origin has been received */
.bool has_sv_origin;
/**
* @param i zero indexed player
*/
+ .int frags;
bool entcs_IsSpectating(int i)
{
bool unconnected = !playerslots[i].gotscores;
- return unconnected || stof(getplayerkeyvalue(i, "frags")) == FRAGS_SPECTATOR;
+ entity e = entcs_receiver(i);
+ return unconnected || ((e) ? e.frags : stof(getplayerkeyvalue(i, "frags"))) == FRAGS_SPECTATOR;
+ }
+
+ /**
+ * @param i zero indexed player
+ */
+ int entcs_GetClientColors(int i)
+ {
+ entity e = entcs_receiver(i);
+ return e ? e.colormap : stof(getplayerkeyvalue(i, "colors"));
}
/**
*/
int entcs_GetTeamColor(int i)
{
- return (!teamplay) ? 0 : stof(getplayerkeyvalue(i, "colors")) & 15;
+ return (!teamplay) ? 0 : entcs_GetClientColors(i) & 15;
}
/**
*/
string entcs_GetName(int i)
{
- return ColorTranslateRGB(getplayerkeyvalue(i, "name"));
+ entity e = entcs_receiver(i);
+ return ColorTranslateRGB(e ? e.netname : getplayerkeyvalue(i, "name"));
}
/**
? '1 1 1'
: colormapPaletteColor(((e.colormap >= 1024)
? e.colormap
- : stof(getplayerkeyvalue(e.colormap - 1, "colors"))) & 15, true)
+ : entcs_GetClientColors(e.colormap - 1)) & 15, true)
;
}
}
#endif
-
-#endif