seta hud_shownames 1 "draw names and health/armor of nearby players"
seta hud_shownames_enemies 2 "1 = draw names of enemies you point at (TODO), 2 = draw names of all enemies in view"
+seta hud_shownames_self 0 "also include your own name to be shown when third person camera mode is on (chase_active/cl_eventchase)"
seta hud_shownames_status 1 "1 = draw health/armor status of teammates"
seta hud_shownames_statusbar_height 4 "height of status bar"
seta hud_shownames_aspect 8 "aspect ratio of total drawing area per name"
seta hud_panel_physics_text "1"
seta hud_panel_centerprint 1
-seta hud_panel_centerprint_pos "0.180000 0.260000"
+seta hud_panel_centerprint_pos "0.175000 0.260000"
seta hud_panel_centerprint_size "0.650000 0.210000"
seta hud_panel_centerprint_bg "0"
seta hud_panel_centerprint_bg_color ""
seta hud_panel_physics_text "2"
seta hud_panel_centerprint 1
-seta hud_panel_centerprint_pos "0.180000 0.260000"
+seta hud_panel_centerprint_pos "0.175000 0.260000"
seta hud_panel_centerprint_size "0.650000 0.210000"
seta hud_panel_centerprint_bg "0"
seta hud_panel_centerprint_bg_color ""
seta hud_panel_physics_text "1"
seta hud_panel_centerprint 1
-seta hud_panel_centerprint_pos "0.180000 0.260000"
+seta hud_panel_centerprint_pos "0.175000 0.260000"
seta hud_panel_centerprint_size "0.650000 0.210000"
seta hud_panel_centerprint_bg "0"
seta hud_panel_centerprint_bg_color ""
seta hud_panel_physics_text "2"
seta hud_panel_centerprint 1
-seta hud_panel_centerprint_pos "0.180000 0.260000"
+seta hud_panel_centerprint_pos "0.175000 0.260000"
seta hud_panel_centerprint_size "0.650000 0.210000"
seta hud_panel_centerprint_bg "0"
seta hud_panel_centerprint_bg_color ""
seta hud_panel_physics_text "2"
seta hud_panel_centerprint 1
-seta hud_panel_centerprint_pos "0.180000 0.260000"
+seta hud_panel_centerprint_pos "0.175000 0.260000"
seta hud_panel_centerprint_size "0.650000 0.210000"
seta hud_panel_centerprint_bg "0"
seta hud_panel_centerprint_bg_color ""
float autocvar_hud_showbinds_limit;
float autocvar_hud_shownames;
float autocvar_hud_shownames_enemies;
+float autocvar_hud_shownames_self;
float autocvar_hud_shownames_status;
float autocvar_hud_shownames_statusbar_height;
float autocvar_hud_shownames_aspect;
// self.healthvalue
// self.armorvalue
// self.sameteam = player is on same team as local client
+// self.fadedelay = time to wait before name tag starts fading in for enemies
//
const float SHOWNAMES_FADESPEED = 4;
+const float SHOWNAMES_FADEDELAY = 0.5;
void Draw_ShowNames(entity ent)
{
if(!autocvar_hud_shownames)
return;
-
- if(ent.sv_entnum == player_localentnum && !autocvar_chase_active)
- return;
+
+ if((ent.sv_entnum == player_localentnum) || (ent.sv_entnum == spectatee_status)) // ent is me or person i'm spectating
+ if not (autocvar_hud_shownames_self && autocvar_chase_active)
+ return;
makevectors(view_angles);
}
onscreen = (o_z >= 0 && o_x >= 0 && o_y >= 0 && o_x <= vid_conwidth && o_y <= vid_conheight);
+
+ if(!ent.fadedelay)
+ ent.fadedelay = time + SHOWNAMES_FADEDELAY;
if(!ent.sameteam && (!onscreen || !hit)) // out of view, fade out
- ent.alpha = max(0, ent.alpha - SHOWNAMES_FADESPEED * frametime);
+ {
+ ent.alpha = max(0, ent.alpha - SHOWNAMES_FADESPEED * frametime);
+ ent.fadedelay = 0; // reset fade in delay, enemy has left the view
+ }
else if(ent.healthvalue < 1) // dead player, fade out slowly
- ent.alpha = max(0, ent.alpha - SHOWNAMES_FADESPEED * 0.25 * frametime);
+ ent.alpha = max(0, ent.alpha - SHOWNAMES_FADESPEED * 0.25 * frametime);
else if(overlap) // tag overlap detected, fade out
- ent.alpha = max(0, ent.alpha - SHOWNAMES_FADESPEED * frametime);
- else // fade in
+ ent.alpha = max(0, ent.alpha - SHOWNAMES_FADESPEED * frametime);
+ else if(ent.sameteam) // fade in for team mates
+ ent.alpha = min(1, ent.alpha + SHOWNAMES_FADESPEED * frametime);
+ else if(time > ent.fadedelay) // fade in for enemies
ent.alpha = min(1, ent.alpha + SHOWNAMES_FADESPEED * frametime);
if(!ent.alpha)
return;
-
+
float dist;
dist = vlen(ent.origin - view_origin);
.float healthvalue;
.float armorvalue;
.float sameteam;
+.float fadedelay;
}
}
+.float motd_actived_time; // used for both motd and campaign_message
+void PrintWelcomeMessage()
+{
+ if (self.motd_actived_time == 0) { // is there already a message showing?
+ if (autocvar_g_campaign) {
+ if ((self.classname == "player" && self.BUTTON_INFO) || (self.classname != "player")) {
+ self.motd_actived_time = time;
+ Send_CSQC_Centerprint_Generic(self, CPID_MOTD, campaign_message, -1, 0);
+ }
+ } else {
+ if ((time - self.jointime > autocvar_welcome_message_time) && self.BUTTON_INFO) {
+ self.motd_actived_time = time;
+ Send_CSQC_Centerprint_Generic(self, CPID_MOTD, getwelcomemessage(), -1, 0);
+ }
+ }
+ } else { // showing MOTD or campaign message
+ if (autocvar_g_campaign) {
+ if (self.BUTTON_INFO)
+ self.motd_actived_time = time;
+ else if ((time - self.motd_actived_time > 2) && self.classname == "player") { // hide it some seconds after BUTTON_INFO has been released
+ self.motd_actived_time = 0;
+ Send_CSQC_Centerprint_Generic_Expire(self, CPID_MOTD);
+ }
+ } else {
+ if ((time - self.jointime) > autocvar_welcome_message_time) {
+ if (self.BUTTON_INFO)
+ self.motd_actived_time = time;
+ else if (time - self.motd_actived_time > 2) { // hide it some seconds after BUTTON_INFO has been released
+ self.motd_actived_time = 0;
+ Send_CSQC_Centerprint_Generic_Expire(self, CPID_MOTD);
+ }
+ }
+ }
+ }
+}
+
void ObserverThink()
{
float prefered_movetype;
}
}
}
+
+ PrintWelcomeMessage();
}
void SpectatorThink()
PutObserverInServer();
}
+ PrintWelcomeMessage();
self.flags |= FL_CLIENT | FL_NOTARGET;
}
void() ctf_setstatus;
void() nexball_setstatus;
.float items_added;
-.float motd_actived_time; // used for both motd and campaign_message
void PlayerPreThink (void)
{
WarpZone_PlayerPhysics_FixVAngle();
PlayerUseKey();
self.usekeypressed = self.BUTTON_USE;
- if (self.motd_actived_time == 0) {
- if (autocvar_g_campaign) {
- if (self.classname == "player" && self.BUTTON_INFO) {
- self.motd_actived_time = time;
- Send_CSQC_Centerprint_Generic(self, CPID_MOTD, campaign_message, -1, 0);
- }
- } else {
- if ((self.classname == "player" || time - self.jointime > autocvar_welcome_message_time) && self.BUTTON_INFO) {
- self.motd_actived_time = time;
- Send_CSQC_Centerprint_Generic(self, CPID_MOTD, getwelcomemessage(), -1, 0);
- }
- }
- } else { // showing MOTD or campaign message
- if (autocvar_g_campaign) {
- if (self.classname == "player") {
- if (self.BUTTON_INFO)
- self.motd_actived_time = time;
- else if (time - self.motd_actived_time > 2) { // hide it some seconds after BUTTON_INFO has been released
- self.motd_actived_time = 0;
- Send_CSQC_Centerprint_Generic_Expire(self, CPID_MOTD);
- }
- }
- } else {
- if (self.classname == "player" || (time - self.jointime) > autocvar_welcome_message_time) {
- if (self.BUTTON_INFO)
- self.motd_actived_time = time;
- else if (time - self.motd_actived_time > 2) { // hide it some seconds after BUTTON_INFO has been released
- self.motd_actived_time = 0;
- Send_CSQC_Centerprint_Generic_Expire(self, CPID_MOTD);
- }
- }
- }
- }
-
+ PrintWelcomeMessage();
+
if(self.classname == "player") {
// if(self.netname == "Wazat")
// bprint(self.classname, "\n");
return FALSE;
if(other == o)
return FALSE;
- if(other.classname == "player")
+ if((other.classname == "player") || other.caplayer)
if(!teamplay || o.team != other.team)
if not (radar_showennemies)
return FALSE;
}
if (item.flags & FL_WEAPON)
- if ((it = item.weapons - (item.weapons & player.weapons)) || (g_pickup_weapons_anyway && !(g_weapon_stay == 3 && !e.spawnshieldtime)))
+ if ((it = item.weapons - (item.weapons & player.weapons)) || (g_pickup_weapons_anyway && g_weapon_stay == 0))
{
pickedup = TRUE;
for(i = WEP_FIRST; i <= WEP_LAST; ++i)