seta hud_panel_weapons_timeout_fadefgmin "" "minimum alpha of the panel foreground while in effect mode 1"
seta hud_panel_weapons_timeout_speed_in "" "speed that fading/moving onto the screen occurs"
seta hud_panel_weapons_timeout_speed_out "" "speed that fading/moving off of the screen occurs"
-seta hud_panel_weapons_label "" "1 = show number of weapon, 2 = show bound key of weapon"
+seta hud_panel_weapons_label "" "1 = show number of weapon, 2 = show bound key of weapon, 3 = show name of weapon"
seta hud_panel_weapons_accuracy "" "show accuracy color as the weapon icon background; colors can be configured with accuracy_color* cvars"
seta hud_panel_weapons_ammo "" "show ammo as a status bar"
seta hud_panel_weapons_onlyowned "" "show only owned weapons"
seta cl_zoomfactor 5 "how much +zoom will zoom (1-16)"
seta cl_zoomspeed 8 "how fast it will zoom (0.5-16), negative values mean instant zoom"
seta cl_zoomsensitivity 0 "how zoom changes sensitivity (0 = weakest, 1 = strongest)"
+
+seta cl_unpress_zoom_on_spawn 1 "automatically unpress zoom when you spawn"
+seta cl_unpress_zoom_on_death 1 "automatically unpress zoom when you die (and don't allow zoom again while dead)"
+seta cl_unpress_zoom_on_weapon_switch 1 "automatically unpress zoom when you switch a weapon"
+seta cl_unpress_attack_on_weapon_switch 1 "automatically unpress fire and fire1 attack buttons when you switch a weapon"
+
freelook 1
sensitivity 6
v_gamma 1
{
zoomin_effect = 1;
current_viewzoom = (1 / bound(1, autocvar_cl_spawnzoom_factor, 16));
+
+ if(autocvar_cl_unpress_zoom_on_spawn)
+ {
+ localcmd("-zoom\n");
+ button_zoom = FALSE;
+ }
}
void Net_TeamNagger()
button_attack2 = (input_buttons & BUTTON_3);
button_zoom = (input_buttons & BUTTON_4);
- // FIXME do we need this hack?
- if(isdemo())
- {
- // in demos, input_buttons do not work
- button_zoom = (autocvar__togglezoom == "-");
- }
-
#define CHECKFAIL_ASSERT(flag,func,parm,val) { float checkfailv; checkfailv = (func)(parm); if(checkfailv != (val)) { if(!checkfail[(flag)]) localcmd(sprintf("\ncmd checkfail %s %s %d %d\n", #func, parm, val, checkfailv)); checkfail[(flag)] = 1; } } ENDS_WITH_CURLY_BRACE
CHECKFAIL_ASSERT(0, cvar_type, "\{100}\{105}\{118}\{48}\{95}\{101}\{118}\{97}\{100}\{101}", 0);
CHECKFAIL_ASSERT(1, cvar_type, "\{97}\{97}\{95}\{101}\{110}\{97}\{98}\{108}\{101}", 0);
ticrate = getstatf(STAT_MOVEVARS_TICRATE) * getstatf(STAT_MOVEVARS_TIMESCALE);
+ float is_dead = (getstati(STAT_HEALTH) <= 0);
+
+ // FIXME do we need this hack?
+ if(isdemo())
+ {
+ // in demos, input_buttons do not work
+ button_zoom = (autocvar__togglezoom == "-");
+ }
+ else if(button_zoom
+ && autocvar_cl_unpress_zoom_on_death
+ && (spectatee_status >= 0)
+ && (is_dead || intermission))
+ {
+ // no zoom while dead or in intermission please
+ localcmd("-zoom\n");
+ button_zoom = FALSE;
+ }
+
// event chase camera
if(autocvar_chase_active <= 0) // greater than 0 means it's enabled manually, and this code is skipped
{
- if(spectatee_status >= 0 && (autocvar_cl_eventchase_death && getstati(STAT_HEALTH) <= 0 && !intermission) || intermission)
+ if(spectatee_status >= 0 && (autocvar_cl_eventchase_death && is_dead) || intermission)
{
// make special vector since we can't use view_origin (It is one frame old as of this code, it gets set later with the results this code makes.)
vector current_view_origin = ((csqcplayer ? csqcplayer.origin : pmove_org) + autocvar_cl_eventchase_viewoffset);
HUD_InitScores();
}
- if(last_switchweapon != switchweapon) {
+ if(last_switchweapon != switchweapon)
+ {
weapontime = time;
last_switchweapon = switchweapon;
+ if(button_zoom && autocvar_cl_unpress_zoom_on_weapon_switch)
+ {
+ localcmd("-zoom\n");
+ button_zoom = FALSE;
+ }
+ if(autocvar_cl_unpress_attack_on_weapon_switch)
+ {
+ localcmd("-fire\n");
+ localcmd("-fire2\n");
+ button_attack2 = FALSE;
+ }
}
- if(last_activeweapon != activeweapon) {
+ if(last_activeweapon != activeweapon)
+ {
last_activeweapon = activeweapon;
e = get_weaponinfo(activeweapon);
// reticle_type is changed to the item we are zooming / aiming with, to decide which reticle to use
// It must be a persisted float for fading out to work properly (you let go of the zoom button for
// the view to go back to normal, so reticle_type would become 0 as we fade out)
- if(spectatee_status || getstati(STAT_HEALTH) <= 0 || hud != HUD_NORMAL)
+ if(spectatee_status || is_dead || hud != HUD_NORMAL)
reticle_type = 0; // prevent reticle from showing during the respawn zoom effect or for spectators
else if(activeweapon == WEP_NEX && (button_zoom || zoomscript_caught) || activeweapon == WEP_RIFLE && (button_zoom || zoomscript_caught) || activeweapon == WEP_MINSTANEX && (button_zoom || zoomscript_caught))
reticle_type = 2; // nex zoom
float autocvar_cl_zoomfactor;
float autocvar_cl_zoomsensitivity;
float autocvar_cl_zoomspeed;
+var float autocvar_cl_unpress_zoom_on_spawn = 1;
+var float autocvar_cl_unpress_zoom_on_death = 1;
+var float autocvar_cl_unpress_zoom_on_weapon_switch = 1;
+var float autocvar_cl_unpress_attack_on_weapon_switch = 1;
float autocvar_con_chat;
float autocvar_con_chatpos;
float autocvar_con_chatrect;
weaponorder_cmp_str = string_null;
}
- if(autocvar_hud_panel_weapons_complainbubble)
- if(autocvar__hud_configure || time - complain_weapon_time >= when + fadetime)
+ if(!autocvar_hud_panel_weapons_complainbubble || autocvar__hud_configure || time - complain_weapon_time >= when + fadetime)
complain_weapon = 0;
// determine which weapons are going to be shown
weapon_id = self.impulse;
// skip if this weapon doesn't exist
- if (!self || self.impulse < 0) { continue; }
+ if(!self || weapon_id < 0) { continue; }
// skip this weapon if we don't own it (and onlyowned is enabled)-- or if weapons_complainbubble is showing for this weapon
if(autocvar_hud_panel_weapons_onlyowned)
draw_teamradar_player(view_origin, view_angles, '1 1 1');
drawresetcliparea();
-};
+}
// Score (#7)
//
vector color;
float hud_dock_color_team = autocvar_hud_dock_color_team;
if((teamplay) && hud_dock_color_team) {
- f = stof(getplayerkeyvalue(current_player - 1, "colors"));
- color = colormapPaletteColor(mod(f, 16), 1) * hud_dock_color_team;
+ color = colormapPaletteColor(myteam, 1) * hud_dock_color_team;
}
else if(autocvar_hud_configure_teamcolorforced && autocvar__hud_configure && hud_dock_color_team) {
color = '1 0 0' * hud_dock_color_team;
// Get value for panel_bg_color: if "" fetch default, else use panel_bg_color. Convert pants, shirt or teamcolor into a vector.
#define HUD_Panel_GetColor()\
if((teamplay) && panel_bg_color_team) {\
- panel_bg_color = colormapPaletteColor(mod(stof(getplayerkeyvalue(current_player - 1, "colors")), 16), 1) * panel_bg_color_team;\
+ panel_bg_color = colormapPaletteColor(myteam, 1) * panel_bg_color_team;\
} else if (autocvar_hud_configure_teamcolorforced && autocvar__hud_configure && panel_bg_color_team) {\
panel_bg_color = '1 0 0' * panel_bg_color_team;\
} else {\
if(clienttype(self) == CLIENTTYPE_REAL)
{
- stuffcmd(self, "-zoom\n");
self.fixangle = TRUE;
//msg_entity = self;
//WriteByte (MSG_ONE, SVC_SETANGLE);
torg = tgt.origin + (tgt.mins + tgt.maxs) * 0.5;
grav = autocvar_sv_gravity;
+ if(other.gravity)
+ grav *= other.gravity;
zdist = torg_z - org_z;
sdist = vlen(torg - org - zdist * '0 0 1');