X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fvehicles%2Fcl_vehicles.qc;h=e2187290d97910574b1b51a2537e2eefd42538ac;hb=0dfab05543fdd478b6f420b96eceeaaac2feaef2;hp=e0d1a619f0a3f6931c5fc28f2b0d060ed4dc6842;hpb=23ab6599859e8a4b53501c8635b987bc1c33b771;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/vehicles/cl_vehicles.qc b/qcsrc/common/vehicles/cl_vehicles.qc index e0d1a619f..e2187290d 100644 --- a/qcsrc/common/vehicles/cl_vehicles.qc +++ b/qcsrc/common/vehicles/cl_vehicles.qc @@ -1,70 +1,54 @@ -#define hud_bg "gfx/vehicles/frame.tga" -#define hud_sh "gfx/vehicles/vh-shield.tga" - -#define hud_hp_bar "gfx/vehicles/bar_up_left.tga" -#define hud_hp_ico "gfx/vehicles/health.tga" -#define hud_sh_bar "gfx/vehicles/bar_dwn_left.tga" -#define hud_sh_ico "gfx/vehicles/shield.tga" - -#define hud_ammo1_bar "gfx/vehicles/bar_up_right.tga" -#define hud_ammo1_ico "gfx/vehicles/bullets.tga" -#define hud_ammo2_bar "gfx/vehicles/bar_dwn_right.tga" -#define hud_ammo2_ico "gfx/vehicles/rocket.tga" -#define hud_energy "gfx/vehicles/energy.tga" +const string vCROSS_BURST = "gfx/vehicles/crosshair_burst.tga"; +const string vCROSS_DROP = "gfx/vehicles/crosshair_drop.tga"; +const string vCROSS_GUIDE = "gfx/vehicles/crosshair_guide.tga"; +const string vCROSS_HEAL = "gfx/vehicles/crosshair_heal.tga"; +const string vCROSS_HINT = "gfx/vehicles/crosshair_hint.tga"; +const string vCROSS_LOCK = "gfx/vehicles/crosshair_lock.tga"; +const string vCROSS_RAIN = "gfx/vehicles/crosshair_rain.tga"; entity dropmark; -var float autocvar_cl_vehicles_hudscale = 0.5; -var float autocvar_cl_vehicles_hudalpha = 0.75; -void CSQC_BUMBLE_GUN_HUD(); - -#define MAX_AXH 4 +const int MAX_AXH = 4; entity AuxiliaryXhair[MAX_AXH]; .string axh_image; .float axh_fadetime; -.float axh_drawflag; -.float axh_scale; - -#define bumb_ico "gfx/vehicles/bumb.tga" -#define bumb_lgun "gfx/vehicles/bumb_lgun.tga" -#define bumb_rgun "gfx/vehicles/bumb_rgun.tga" - -#define bumb_gun_ico "gfx/vehicles/bumb_side.tga" -#define bumb_gun_gun "gfx/vehicles/bumb_side_gun.tga" +.int axh_drawflag; float alarm1time; float alarm2time; -float weapon2mode; -void vehicle_alarm(entity e, float ch, string s0und) +void vehicle_alarm(entity e, int ch, Sound s0und) { - if not(autocvar_cl_vehicles_alarm) + TC(Sound, s0und); + if(!autocvar_cl_vehicles_alarm) return; sound(e, ch, s0und, VOL_BASEVOICE, ATTEN_NONE); } -void AuxiliaryXhair_Draw2D() +void AuxiliaryXhair_Draw2D(entity this) { - vector loc, psize; + if (scoreboard_active) + return; + + vector size = draw_getimagesize(this.axh_image) * autocvar_cl_vehicles_crosshair_size; + vector pos = project_3d_to_2d(this.move_origin) - 0.5 * size; - psize = self.axh_scale * draw_getimagesize(self.axh_image); - loc = project_3d_to_2d(self.move_origin) - 0.5 * psize; - if not (loc_z < 0 || loc_x < 0 || loc_y < 0 || loc_x > vid_conwidth || loc_y > vid_conheight) + if (!(pos.z < 0 || pos.x < 0 || pos.y < 0 || pos.x > vid_conwidth || pos.y > vid_conheight)) { - loc_z = 0; - psize_z = 0; - drawpic(loc, self.axh_image, psize, self.colormod, self.alpha, self.axh_drawflag); + pos.z = 0; + size.z = 0; + drawpic(pos, this.axh_image, size, this.colormod, autocvar_crosshair_alpha * this.alpha, this.axh_drawflag); } - if(time - self.cnt > self.axh_fadetime) - self.draw2d = func_null; + if(time - this.cnt > this.axh_fadetime) + this.draw2d = func_null; } -void Net_AuXair2(float bIsNew) +NET_HANDLE(ENT_CLIENT_AUXILIARYXHAIR, bool isnew) { - float axh_id = bound(0, ReadByte(), MAX_AXH); + int axh_id = bound(0, ReadByte(), MAX_AXH); entity axh = AuxiliaryXhair[axh_id]; if(axh == world || wasfreed(axh)) // MADNESS? THIS IS QQQQCCCCCCCCC (wasfreed, why do you exsist?) @@ -74,8 +58,7 @@ void Net_AuXair2(float bIsNew) axh.drawmask = MASK_NORMAL; axh.axh_drawflag = DRAWFLAG_ADDITIVE; axh.axh_fadetime = 0.1; - axh.axh_image = "gfx/vehicles/axh-ring.tga"; - axh.axh_scale = 1; + axh.axh_image = vCROSS_HINT; axh.alpha = 1; AuxiliaryXhair[axh_id] = axh; } @@ -88,222 +71,243 @@ void Net_AuXair2(float bIsNew) axh.colormod_z = ReadByte() / 255; axh.cnt = time; axh.draw2d = AuxiliaryXhair_Draw2D; + return true; } -void Net_VehicleSetup() +NET_HANDLE(TE_CSQC_VEHICLESETUP, bool isnew) { - - float i; - - float hud_id = ReadByte(); - - // Weapon update? - if(hud_id > VEH_LAST && hud_id != HUD_BUMBLEBEE_GUN) - { - weapon2mode = hud_id - VEH_LAST; - return; - } + int hud_id = ReadByte(); + return = true; // hud_id == 0 means we exited a vehicle, so stop alarm sound/s if(hud_id == 0) { - sound(self, CH_TRIGGER_SINGLE, "misc/null.wav", VOL_BASEVOICE, ATTEN_NONE); - sound(self, CH_PAIN_SINGLE, "misc/null.wav", VOL_BASEVOICE, ATTEN_NONE); + sound(self, CH_TRIGGER_SINGLE, SND_Null, VOL_BASEVOICE, ATTEN_NONE); + sound(self, CH_PAIN_SINGLE, SND_Null, VOL_BASEVOICE, ATTEN_NONE); return; } // Init auxiliary crosshairs - entity axh; - for(i = 0; i < MAX_AXH; ++i) + for(int i = 0; i < MAX_AXH; ++i) { - axh = AuxiliaryXhair[i]; + entity axh = AuxiliaryXhair[i]; + if(axh != world && !wasfreed(axh)) // MADNESS? THIS IS QQQQCCCCCCCCC (wasfreed, why do you exsist?) remove(axh); - axh = spawn(); - axh.draw2d = func_null; - axh.drawmask = MASK_NORMAL; - axh.axh_drawflag = DRAWFLAG_NORMAL; - axh.axh_fadetime = 0.1; - axh.axh_image = "gfx/vehicles/axh-ring.tga"; - axh.axh_scale = 1; - axh.alpha = 1; - AuxiliaryXhair[i] = axh; + axh = spawn(); + axh.draw2d = func_null; + axh.drawmask = MASK_NORMAL; + axh.axh_drawflag = DRAWFLAG_NORMAL; + axh.axh_fadetime = 0.1; + axh.axh_image = vCROSS_HINT; + axh.alpha = 1; + AuxiliaryXhair[i] = axh; } - VEH_ACTION(hud_id, VR_SETUP); - if(hud_id == HUD_BUMBLEBEE_GUN) { - // Plasma cannons - AuxiliaryXhair[0].axh_image = "gfx/vehicles/axh-bracket.tga"; - AuxiliaryXhair[0].axh_scale = 0.25; - // Raygun - AuxiliaryXhair[1].axh_image = "gfx/vehicles/axh-bracket.tga"; - AuxiliaryXhair[1].axh_scale = 0.25; + AuxiliaryXhair[0].axh_image = vCROSS_BURST; // Plasma cannons + AuxiliaryXhair[1].axh_image = vCROSS_BURST; // Raygun + } else { + Vehicle info = Vehicles_from(hud_id); + info.vr_setup(info, NULL); } } -void CSQC_BUMBLE_GUN_HUD() +void Vehicles_drawHUD( + string vehicle, + string vehicleWeapon1, + string vehicleWeapon2, + string iconAmmo1, + vector colorAmmo1, + string iconAmmo2, + vector colorAmmo2) { + SELFPARAM(); + // Initialize + vector tmpSize = '0 0 0'; + vector tmpPos = '0 0 0'; + + float hudAlpha = autocvar_hud_panel_fg_alpha * hud_fade_alpha; + float barAlpha = autocvar_hud_progressbar_alpha * hudAlpha; + float blinkValue = 0.55 + sin(time * 7) * 0.45; + + float health = STAT(VEHICLESTAT_HEALTH) * 0.01; + float shield = STAT(VEHICLESTAT_SHIELD) * 0.01; + float energy = STAT(VEHICLESTAT_ENERGY) * 0.01; + float ammo1 = STAT(VEHICLESTAT_AMMO1) * 0.01; + float reload1 = STAT(VEHICLESTAT_RELOAD1) * 0.01; + float ammo2 = STAT(VEHICLESTAT_AMMO2) * 0.01; + float reload2 = STAT(VEHICLESTAT_RELOAD2) * 0.01; + + // HACK to deal with the inconsistent use of the vehicle stats + ammo1 = (ammo1) ? ammo1 : energy; + + // Frame + string frame = strcat(hud_skin_path, "/vehicle_frame"); + if (precache_pic(frame) == "") + frame = "gfx/hud/default/vehicle_frame"; + + vehicleHud_Size = draw_getimagesize(frame) * autocvar_cl_vehicles_hudscale; + vehicleHud_Pos.x = (vid_conwidth - vehicleHud_Size.x) / 2; + vehicleHud_Pos.y = vid_conheight - vehicleHud_Size.y; + + if(teamplay && autocvar_hud_panel_bg_color_team) + drawpic(vehicleHud_Pos, frame, vehicleHud_Size, myteamcolors * autocvar_hud_panel_bg_color_team, autocvar_hud_panel_bg_alpha * hud_fade_alpha, DRAWFLAG_NORMAL); + else + drawpic(vehicleHud_Pos, frame, vehicleHud_Size, autocvar_hud_panel_bg_color, autocvar_hud_panel_bg_alpha * hud_fade_alpha, DRAWFLAG_NORMAL); - if(autocvar_r_letterbox) - return; + if(!autocvar__vehicles_shownchasemessage && time < vh_notice_time) + { + float tmpblinkValue = 0.55 + sin(time * 3) * 0.45; + tmpPos.x = vehicleHud_Pos.x + vehicleHud_Size.x * (96/256) - tmpSize.x; + tmpPos.y = vehicleHud_Pos.y; + tmpSize = '1 1 1' * hud_fontsize; + drawstring(tmpPos, sprintf(_("Press %s"), getcommandkey("dropweapon", "dropweapon")), tmpSize, '1 0 0' + '0 1 1' * tmpblinkValue, hudAlpha, DRAWFLAG_NORMAL); + } + + // Model + tmpSize.x = vehicleHud_Size.x / 3; + tmpSize.y = vehicleHud_Size.y; + tmpPos.x = vehicleHud_Pos.x + vehicleHud_Size.x / 3; + tmpPos.y = vehicleHud_Pos.y; + + if(health < 0.25) + drawpic_skin(tmpPos, vehicle, tmpSize, '1 0 0' + '0 1 1' * blinkValue, hudAlpha, DRAWFLAG_NORMAL); + else + drawpic_skin(tmpPos, vehicle, tmpSize, '1 1 1' * health + '1 0 0' * (1 - health), hudAlpha, DRAWFLAG_NORMAL); + + if(vehicleWeapon1) + drawpic_skin(tmpPos, vehicleWeapon1, tmpSize, '1 1 1' * ammo1 + '1 0 0' * (1 - ammo1), hudAlpha, DRAWFLAG_NORMAL); + if(vehicleWeapon2) + drawpic_skin(tmpPos, vehicleWeapon2, tmpSize, '1 1 1' * ammo2 + '1 0 0' * (1 - ammo2), hudAlpha, DRAWFLAG_NORMAL); - vector picsize, hudloc = '0 0 0', pic2size, picloc; + drawpic_skin(tmpPos, "vehicle_shield", tmpSize, '1 1 1' * shield + '1 0 0' * (1 - shield), hudAlpha * shield, DRAWFLAG_NORMAL); - // Fetch health & ammo stats - HUD_GETVEHICLESTATS + // Health bar + tmpSize.y = vehicleHud_Size.y / 2; + tmpPos.x = vehicleHud_Pos.x + vehicleHud_Size.x * (32/768); + tmpPos.y = vehicleHud_Pos.y; - picsize = draw_getimagesize(hud_bg) * autocvar_cl_vehicles_hudscale; - hudloc_y = vid_conheight - picsize_y; - hudloc_x = vid_conwidth * 0.5 - picsize_x * 0.5; + drawsetcliparea(tmpPos.x + (tmpSize.x * (1 - health)), tmpPos.y, tmpSize.x, tmpSize.y); + drawpic_skin(tmpPos, "vehicle_bar_northwest", tmpSize, autocvar_hud_progressbar_health_color, barAlpha, DRAWFLAG_NORMAL); - drawpic(hudloc, hud_bg, picsize, '1 1 1', autocvar_cl_vehicles_hudalpha, DRAWFLAG_NORMAL); + // Shield bar + tmpPos.y = vehicleHud_Pos.y + vehicleHud_Size.y / 2; - shield *= 0.01; - vh_health *= 0.01; - energy *= 0.01; - reload1 *= 0.01; + drawsetcliparea(tmpPos.x + (tmpSize.x * (1 - shield)), tmpPos.y, tmpSize.x, tmpSize.y); + drawpic_skin(tmpPos, "vehicle_bar_southwest", tmpSize, autocvar_hud_progressbar_armor_color, barAlpha, DRAWFLAG_NORMAL); - pic2size = draw_getimagesize(bumb_gun_ico) * (autocvar_cl_vehicles_hudscale * 0.8); - picloc = picsize * 0.5 - pic2size * 0.5; + // Ammo1 bar + tmpPos.x = vehicleHud_Pos.x + vehicleHud_Size.x * (480/768); + tmpPos.y = vehicleHud_Pos.y; - if(vh_health < 0.25) - drawpic(hudloc + picloc, bumb_gun_ico, pic2size, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL); + if(ammo1) + drawsetcliparea(tmpPos.x, tmpPos.y, tmpSize.x * ammo1, tmpSize.y); else - drawpic(hudloc + picloc, bumb_gun_ico, pic2size, '1 1 1' * vh_health + '1 0 0' * (1 - vh_health), 1, DRAWFLAG_NORMAL); + drawsetcliparea(tmpPos.x, tmpPos.y, tmpSize.x * reload1, tmpSize.y); - drawpic(hudloc + picloc, bumb_gun_gun, pic2size, '1 1 1' * energy + '1 0 0' * (1 - energy), 1, DRAWFLAG_NORMAL); - drawpic(hudloc + picloc, hud_sh, pic2size, '1 1 1', shield, DRAWFLAG_NORMAL); + drawpic_skin(tmpPos, "vehicle_bar_northeast", tmpSize, colorAmmo1, barAlpha, DRAWFLAG_NORMAL); -// Health bar - picsize = draw_getimagesize(hud_hp_bar) * autocvar_cl_vehicles_hudscale; - picloc = '69 69 0' * autocvar_cl_vehicles_hudscale; - drawsetcliparea(hudloc_x + picloc_x + (picsize_x * (1 - vh_health)), 0, vid_conwidth, vid_conheight); - drawpic(hudloc + picloc, hud_hp_bar, picsize, '1 1 1', 1 , DRAWFLAG_NORMAL); + // Ammo2 bar + tmpPos.y = vehicleHud_Pos.y + vehicleHud_Size.y / 2; + + if(ammo2) + drawsetcliparea(tmpPos.x, tmpPos.y, tmpSize.x * ammo2, tmpSize.y); + else + drawsetcliparea(tmpPos.x, tmpPos.y, tmpSize.x * reload2, tmpSize.y); + + drawpic_skin(tmpPos, "vehicle_bar_southeast", tmpSize, colorAmmo2, barAlpha, DRAWFLAG_NORMAL); drawresetcliparea(); -// .. and icon - picsize = draw_getimagesize(hud_hp_ico) * autocvar_cl_vehicles_hudscale; - picloc = '37 65 0' * autocvar_cl_vehicles_hudscale; - if(vh_health < 0.25) + + // Health icon + tmpSize.x = vehicleHud_Size.x * (80/768); + tmpSize.y = vehicleHud_Size.y * (80/256); + tmpPos.x = vehicleHud_Pos.x + vehicleHud_Size.x * (64/768); + tmpPos.y = vehicleHud_Pos.y + vehicleHud_Size.y * (48/256); + + if(health < 0.25) { if(alarm1time < time) { alarm1time = time + 2; - vehicle_alarm(self, CH_PAIN_SINGLE, "vehicles/alarm.wav"); + vehicle_alarm(self, CH_PAIN_SINGLE, SND_VEH_ALARM); } - - drawpic(hudloc + picloc, hud_hp_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL); + drawpic_skin(tmpPos, "vehicle_icon_health", tmpSize, '1 1 1', hudAlpha * blinkValue, DRAWFLAG_NORMAL); } else { - drawpic(hudloc + picloc, hud_hp_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL); if(alarm1time) { - vehicle_alarm(self, CH_PAIN_SINGLE, "misc/null.wav"); + vehicle_alarm(self, CH_PAIN_SINGLE, SND_Null); alarm1time = 0; } + drawpic_skin(tmpPos, "vehicle_icon_health", tmpSize, '1 1 1', hudAlpha, DRAWFLAG_NORMAL); } -// Shield bar - picsize = draw_getimagesize(hud_sh_bar) * autocvar_cl_vehicles_hudscale; - picloc = '69 140 0' * autocvar_cl_vehicles_hudscale; - drawsetcliparea(hudloc_x + picloc_x + (picsize_x * (1 - shield)), 0, vid_conwidth, vid_conheight); - drawpic(hudloc + picloc, hud_sh_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL); - drawresetcliparea(); -// .. and icon - picloc = '40 136 0' * autocvar_cl_vehicles_hudscale; - picsize = draw_getimagesize(hud_sh_ico) * autocvar_cl_vehicles_hudscale; + // Shield icon + tmpPos.y = vehicleHud_Pos.y + vehicleHud_Size.y / 2; + if(shield < 0.25) { if(alarm2time < time) { alarm2time = time + 1; - vehicle_alarm(self, CH_TRIGGER_SINGLE, "vehicles/alarm_shield.wav"); + vehicle_alarm(self, CH_TRIGGER_SINGLE, SND_VEH_ALARM_SHIELD); } - drawpic(hudloc + picloc, hud_sh_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL); + drawpic_skin(tmpPos, "vehicle_icon_shield", tmpSize, '1 1 1', hudAlpha * blinkValue, DRAWFLAG_NORMAL); } else { - drawpic(hudloc + picloc, hud_sh_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL); if(alarm2time) { - vehicle_alarm(self, CH_TRIGGER_SINGLE, "misc/null.wav"); + vehicle_alarm(self, CH_TRIGGER_SINGLE, SND_Null); alarm2time = 0; } + drawpic_skin(tmpPos, "vehicle_icon_shield", tmpSize, '1 1 1', hudAlpha, DRAWFLAG_NORMAL); } -// Gun bar - picsize = draw_getimagesize(hud_ammo1_bar) * autocvar_cl_vehicles_hudscale; - picloc = '450 69 0' * autocvar_cl_vehicles_hudscale; - drawsetcliparea(hudloc_x + picloc_x, picloc_y, picsize_x * energy, vid_conheight); - drawpic(hudloc + picloc, hud_ammo1_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL); - drawresetcliparea(); - -// .. and icon - picsize = 1.5 * draw_getimagesize(hud_energy) * autocvar_cl_vehicles_hudscale; - picloc = '664 60 0' * autocvar_cl_vehicles_hudscale; - if(energy < 0.2) - drawpic(hudloc + picloc, hud_energy, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL); - else - drawpic(hudloc + picloc, hud_energy, picsize, '1 1 1', 1, DRAWFLAG_NORMAL); + // Ammo1 icon + tmpPos.x = vehicleHud_Pos.x + vehicleHud_Size.x * (624/768); + tmpPos.y = vehicleHud_Pos.y + vehicleHud_Size.y * (48/256); - if (scoreboard_showscores) - HUD_DrawScoreboard(); - /* - else + if(iconAmmo1) { - picsize = draw_getimagesize(waki_xhair); - picsize_x *= 0.5; - picsize_y *= 0.5; - - - drawpic('0.5 0 0' * (vid_conwidth - picsize_x) + '0 0.5 0' * (vid_conheight - picsize_y), waki_xhair, picsize, '1 1 1', 1, DRAWFLAG_NORMAL); + if(ammo1) + drawpic_skin(tmpPos, iconAmmo1, tmpSize, '1 1 1', hudAlpha, DRAWFLAG_NORMAL); + else + drawpic_skin(tmpPos, iconAmmo1, tmpSize, '1 1 1', hudAlpha * 0.2, DRAWFLAG_NORMAL); } - */ -} -void RaptorCBShellfragDraw() -{ - if(wasfreed(self)) - return; + // Ammo2 icon + tmpPos.y = vehicleHud_Pos.y + vehicleHud_Size.y / 2; - Movetype_Physics_MatchTicrate(autocvar_cl_gibs_ticrate, autocvar_cl_gibs_sloppy); - self.move_avelocity += randomvec() * 15; - self.renderflags = 0; - - if(self.cnt < time) - self.alpha = bound(0, self.nextthink - time, 1); - - if(self.alpha < ALPHA_MIN_VISIBLE) - remove(self); + if(iconAmmo2) + { + if(ammo2) + drawpic_skin(tmpPos, iconAmmo2, tmpSize, '1 1 1', hudAlpha, DRAWFLAG_NORMAL); + else + drawpic_skin(tmpPos, iconAmmo2, tmpSize, '1 1 1', hudAlpha * 0.2, DRAWFLAG_NORMAL); + } } -void RaptorCBShellfragToss(vector _org, vector _vel, vector _ang) +void Vehicles_drawCrosshair(string crosshair) { - entity sfrag; - - sfrag = spawn(); - setmodel(sfrag, "models/vehicles/clusterbomb_fragment.md3"); - setorigin(sfrag, _org); - - sfrag.move_movetype = MOVETYPE_BOUNCE; - sfrag.gravity = 0.15; - sfrag.solid = SOLID_CORPSE; + vector tmpSize = '0 0 0'; + vector tmpPos = '0 0 0'; - sfrag.draw = RaptorCBShellfragDraw; - - sfrag.move_origin = sfrag.origin = _org; - sfrag.move_velocity = _vel; - sfrag.move_avelocity = prandomvec() * vlen(sfrag.move_velocity); - sfrag.angles = self.move_angles = _ang; + // Crosshair + if(crosshair) + { + tmpSize = draw_getimagesize(crosshair) * autocvar_cl_vehicles_crosshair_size; + tmpPos.x = (vid_conwidth - tmpSize.x) / 2; + tmpPos.y = (vid_conheight - tmpSize.y) / 2; - sfrag.move_time = time; - sfrag.damageforcescale = 4; + vector wcross_color = '1 1 1'; + if(autocvar_cl_vehicles_crosshair_colorize) + wcross_color = crosshair_getcolor(NULL, STAT(VEHICLESTAT_HEALTH)); - sfrag.nextthink = time + 3; - sfrag.cnt = time + 2; - sfrag.alpha = 1; - sfrag.drawmask = MASK_NORMAL; + drawpic(tmpPos, crosshair, tmpSize, wcross_color, autocvar_crosshair_alpha, DRAWFLAG_NORMAL); + } }